Небольшие поправки

This commit is contained in:
Book Pauk
2019-09-20 22:44:36 +07:00
parent 5198f8aa60
commit 26747b7013

View File

@@ -77,6 +77,7 @@ class ServerStorage extends Vue {
if (eventName == 'recent-changed') { if (eventName == 'recent-changed') {
if (itemKey) { if (itemKey) {
if (!this.recentDeltaInited) { if (!this.recentDeltaInited) {
await this.loadRecent();
this.warning('Функции сохранения на сервер пока недоступны'); this.warning('Функции сохранения на сервер пока недоступны');
return; return;
} }
@@ -362,74 +363,79 @@ class ServerStorage extends Vue {
} }
async loadRecent(skipRevCheck = false, doNotifySuccess = true) { async loadRecent(skipRevCheck = false, doNotifySuccess = true) {
if (!this.keyInited || !this.serverSyncEnabled) if (!this.keyInited || !this.serverSyncEnabled || this.loadingRecent)
return; return;
const oldRecentRev = bookManager.recentRev; this.loadingRecent = true;
const oldRecentDeltaRev = bookManager.recentDeltaRev; try {
//проверим ревизию на сервере const oldRecentRev = bookManager.recentRev;
let revs = null; const oldRecentDeltaRev = bookManager.recentDeltaRev;
if (!skipRevCheck) { //проверим ревизию на сервере
try { let revs = null;
revs = await this.storageCheck({recent: {}, recentDelta: {}}); if (!skipRevCheck) {
if (revs.state == 'success' && revs.items.recent.rev == oldRecentRev && try {
revs.items.recentDelta.rev == oldRecentDeltaRev) { revs = await this.storageCheck({recent: {}, recentDelta: {}});
if (!this.recentDeltaInited) if (revs.state == 'success' && revs.items.recent.rev == oldRecentRev &&
await this.initRecentDelta(); revs.items.recentDelta.rev == oldRecentDeltaRev) {
if (!this.recentDeltaInited)
await this.initRecentDelta();
return;
}
} catch(e) {
this.error(`Ошибка соединения с сервером: ${e.message}`);
return; return;
} }
}
let recent = null;
try {
recent = await this.storageGet({recent: {}, recentDelta: {}});
} catch(e) { } catch(e) {
this.error(`Ошибка соединения с сервером: ${e.message}`); this.error(`Ошибка соединения с сервером: ${e.message}`);
return; return;
} }
}
let recent = null; if (recent.state == 'success') {
try { let recentDelta = recent.items.recentDelta;
recent = await this.storageGet({recent: {}, recentDelta: {}}); recent = recent.items.recent;
} catch(e) {
this.error(`Ошибка соединения с сервером: ${e.message}`);
return;
}
if (recent.state == 'success') { if (recent.rev == 0)
let recentDelta = recent.items.recentDelta; recent.data = {};
recent = recent.items.recent;
if (recent.rev == 0) let newRecent = {};
recent.data = {}; if (recentDelta && recentDelta.data) {
if (recentDelta.data.diff) {
let newRecent = {}; newRecent = recent.data;
if (recentDelta && recentDelta.data) { const key = recentDelta.data.diff.key;
if (recentDelta.data.diff) { if (newRecent[key])
newRecent = recent.data; newRecent[key] = utils.applyObjDiff(newRecent[key], recentDelta.data.diff);
const key = recentDelta.data.diff.key; } else {
if (newRecent[key]) newRecent = Object.assign(recent.data, recentDelta.data);
newRecent[key] = utils.applyObjDiff(newRecent[key], recentDelta.data.diff); }
this.recentDelta = recentDelta.data;
} else { } else {
newRecent = Object.assign(recent.data, recentDelta.data); newRecent = recent.data;
this.recentDelta = {};
} }
this.recentDelta = recentDelta.data;
this.recentDeltaInited = true;
if (!bookManager.loaded) {
this.warning('Ожидание загрузки списка книг перед синхронизацией');
while (!bookManager.loaded) await utils.sleep(100);
}
await bookManager.setRecent(newRecent);
await bookManager.setRecentRev(recent.rev);
await bookManager.setRecentDeltaRev(recentDelta.rev);
} else { } else {
newRecent = recent.data; this.warning(`Неверный ответ сервера: ${recent.state}`);
this.recentDelta = {};
} }
this.recentDeltaInited = true; if (doNotifySuccess)
this.debouncedNotifySuccess();
if (!bookManager.loaded) { } finally {
this.warning('Ожидание загрузки списка книг перед синхронизацией'); this.loadingRecent = false;
while (!bookManager.loaded) await utils.sleep(100);
}
await bookManager.setRecent(newRecent);
await bookManager.setRecentRev(recent.rev);
await bookManager.setRecentDeltaRev(recentDelta.rev);
} else {
this.warning(`Неверный ответ сервера: ${recent.state}`);
} }
if (doNotifySuccess)
this.debouncedNotifySuccess();
} }
async saveRecent(itemKey, recurse) { async saveRecent(itemKey, recurse) {