diff --git a/packages/core/src/api/sync/index.ts b/packages/core/src/api/sync/index.ts index ce034129c..02686af67 100644 --- a/packages/core/src/api/sync/index.ts +++ b/packages/core/src/api/sync/index.ts @@ -242,6 +242,19 @@ class Sync { this.connection?.off("SendItems"); this.connection?.off("SendVaultKey"); + + await this.db + .sql() + .updateTable("notes") + .where("id", "in", (eb) => + eb + .selectFrom("content") + .select("noteId as id") + .where("conflicted", "is not", null) + .$castTo() + ) + .set({ conflicted: true }) + .execute(); } async send(deviceId: string, isForceSync?: boolean) { @@ -334,10 +347,8 @@ class Sync { const localItems = await collection.records(chunk.items.map((i) => i.id)); let items: (MaybeDeletedItem | undefined)[] = []; if (itemType === "content") { - items = await Promise.all( - deserialized.map((item) => - this.merger.mergeContent(item, localItems[item.id]) - ) + items = deserialized.map((item) => + this.merger.mergeContent(item, localItems[item.id]) ); } else { items = diff --git a/packages/core/src/api/sync/merger.ts b/packages/core/src/api/sync/merger.ts index bd4211a59..f7ad19e10 100644 --- a/packages/core/src/api/sync/merger.ts +++ b/packages/core/src/api/sync/merger.ts @@ -46,7 +46,7 @@ class Merger { } } - async mergeContent( + mergeContent( remoteItem: MaybeDeletedItem, localItem: MaybeDeletedItem | undefined ) { @@ -75,10 +75,7 @@ class Merger { else if (!conflicted) return; // otherwise we trigger the conflicts - await this.db.notes.add({ - id: localItem.noteId, - conflicted: true - }); + this.logger.info("conflict marked", { id: localItem.noteId }); localItem.conflicted = remoteItem; return localItem; }