diff --git a/app/src/main/java/to/bitkit/ui/screens/profile/EditProfileViewModel.kt b/app/src/main/java/to/bitkit/ui/screens/profile/EditProfileViewModel.kt index 5b4b6e185..fdd2ebb36 100644 --- a/app/src/main/java/to/bitkit/ui/screens/profile/EditProfileViewModel.kt +++ b/app/src/main/java/to/bitkit/ui/screens/profile/EditProfileViewModel.kt @@ -267,17 +267,7 @@ class EditProfileViewModel @Inject constructor( isSaving = true, ) } - val cleanupResult = privatePaykitRepo.removePublishedEndpointsForCleanup(TAG) - if (cleanupResult.isFailure) { - _uiState.update { - it.copy( - isSaving = false, - showDeleteFailureDialog = true, - ) - } - return - } - + privatePaykitRepo.removePublishedEndpointsForCleanup(TAG) val result = pubkyRepo.deleteProfileWithSessionRetry() if (result.isSuccess) { privatePaykitRepo.closeAndClear() diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 98d83f888..17c003c37 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -586,7 +586,7 @@ Create Profile Restoring your existing profile… Profile created successfully - Are you sure you want to delete all of your profile information for your pubky? + Deleting your profile removes it from Pubky. Contacts may still retain profile and payment information previously shared with them. Delete Profile? We couldn\'t delete your profile data. Retry, or disconnect this pubky from Bitkit. Unable to Delete Profile diff --git a/app/src/test/java/to/bitkit/ui/screens/profile/EditProfileViewModelTest.kt b/app/src/test/java/to/bitkit/ui/screens/profile/EditProfileViewModelTest.kt index 47f3fb95a..f4ed9db70 100644 --- a/app/src/test/java/to/bitkit/ui/screens/profile/EditProfileViewModelTest.kt +++ b/app/src/test/java/to/bitkit/ui/screens/profile/EditProfileViewModelTest.kt @@ -159,20 +159,26 @@ class EditProfileViewModelTest : BaseUnitTest() { } @Test - fun `deleteProfile should stop when private cleanup fails`() = test { + fun `deleteProfile should continue when private cleanup fails`() = test { val sut = createSut() whenever { privatePaykitRepo.removePublishedEndpointsForCleanup(any()) } .thenReturn(Result.failure(TestAppError("cleanup failed"))) whenever(pubkyRepo.deleteProfileWithSessionRetry()).thenReturn(Result.success(Unit)) advanceUntilIdle() - sut.deleteProfile() - advanceUntilIdle() + sut.effects.test { + sut.deleteProfile() + advanceUntilIdle() - assertTrue(sut.uiState.value.showDeleteFailureDialog) + assertEquals(EditProfileEffect.DeleteSuccess, awaitItem()) + } + assertFalse(sut.uiState.value.showDeleteFailureDialog) assertFalse(sut.uiState.value.isSaving) - verify(pubkyRepo, never()).deleteProfileWithSessionRetry() - verify(privatePaykitRepo, never()).closeAndClear() + inOrder(privatePaykitRepo, pubkyRepo).apply { + verify(privatePaykitRepo).removePublishedEndpointsForCleanup(any()) + verify(pubkyRepo).deleteProfileWithSessionRetry() + verify(privatePaykitRepo).closeAndClear() + } } @Test diff --git a/changelog.d/next/1108.fixed.md b/changelog.d/next/1108.fixed.md new file mode 100644 index 000000000..13b1beb5d --- /dev/null +++ b/changelog.d/next/1108.fixed.md @@ -0,0 +1 @@ +Fixed profile deletion being blocked when private Paykit contact cleanup could not complete.