From b0e7431e72e22a209f1494e2cb2597b7968f14c2 Mon Sep 17 00:00:00 2001 From: Book Pauk Date: Mon, 21 Oct 2019 22:03:00 +0700 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=BE=D0=BF=D1=80=D0=B0=D0=B2=D0=BA?= =?UTF-8?q?=D0=B8=20=D1=81=D0=B8=D0=BD=D1=85=D1=80=D0=BE=D0=BD=D0=B8=D0=B7?= =?UTF-8?q?=D0=B0=D1=86=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/components/Reader/Reader.vue | 8 +- .../Reader/ServerStorage/ServerStorage.vue | 98 +++++++++---------- 2 files changed, 54 insertions(+), 52 deletions(-) diff --git a/client/components/Reader/Reader.vue b/client/components/Reader/Reader.vue index 76b62b19..1ff1de07 100644 --- a/client/components/Reader/Reader.vue +++ b/client/components/Reader/Reader.vue @@ -542,10 +542,12 @@ class Reader extends Vue { if (value) { await utils.sleep(500); - while (!this.$refs.serverStorage.inited) await utils.sleep(100); - while (!bookManager.loaded) await utils.sleep(100); + while (!this.$refs.serverStorage.inited || + !bookManager.loaded || + this.$refs.serverStorage.savingRecent) + await utils.sleep(100); - this.$refs.serverStorage.saveRecent(value); + await this.$refs.serverStorage.saveRecent(value); } } } diff --git a/client/components/Reader/ServerStorage/ServerStorage.vue b/client/components/Reader/ServerStorage/ServerStorage.vue index 41db5989..040d2ca2 100644 --- a/client/components/Reader/ServerStorage/ServerStorage.vue +++ b/client/components/Reader/ServerStorage/ServerStorage.vue @@ -435,64 +435,64 @@ class ServerStorage extends Vue { if (!this.keyInited || !this.serverSyncEnabled || this.savingRecent) return; - const bm = bookManager; + this.savingRecent = true; + try { + const bm = bookManager; - let needSaveRecent = false; - let needSaveRecentPatch = false; - let needSaveRecentMod = false; + let needSaveRecent = false; + let needSaveRecentPatch = false; + let needSaveRecentMod = false; - //newRecentMod - let newRecentMod = {}; - if (itemKey && this.cachedRecentPatch.data[itemKey] && this.prevItemKey == itemKey) { - newRecentMod = _.cloneDeep(this.cachedRecentMod); - newRecentMod.rev++; + //newRecentMod + let newRecentMod = {}; + if (itemKey && this.cachedRecentPatch.data[itemKey] && this.prevItemKey == itemKey) { + newRecentMod = _.cloneDeep(this.cachedRecentMod); + newRecentMod.rev++; - newRecentMod.data.key = itemKey; - newRecentMod.data.mod = utils.getObjDiff(this.cachedRecentPatch.data[itemKey], bm.recent[itemKey]); - needSaveRecentMod = true; - } - this.prevItemKey = itemKey; + newRecentMod.data.key = itemKey; + newRecentMod.data.mod = utils.getObjDiff(this.cachedRecentPatch.data[itemKey], bm.recent[itemKey]); + needSaveRecentMod = true; + } + this.prevItemKey = itemKey; - //newRecentPatch - let newRecentPatch = {}; - if (itemKey && !needSaveRecentMod) { - newRecentPatch = _.cloneDeep(this.cachedRecentPatch); - newRecentPatch.rev++; - newRecentPatch.data[itemKey] = bm.recent[itemKey]; + //newRecentPatch + let newRecentPatch = {}; + if (itemKey && !needSaveRecentMod) { + newRecentPatch = _.cloneDeep(this.cachedRecentPatch); + newRecentPatch.rev++; + newRecentPatch.data[itemKey] = bm.recent[itemKey]; - let applyMod = this.cachedRecentMod.data; - if (applyMod && applyMod.key && newRecentPatch.data[applyMod.key]) - newRecentPatch.data[applyMod.key] = utils.applyObjDiff(newRecentPatch.data[applyMod.key], applyMod.mod); + let applyMod = this.cachedRecentMod.data; + if (applyMod && applyMod.key && newRecentPatch.data[applyMod.key]) + newRecentPatch.data[applyMod.key] = utils.applyObjDiff(newRecentPatch.data[applyMod.key], applyMod.mod); - newRecentMod = {rev: this.cachedRecentMod.rev + 1, data: {}}; - needSaveRecentPatch = true; - needSaveRecentMod = true; - } + newRecentMod = {rev: this.cachedRecentMod.rev + 1, data: {}}; + needSaveRecentPatch = true; + needSaveRecentMod = true; + } - //newRecent - let newRecent = {}; - if (!itemKey || (needSaveRecentPatch && Object.keys(newRecentPatch.data).length > 10)) { - newRecent = {rev: this.cachedRecent.rev + 1, data: bm.recent}; - newRecentPatch = {rev: this.cachedRecentPatch.rev + 1, data: {}}; - newRecentMod = {rev: this.cachedRecentMod.rev + 1, data: {}}; - needSaveRecent = true; - needSaveRecentPatch = true; - needSaveRecentMod = true; - } + //newRecent + let newRecent = {}; + if (!itemKey || (needSaveRecentPatch && Object.keys(newRecentPatch.data).length > 10)) { + newRecent = {rev: this.cachedRecent.rev + 1, data: bm.recent}; + newRecentPatch = {rev: this.cachedRecentPatch.rev + 1, data: {}}; + newRecentMod = {rev: this.cachedRecentMod.rev + 1, data: {}}; + needSaveRecent = true; + needSaveRecentPatch = true; + needSaveRecentMod = true; + } - //query - let query = {}; - if (needSaveRecent) { - query = {recent: newRecent, recentPatch: newRecentPatch, recentMod: newRecentMod}; - } else if (needSaveRecentPatch) { - query = {recentPatch: newRecentPatch, recentMod: newRecentMod}; - } else { - query = {recentMod: newRecentMod}; - } + //query + let query = {}; + if (needSaveRecent) { + query = {recent: newRecent, recentPatch: newRecentPatch, recentMod: newRecentMod}; + } else if (needSaveRecentPatch) { + query = {recentPatch: newRecentPatch, recentMod: newRecentMod}; + } else { + query = {recentMod: newRecentMod}; + } - //сохранение - this.savingRecent = true; - try { + //сохранение let result = {state: ''}; try {