fix: retain draft revision during discovery refresh

This commit is contained in:
Neil
2026-09-05 15:09:30 -07:00
parent 9cbbbc2b6c
commit 3ead0bc39e
2 changed files with 11 additions and 1 deletions
@@ -150,3 +150,13 @@ it('preserves the open recovered draft when another writer deletes it', async ()
await loadCreationDrafts(true)
expect(useCreationDraftSession.getState().entries).toEqual({})
})
it('retains discovered buffer identity and revision when the database record changes', async () => {
database.listDrafts.mockResolvedValue([{ ...draft('original'), revision: 1 }])
await loadCreationDrafts()
const original = useCreationDraftSession.getState().entries['create-1']
database.listDrafts.mockResolvedValue([{ ...draft('external update'), revision: 2 }])
await loadCreationDrafts(true)
expect(useCreationDraftSession.getState().entries['create-1']).toBe(original)
expect(original.storedRevision).toBe(1)
})
@@ -63,7 +63,7 @@ export function loadCreationDrafts(refresh = false): Promise<void> {
}
}
for (const draft of drafts) {
if (!entries[draft.id] || isUntouched(draft.id)) {
if (!entries[draft.id]) {
entries[draft.id] = fromStored(draft)
}
}