fix(compose): restore Bcc recipients when resuming a draft

saveOrDeleteDraft persists the Bcc line, but the init-block restore
never copied it back, so reopening a draft silently dropped its Bcc
recipients (and re-saving then lost them for good).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-01 16:20:07 -05:00
co-authored by Claude Fable 5
parent a5644f4e02
commit f99c2df85f
2 changed files with 22 additions and 0 deletions
@@ -98,6 +98,7 @@ class ComposeViewModel @Inject constructor(
it.copy(
to = draft.to,
cc = draft.cc,
bcc = draft.bcc,
subject = draft.subject,
body = draft.body,
bodyHtml = draft.bodyHtml,
@@ -153,6 +153,27 @@ class ComposeViewModelTest {
assertEquals("<p>Draft <b>body</b></p>", vm.state.value.bodyHtml)
}
@Test
fun `resuming a draft restores the bcc recipients`() = runTest(testDispatcher) {
val mailRepository = mockk<MailRepository>(relaxed = true)
coEvery { mailRepository.getDraft("d1") } returns Draft(
id = "d1",
accountId = "imap:a",
to = "x@example.org",
cc = "",
bcc = "hidden@example.org",
subject = "Hi",
body = "Draft body",
updatedAt = 0L,
)
val vm = viewModel(
savedState = SavedStateHandle(mapOf(Routes.COMPOSE_ARG_DRAFT to "d1")),
mailRepository = mailRepository,
)
assertEquals("hidden@example.org", vm.state.value.bcc)
}
@Test
fun `send carries the HTML body through to the outgoing message`() = runTest(testDispatcher) {
val mailRepository = mockk<MailRepository>(relaxed = true)