From d273de3506a44bf391de60b9d49d3393acfa85ae Mon Sep 17 00:00:00 2001 From: timmy Date: Tue, 25 Aug 2026 13:35:51 +0000 Subject: [PATCH] fix: preserve completed mobile onboarding during draft sync --- frontend/dashboard.js | 6 +++--- tests/test_photo_draft_inbox.py | 1 + 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/frontend/dashboard.js b/frontend/dashboard.js index 6ea3679..a636e48 100644 --- a/frontend/dashboard.js +++ b/frontend/dashboard.js @@ -3413,11 +3413,11 @@ } async function refreshPhotoDraftInbox() { - try { await photoDraftInbox.refresh(draftInbox.list()); refreshMyWorkView({ reconcileSession:false }); } + try { await photoDraftInbox.refresh(draftInbox.list()); refreshMyWorkView({ reconcileSession:false, refreshFirstTask:false }); } catch (_error) { /* Local photo inventory must not break My Work. */ } } - function refreshMyWorkView({ reconcileSession = true } = {}) { + function refreshMyWorkView({ reconcileSession = true, refreshFirstTask = true } = {}) { lastDrafts = listDrafts(); const actionableMyWork = filedHistoryTabs.prepare(lastMyWork); const partitioned = laterWork.partition(actionableMyWork, { @@ -3471,7 +3471,7 @@ }); mobileStartDay.render(); mobileTaskDock.updateQueues(counts); - mobileFirstTask.refresh(); + if (refreshFirstTask) mobileFirstTask.refresh(); mobileTaskDock.updateWork(mobileWorkEntry.mode()); mobileTaskDock.updateAttention(countMyWork(activeMyWork).attention); const activeQueue = qs('[data-work-filter="' + selectedWorkFilter + '"]'); diff --git a/tests/test_photo_draft_inbox.py b/tests/test_photo_draft_inbox.py index d4a6984..599f1e2 100644 --- a/tests/test_photo_draft_inbox.py +++ b/tests/test_photo_draft_inbox.py @@ -102,6 +102,7 @@ def test_mobile_my_work_discovers_reopens_and_discards_photo_only_reply_drafts() assert "const photoDraftInbox = createPhotoDraftInbox({" in dashboard assert "draftInbox.list().concat(photoDraftInbox.list(), unfiled)" in dashboard assert "await photoDraftInbox.refresh(draftInbox.list())" in dashboard + assert "refreshMyWorkView({ reconcileSession:false, refreshFirstTask:false })" in dashboard assert "void refreshPhotoDraftInbox();" in dashboard assert "onChange:() => { void refreshPhotoDraftInbox(); }" in dashboard assert "await searchReplyDraftStore.save(target, attachments);\n void refreshPhotoDraftInbox();" in dashboard