From b9b90165bf8110b6bd5a9caea136301bd624fbb1 Mon Sep 17 00:00:00 2001 From: David Perez Date: Mon, 10 Mar 2025 15:43:49 -0500 Subject: [PATCH] PM-10725: Always show share sheet after creating send regardless of how it was made (#4841) --- .../feature/send/addsend/AddSendViewModel.kt | 20 +++----- .../send/addsend/AddSendViewModelTest.kt | 46 ++++--------------- 2 files changed, 14 insertions(+), 52 deletions(-) diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/tools/feature/send/addsend/AddSendViewModel.kt b/app/src/main/java/com/x8bit/bitwarden/ui/tools/feature/send/addsend/AddSendViewModel.kt index 4ce4639586..19711b4cfd 100644 --- a/app/src/main/java/com/x8bit/bitwarden/ui/tools/feature/send/addsend/AddSendViewModel.kt +++ b/app/src/main/java/com/x8bit/bitwarden/ui/tools/feature/send/addsend/AddSendViewModel.kt @@ -199,20 +199,12 @@ class AddSendViewModel @Inject constructor( is CreateSendResult.Success -> { mutableStateFlow.update { it.copy(dialogState = null) } - if (state.isShared) { - navigateBack() - clipboardManager.setText( - result.sendView.toSendUrl(state.baseWebSendUrl), - toastDescriptorOverride = R.string.send_link.asText(), - ) - } else { - navigateBack() - sendEvent( - AddSendEvent.ShowShareSheet( - message = result.sendView.toSendUrl(state.baseWebSendUrl), - ), - ) - } + navigateBack() + sendEvent( + AddSendEvent.ShowShareSheet( + message = result.sendView.toSendUrl(state.baseWebSendUrl), + ), + ) } } } diff --git a/app/src/test/java/com/x8bit/bitwarden/ui/tools/feature/send/addsend/AddSendViewModelTest.kt b/app/src/test/java/com/x8bit/bitwarden/ui/tools/feature/send/addsend/AddSendViewModelTest.kt index 777995ab32..84c95903ad 100644 --- a/app/src/test/java/com/x8bit/bitwarden/ui/tools/feature/send/addsend/AddSendViewModelTest.kt +++ b/app/src/test/java/com/x8bit/bitwarden/ui/tools/feature/send/addsend/AddSendViewModelTest.kt @@ -156,36 +156,6 @@ class AddSendViewModelTest : BaseViewModelTest() { } } - @Suppress("MaxLineLength") - @Test - fun `SaveClick with createSend success should emit NavigateBack and ShowShareSheet when not an external shared`() = - runTest { - val viewState = DEFAULT_VIEW_STATE.copy( - common = DEFAULT_COMMON_STATE.copy(name = "input"), - ) - val initialState = DEFAULT_STATE.copy(viewState = viewState) - val mockSendView = mockk() - every { viewState.toSendView(clock) } returns mockSendView - val sendUrl = "www.test.com/send/test" - val resultSendView = mockk { - every { toSendUrl(DEFAULT_ENVIRONMENT_URL) } returns sendUrl - } - coEvery { - vaultRepository.createSend(sendView = mockSendView, fileUri = null) - } returns CreateSendResult.Success(sendView = resultSendView) - val viewModel = createViewModel(initialState) - - viewModel.eventFlow.test { - viewModel.trySendAction(AddSendAction.SaveClick) - assertEquals(AddSendEvent.NavigateBack, awaitItem()) - assertEquals(AddSendEvent.ShowShareSheet(sendUrl), awaitItem()) - } - assertEquals(initialState, viewModel.stateFlow.value) - coVerify(exactly = 1) { - vaultRepository.createSend(sendView = mockSendView, fileUri = null) - } - } - @Suppress("MaxLineLength") @Test fun `SaveClick with createSend success should copy the send URL to the clipboard and emit NavigateBack`() = @@ -212,15 +182,15 @@ class AddSendViewModelTest : BaseViewModelTest() { viewModel.eventFlow.test { viewModel.trySendAction(AddSendAction.SaveClick) assertEquals(AddSendEvent.NavigateBack, awaitItem()) + assertEquals( + AddSendEvent.ShowShareSheet(message = "www.test.com/send/test"), + awaitItem(), + ) } assertEquals(initialState, viewModel.stateFlow.value) coVerify(exactly = 1) { vaultRepository.createSend(sendView = mockSendView, fileUri = null) specialCircumstanceManager.specialCircumstance = null - clipboardManager.setText( - text = sendUrl, - toastDescriptorOverride = R.string.send_link.asText(), - ) } } @@ -250,15 +220,15 @@ class AddSendViewModelTest : BaseViewModelTest() { viewModel.eventFlow.test { viewModel.trySendAction(AddSendAction.SaveClick) assertEquals(AddSendEvent.ExitApp, awaitItem()) + assertEquals( + AddSendEvent.ShowShareSheet(message = "www.test.com/send/test"), + awaitItem(), + ) } assertEquals(initialState, viewModel.stateFlow.value) coVerify(exactly = 1) { vaultRepository.createSend(sendView = mockSendView, fileUri = null) specialCircumstanceManager.specialCircumstance = null - clipboardManager.setText( - text = sendUrl, - toastDescriptorOverride = R.string.send_link.asText(), - ) } }