Skip to content

Commit 7138354

Browse files
committed
fix: collection items count with cache (resolve #88)
1 parent 0c001e1 commit 7138354

File tree

3 files changed

+50
-49
lines changed

3 files changed

+50
-49
lines changed

package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "anchr-multi-webservice",
3-
"version": "3.5.1",
3+
"version": "3.5.2",
44
"description": "⚓️ Anchr provides you with a toolbox for tiny tasks on the internet, especially bookmark collections",
55
"private": true,
66
"scripts": {
@@ -27,10 +27,10 @@
2727
"memory-cache": "^0.2.0",
2828
"method-override": "^3.0.0",
2929
"mime-types": "^3.0.1",
30-
"mongoose": "^8.18.1",
30+
"mongoose": "^8.19.3",
3131
"morgan": "^1.10.1",
3232
"node-cron": "^4.2.1",
33-
"nodemailer": "^7.0.6",
33+
"nodemailer": "^7.0.10",
3434
"passport": "^0.7.0",
3535
"passport-facebook": "^3.0.0",
3636
"passport-google-oauth": "^2.0.0",

public/app/scripts/controllers/collection.js

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ angular.module('anchrClientApp')
44
.controller('CollectionCtrl', ['$scope', '$rootScope', 'Collection', 'Remote', 'Snackbar', '$window', '$timeout', function ($scope, $rootScope, Collection, Remote, Snackbar, $window, $timeout) {
55

66
var collections = [];
7-
var collectionsPagesCache = [];
7+
var collectionsPagesCache = []; // [links, numPages, numItems]
88
var fetchTitleDebounce = null;
99
var searchDebounce = null;
1010

@@ -19,6 +19,7 @@ angular.module('anchrClientApp')
1919
$scope.data.search = '';
2020
}
2121

22+
var collection = collections[findCollection(collections, id)]
2223
var isNonFiltered = $scope.data.search === '';
2324
var hasCache = collectionsPagesCache[id] && collectionsPagesCache[id][$scope.data.currentPage - 1] && collectionsPagesCache[id][$scope.data.currentPage - 1][0].length;
2425

@@ -30,17 +31,17 @@ angular.module('anchrClientApp')
3031
if (isNonFiltered && hasCache) {
3132
var cacheEntry = collectionsPagesCache[id][$scope.data.currentPage - 1];
3233
$scope.data.numPages = cacheEntry[1];
33-
collections[findCollection(collections, id)].links = angular.copy(cacheEntry[0]);
34+
collection.links = angular.copy(cacheEntry[0]);
35+
collection.size = cacheEntry[2];
3436
setActive()
3537
} else {
3638
Collection.links.query({ collId: id, page: $scope.data.currentPage, pageSize: 25, q: $scope.data.search || undefined }, function (result, headers) {
3739
$scope.data.numPages = parseNumPages(headers('link'));
38-
var c = collections[findCollection(collections, id)]
39-
c.links = result;
40-
c.size = parseNumItems(headers('link'));
40+
collection.links = result;
41+
collection.size = parseNumItems(headers('link'));
4142
if (isNonFiltered) {
4243
if (!collectionsPagesCache[id]) collectionsPagesCache[id] = [];
43-
collectionsPagesCache[id][$scope.data.currentPage - 1] = [angular.copy(result), $scope.data.numPages];
44+
collectionsPagesCache[id][$scope.data.currentPage - 1] = [angular.copy(result), $scope.data.numPages, collection.size];
4445
}
4546
setActive();
4647
}, function (err) {
@@ -244,7 +245,7 @@ angular.module('anchrClientApp')
244245

245246
function parseNumItems(linkHeader) {
246247
var match = /[\?&]pageSize=(\d+)&page=\d+>; rel="all"/gi.exec(linkHeader)
247-
if (match.length !== 2) return 1
248-
return parseInt(match[1]) || 1
248+
if (match.length !== 2) return 0
249+
return parseInt(match[1]) || 0
249250
}
250251
}]);

yarn.lock

Lines changed: 38 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -208,12 +208,12 @@ __metadata:
208208
languageName: node
209209
linkType: hard
210210

211-
"@mongodb-js/saslprep@npm:^1.1.9":
212-
version: 1.1.9
213-
resolution: "@mongodb-js/saslprep@npm:1.1.9"
211+
"@mongodb-js/saslprep@npm:^1.3.0":
212+
version: 1.3.2
213+
resolution: "@mongodb-js/saslprep@npm:1.3.2"
214214
dependencies:
215215
sparse-bitfield: "npm:^3.0.3"
216-
checksum: 10/6a0d5e9068635fff59815de387d71be0e3b9d683f1d299876b2760ac18bbf0a1d4b26eff6b1ab89ff8802c20ffb15c047ba675b2cc306a51077a013286c2694a
216+
checksum: 10/c26e35ed9927e4e2fe33c19bdb410de7f7da3057040291e85a33846bc5c907c6a132cf438f8589b522f374ed5184459f8de1278ad5443941d08d75d70e5fe33f
217217
languageName: node
218218
linkType: hard
219219

@@ -455,10 +455,10 @@ __metadata:
455455
memory-cache: "npm:^0.2.0"
456456
method-override: "npm:^3.0.0"
457457
mime-types: "npm:^3.0.1"
458-
mongoose: "npm:^8.18.1"
458+
mongoose: "npm:^8.19.3"
459459
morgan: "npm:^1.10.1"
460460
node-cron: "npm:^4.2.1"
461-
nodemailer: "npm:^7.0.6"
461+
nodemailer: "npm:^7.0.10"
462462
passport: "npm:^0.7.0"
463463
passport-facebook: "npm:^3.0.0"
464464
passport-google-oauth: "npm:^2.0.0"
@@ -4615,30 +4615,30 @@ __metadata:
46154615
languageName: node
46164616
linkType: hard
46174617

4618-
"mongodb-connection-string-url@npm:^3.0.0":
4619-
version: 3.0.0
4620-
resolution: "mongodb-connection-string-url@npm:3.0.0"
4618+
"mongodb-connection-string-url@npm:^3.0.2":
4619+
version: 3.0.2
4620+
resolution: "mongodb-connection-string-url@npm:3.0.2"
46214621
dependencies:
46224622
"@types/whatwg-url": "npm:^11.0.2"
4623-
whatwg-url: "npm:^13.0.0"
4624-
checksum: 10/85a8b51c0c2814bdf3a13709e8c2bacbaefae73f9c38fb20709cb64138948682c17d12eb88168085519535dbb6faede6125eb8061aa1d74e95a0d8883241938d
4623+
whatwg-url: "npm:^14.1.0 || ^13.0.0"
4624+
checksum: 10/99ac939a67cc963b90cfe70a8e45250a8386c531be7d22ffa5d1f3e5dd2406b149fb823b91ac161e4a4a29dfac754b49bca8f6dd786cfc66ae0ca80db5f5f23d
46254625
languageName: node
46264626
linkType: hard
46274627

4628-
"mongodb@npm:~6.18.0":
4629-
version: 6.18.0
4630-
resolution: "mongodb@npm:6.18.0"
4628+
"mongodb@npm:~6.20.0":
4629+
version: 6.20.0
4630+
resolution: "mongodb@npm:6.20.0"
46314631
dependencies:
4632-
"@mongodb-js/saslprep": "npm:^1.1.9"
4632+
"@mongodb-js/saslprep": "npm:^1.3.0"
46334633
bson: "npm:^6.10.4"
4634-
mongodb-connection-string-url: "npm:^3.0.0"
4634+
mongodb-connection-string-url: "npm:^3.0.2"
46354635
peerDependencies:
46364636
"@aws-sdk/credential-providers": ^3.188.0
46374637
"@mongodb-js/zstd": ^1.1.0 || ^2.0.0
46384638
gcp-metadata: ^5.2.0
46394639
kerberos: ^2.0.1
46404640
mongodb-client-encryption: ">=6.0.0 <7"
4641-
snappy: ^7.2.2
4641+
snappy: ^7.3.2
46424642
socks: ^2.7.1
46434643
peerDependenciesMeta:
46444644
"@aws-sdk/credential-providers":
@@ -4655,22 +4655,22 @@ __metadata:
46554655
optional: true
46564656
socks:
46574657
optional: true
4658-
checksum: 10/559bfe87bb9a4945d81380c31cc89730c4a4c806a2e6ed06086dcacabd1caee32f711427abf93627b649f189e9464b67318ba65baccc07670bb30bac74dab933
4658+
checksum: 10/2718cdd4433bc3847f01a2ffae3a7e7ea8499035be4fccaf76278cbe3f915f2dd6c53135be0e3cc2cdd8e27a0b957da49e337d9b96b53e6287ec8971cea96b4b
46594659
languageName: node
46604660
linkType: hard
46614661

4662-
"mongoose@npm:^8.18.1":
4663-
version: 8.18.1
4664-
resolution: "mongoose@npm:8.18.1"
4662+
"mongoose@npm:^8.19.3":
4663+
version: 8.19.3
4664+
resolution: "mongoose@npm:8.19.3"
46654665
dependencies:
46664666
bson: "npm:^6.10.4"
46674667
kareem: "npm:2.6.3"
4668-
mongodb: "npm:~6.18.0"
4668+
mongodb: "npm:~6.20.0"
46694669
mpath: "npm:0.9.0"
46704670
mquery: "npm:5.0.0"
46714671
ms: "npm:2.1.3"
46724672
sift: "npm:17.1.3"
4673-
checksum: 10/86a8240dab09cd2c873dd39cc7ef3a2c55bf956a3b1cded4dc6d0686461b108546a977193ae640c01c9da3658f6dacaa1c235f51998f4357182715cb82198e10
4673+
checksum: 10/cfdb3c99b40681267420db873e065f0a7b360cbf8f14cdc53c965d8d49c1e84e3e1e8149bdfbee345fa4dec9368aae880db32276d5f61bef92332b75b41581ec
46744674
languageName: node
46754675
linkType: hard
46764676

@@ -4884,10 +4884,10 @@ __metadata:
48844884
languageName: node
48854885
linkType: hard
48864886

4887-
"nodemailer@npm:^7.0.6":
4888-
version: 7.0.6
4889-
resolution: "nodemailer@npm:7.0.6"
4890-
checksum: 10/c61563fcc8ea25fa5eec8ec3107ec9d212abc54c29cc9f23fe6cd65f355f712daae4832358a776cad63f5f909c96ab42ce0b61d8a28887e18635025747c6a5d7
4887+
"nodemailer@npm:^7.0.10":
4888+
version: 7.0.10
4889+
resolution: "nodemailer@npm:7.0.10"
4890+
checksum: 10/b9b8794ffc6c0d84440a9dd422664908e9c2003a15cb0e6bdd240a3625121de3978323c2ba4af78080fd735ef514d6caed376bd5f5dd6c17cf0d2c399d0dc354
48914891
languageName: node
48924892
linkType: hard
48934893

@@ -5702,7 +5702,7 @@ __metadata:
57025702
languageName: node
57035703
linkType: hard
57045704

5705-
"punycode@npm:^2.3.0":
5705+
"punycode@npm:^2.3.1":
57065706
version: 2.3.1
57075707
resolution: "punycode@npm:2.3.1"
57085708
checksum: 10/febdc4362bead22f9e2608ff0171713230b57aff9dddc1c273aa2a651fbd366f94b7d6a71d78342a7c0819906750351ca7f2edd26ea41b626d87d6a13d1bd059
@@ -6861,12 +6861,12 @@ __metadata:
68616861
languageName: node
68626862
linkType: hard
68636863

6864-
"tr46@npm:^4.1.1":
6865-
version: 4.1.1
6866-
resolution: "tr46@npm:4.1.1"
6864+
"tr46@npm:^5.1.0":
6865+
version: 5.1.1
6866+
resolution: "tr46@npm:5.1.1"
68676867
dependencies:
6868-
punycode: "npm:^2.3.0"
6869-
checksum: 10/ca811409c46de84618e4e7f90469184b50d16618b2f027a5ebeccb0d83ee7f51eca229e71f5b15cdec008ca247ad2ccabfdd3daf861604fcc7e341d0c35c30ca
6868+
punycode: "npm:^2.3.1"
6869+
checksum: 10/833a0e1044574da5790148fd17866d4ddaea89e022de50279967bcd6b28b4ce0d30d59eb3acf9702b60918975b3bad481400337e3a2e6326cffa5c77b874753d
68706870
languageName: node
68716871
linkType: hard
68726872

@@ -7229,13 +7229,13 @@ __metadata:
72297229
languageName: node
72307230
linkType: hard
72317231

7232-
"whatwg-url@npm:^13.0.0":
7233-
version: 13.0.0
7234-
resolution: "whatwg-url@npm:13.0.0"
7232+
"whatwg-url@npm:^14.1.0 || ^13.0.0":
7233+
version: 14.2.0
7234+
resolution: "whatwg-url@npm:14.2.0"
72357235
dependencies:
7236-
tr46: "npm:^4.1.1"
7236+
tr46: "npm:^5.1.0"
72377237
webidl-conversions: "npm:^7.0.0"
7238-
checksum: 10/1675f5b786bbc2809de8bde5e0c99790cd50c36227942c851b1c2445cc1860a26fd15a4d6eca2cd996882bfde93b66fbc88864cd9b84f2c725427afd81e0f024
7238+
checksum: 10/f0a95b0601c64f417c471536a2d828b4c16fe37c13662483a32f02f183ed0f441616609b0663fb791e524e8cd56d9a86dd7366b1fc5356048ccb09b576495e7c
72397239
languageName: node
72407240
linkType: hard
72417241

0 commit comments

Comments
 (0)