mirror of
https://github.com/streetwriters/notesnook.git
synced 2025-12-21 05:59:35 +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) => {
|
||||
let serverLastSynced = 0;
|
||||
let _synced = false;
|
||||
|
||||
let items = [];
|
||||
this.connection.stream("FetchItems", lastSynced).subscribe({
|
||||
next: async (/** @type {SyncTransferItem} */ syncStatus) => {
|
||||
next: (/** @type {SyncTransferItem} */ syncStatus) => {
|
||||
const { item, synced, lastSynced } = syncStatus;
|
||||
serverLastSynced = lastSynced;
|
||||
_synced = synced;
|
||||
if (synced || !item) return;
|
||||
|
||||
await this.onSyncItem(syncStatus);
|
||||
items.push(syncStatus);
|
||||
},
|
||||
complete: () => {
|
||||
resolve({ synced: _synced, lastSynced: serverLastSynced });
|
||||
resolve({ synced: _synced, lastSynced: serverLastSynced, items });
|
||||
},
|
||||
error: reject,
|
||||
});
|
||||
});
|
||||
|
||||
for (let item of serverResponse.items) {
|
||||
await this.onSyncItem(item);
|
||||
}
|
||||
|
||||
if (await this.conflicts.check()) {
|
||||
throw new Error(
|
||||
"Merge conflicts detected. Please resolve all conflicts to continue syncing."
|
||||
);
|
||||
}
|
||||
|
||||
return serverResponse;
|
||||
return { lastSynced: serverResponse.lastSynced };
|
||||
}
|
||||
|
||||
async collect(lastSynced) {
|
||||
@@ -316,10 +319,12 @@ class Sync {
|
||||
*/
|
||||
async onSyncItem(syncStatus) {
|
||||
const { current, item: itemJSON, itemType, total } = syncStatus;
|
||||
sendSyncProgressEvent(this.db.eventManager, "download", total, current);
|
||||
const item = JSON.parse(itemJSON);
|
||||
|
||||
await this.merger.mergeItem(itemType, item);
|
||||
sendSyncProgressEvent(this.db.eventManager, "download", total, current);
|
||||
await this.merger.mergeItem(itemType, item).then(() => {
|
||||
console.log("Merge complete", item.id);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user