Синхронизация recent, пока не оптимизировано

This commit is contained in:
Book Pauk
2019-03-22 14:14:47 +07:00
parent 79ced4eca4
commit 737ae75c28
3 changed files with 37 additions and 19 deletions

View File

@@ -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) {
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();

View File

@@ -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++;

View File

@@ -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)) {
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) {