mirror of
https://github.com/streetwriters/notesnook.git
synced 2025-12-22 14:39:34 +01:00
fix: process sync items after fetch completes
This commit is contained in:
@@ -151,30 +151,33 @@ class Sync {
|
|||||||
const serverResponse = await new Promise((resolve, reject) => {
|
const serverResponse = await new Promise((resolve, reject) => {
|
||||||
let serverLastSynced = 0;
|
let serverLastSynced = 0;
|
||||||
let _synced = false;
|
let _synced = false;
|
||||||
|
let items = [];
|
||||||
this.connection.stream("FetchItems", lastSynced).subscribe({
|
this.connection.stream("FetchItems", lastSynced).subscribe({
|
||||||
next: async (/** @type {SyncTransferItem} */ syncStatus) => {
|
next: (/** @type {SyncTransferItem} */ syncStatus) => {
|
||||||
const { item, synced, lastSynced } = syncStatus;
|
const { item, synced, lastSynced } = syncStatus;
|
||||||
serverLastSynced = lastSynced;
|
serverLastSynced = lastSynced;
|
||||||
_synced = synced;
|
_synced = synced;
|
||||||
if (synced || !item) return;
|
if (synced || !item) return;
|
||||||
|
items.push(syncStatus);
|
||||||
await this.onSyncItem(syncStatus);
|
|
||||||
},
|
},
|
||||||
complete: () => {
|
complete: () => {
|
||||||
resolve({ synced: _synced, lastSynced: serverLastSynced });
|
resolve({ synced: _synced, lastSynced: serverLastSynced, items });
|
||||||
},
|
},
|
||||||
error: reject,
|
error: reject,
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
for (let item of serverResponse.items) {
|
||||||
|
await this.onSyncItem(item);
|
||||||
|
}
|
||||||
|
|
||||||
if (await this.conflicts.check()) {
|
if (await this.conflicts.check()) {
|
||||||
throw new Error(
|
throw new Error(
|
||||||
"Merge conflicts detected. Please resolve all conflicts to continue syncing."
|
"Merge conflicts detected. Please resolve all conflicts to continue syncing."
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
return serverResponse;
|
return { lastSynced: serverResponse.lastSynced };
|
||||||
}
|
}
|
||||||
|
|
||||||
async collect(lastSynced) {
|
async collect(lastSynced) {
|
||||||
@@ -316,10 +319,12 @@ class Sync {
|
|||||||
*/
|
*/
|
||||||
async onSyncItem(syncStatus) {
|
async onSyncItem(syncStatus) {
|
||||||
const { current, item: itemJSON, itemType, total } = syncStatus;
|
const { current, item: itemJSON, itemType, total } = syncStatus;
|
||||||
|
sendSyncProgressEvent(this.db.eventManager, "download", total, current);
|
||||||
const item = JSON.parse(itemJSON);
|
const item = JSON.parse(itemJSON);
|
||||||
|
|
||||||
await this.merger.mergeItem(itemType, item);
|
await this.merger.mergeItem(itemType, item).then(() => {
|
||||||
sendSyncProgressEvent(this.db.eventManager, "download", total, current);
|
console.log("Merge complete", item.id);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user