diff --git a/client/components/Reader/Reader.vue b/client/components/Reader/Reader.vue index ca4c3a7b..d1952fe8 100644 --- a/client/components/Reader/Reader.vue +++ b/client/components/Reader/Reader.vue @@ -294,10 +294,13 @@ class Reader extends Vue { this.debouncedUpdateRoute(); } - bookManagerEvent(eventName) { + async bookManagerEvent(eventName) { const serverStorage = this.$refs.serverStorage; if (eventName == 'load-meta-finish') { serverStorage.init(); + const result = await bookManager.cleanRecentBooks(); + if (result) + this.debouncedSaveRecent(); } if (eventName == 'recent-changed') { @@ -305,8 +308,12 @@ class Reader extends Vue { const oldBook = this.mostRecentBookReactive; const newBook = bookManager.mostRecentBook(); - if (oldBook && newBook && oldBook.key != newBook.key) { - await this.loadBook(newBook); + if (oldBook && newBook) { + if (oldBook.key != newBook.key) { + await this.loadBook(newBook); + } else if (oldBook.bookPos != newBook.bookPos) { + this.bookPosChanged({bookPos: newBook.bookPos}); + } } this.debouncedSaveRecent(); diff --git a/client/components/Reader/ServerStorage/ServerStorage.vue b/client/components/Reader/ServerStorage/ServerStorage.vue index 7f5ebdc0..7567500c 100644 --- a/client/components/Reader/ServerStorage/ServerStorage.vue +++ b/client/components/Reader/ServerStorage/ServerStorage.vue @@ -403,8 +403,9 @@ class ServerStorage extends Vue { if (result.state == 'reject') { await this.loadRecent(true); - const newRecent = utils.applyObjDiff(bm.recent, diff); - await bm.setRecent(newRecent); + //похоже это лишнее + /*const newRecent = utils.applyObjDiff(bm.recent, diff); + await bm.setRecent(newRecent);*/ } tries++; diff --git a/client/components/Reader/share/bookManager.js b/client/components/Reader/share/bookManager.js index c1b67438..0ae1ad50 100644 --- a/client/components/Reader/share/bookManager.js +++ b/client/components/Reader/share/bookManager.js @@ -99,7 +99,9 @@ class BookManager { } }*/ await this.cleanBooks(); - await this.cleanRecentBooks(); + + //очистка позже + //await this.cleanRecentBooks(); this.booksCached = {}; for (const key in this.books) { @@ -316,12 +318,17 @@ class BookManager { const sorted = this.getSortedRecent(); + let isDel = false; for (let i = 1000; i < sorted.length; i++) { await bmRecentStore.removeItem(sorted[i].key); delete this.recent[sorted[i].key]; + isDel = true; } this.sortedRecentCached = null; + await bmCacheStore.setItem('recent', this.recent); + + return isDel; } mostRecentBook() { @@ -356,16 +363,19 @@ class BookManager { return result; } - async setRecent(newRecent) { - //this.recent = newRecent; + async setRecent(value) { const mergedRecent = _.cloneDeep(this.recent); - Object.assign(mergedRecent, newRecent); + Object.assign(mergedRecent, value); + const newRecent = {}; for (const rec of Object.values(mergedRecent)) { - await bmRecentStore.setItem(rec.key, rec); + if (rec.key) { + await bmRecentStore.setItem(rec.key, rec); + newRecent[rec.key] = rec; + } } - this.recent = mergedRecent; + this.recent = newRecent; await bmCacheStore.setItem('recent', this.recent); this.recentLast = null; @@ -375,18 +385,18 @@ class BookManager { this.emit('recent-changed'); } - async setRecentRev(newRecentRev) { - await bmRecentStore.setItem('recent-rev', newRecentRev); - this.recentRev = newRecentRev; + async setRecentRev(value) { + await bmRecentStore.setItem('recent-rev', value); + this.recentRev = value; } - async setRecentLast(newRecentLast) { - this.recentLast = newRecentLast; + async setRecentLast(value) { + this.recentLast = value; } - async setRecentLastRev(newRecentLastRev) { - bmRecentStore.setItem('recent-last-rev', newRecentLastRev); - this.recentLastRev = newRecentLastRev; + async setRecentLastRev(value) { + bmRecentStore.setItem('recent-last-rev', value); + this.recentLastRev = value; } addEventListener(listener) {