diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/AppSettingsActivity.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/AppSettingsActivity.kt index 99fbb98f42..30fcf18ba6 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/AppSettingsActivity.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/AppSettingsActivity.kt @@ -120,8 +120,6 @@ class AppSettingsActivity : DSLSettingsActivity(), DonationPaymentComponent { override fun onWillFinish() { if (wasConfigurationUpdated) { setResult(MainActivity.RESULT_CONFIG_CHANGED) - } else { - setResult(RESULT_OK) } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/UsernameEditFragment.java b/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/UsernameEditFragment.java index 5c82d09622..da9f3e5195 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/UsernameEditFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/UsernameEditFragment.java @@ -141,7 +141,7 @@ public class UsernameEditFragment extends LoggingFragment { } private void promptOrSubmitUsername() { - if (args.getMode() == UsernameEditMode.RECOVERY) { + if (viewModel.isSameUsernameRecovery()) { new MaterialAlertDialogBuilder(requireContext()) .setMessage(R.string.UsernameEditFragment_recovery_dialog_confirmation) .setPositiveButton(android.R.string.ok, ((dialog, which) -> { diff --git a/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/UsernameEditViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/UsernameEditViewModel.kt index dbe059e317..8806517e9a 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/UsernameEditViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/UsernameEditViewModel.kt @@ -35,8 +35,6 @@ import java.util.concurrent.TimeUnit * Usernames are made up of two discrete components, a nickname and a discriminator. They are formatted thusly: * * [nickname].[discriminator] - * - * The nickname is user-controlled, whereas the discriminator is controlled by the server. */ internal class UsernameEditViewModel private constructor(private val mode: UsernameEditMode) : ViewModel() { private val events: PublishSubject = PublishSubject.create() @@ -71,6 +69,7 @@ internal class UsernameEditViewModel private constructor(private val mode: Usern if (mode == UsernameEditMode.RECOVERY) { onNicknameUpdated(SignalStore.account().username?.split(Usernames.DELIMITER)?.first() ?: "") + onDiscriminatorUpdated(SignalStore.account().username?.split(Usernames.DELIMITER)?.last() ?: "") } } @@ -129,6 +128,13 @@ internal class UsernameEditViewModel private constructor(private val mode: Usern events.onNext(Event.SKIPPED) } + fun isSameUsernameRecovery(): Boolean { + val usernameState = uiState.state.usernameState + return mode == UsernameEditMode.RECOVERY && + usernameState is UsernameState.Reserved && + usernameState.requireUsername().username.lowercase() == SignalStore.account().username?.lowercase() + } + /** * @param userConfirmedResetOk True if the user is submitting this after confirming that they're ok with resetting their username via [Event.NEEDS_CONFIRM_RESET]. */