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.