diff --git a/app/src/androidTest/java/org/thoughtcrime/securesms/profiles/manage/UsernameEditFragmentTest.kt b/app/src/androidTest/java/org/thoughtcrime/securesms/profiles/manage/UsernameEditFragmentTest.kt index 1bf3ab3c8f..5436b8396b 100644 --- a/app/src/androidTest/java/org/thoughtcrime/securesms/profiles/manage/UsernameEditFragmentTest.kt +++ b/app/src/androidTest/java/org/thoughtcrime/securesms/profiles/manage/UsernameEditFragmentTest.kt @@ -57,23 +57,6 @@ class UsernameEditFragmentTest { InstrumentationApplicationDependencyProvider.clearHandlers() } - @Test - fun testUsernameCreationInRegistration() { - val scenario = createScenario(UsernameEditMode.REGISTRATION) - - scenario.moveToState(Lifecycle.State.RESUMED) - - onView(withId(R.id.toolbar)).check { view, noViewFoundException -> - noViewFoundException.assertIsNull() - val toolbar = view as Toolbar - - toolbar.navigationIcon.assertIsNull() - } - - onView(withText(R.string.UsernameEditFragment__add_a_username)).check(matches(isDisplayed())) - onView(withContentDescription(R.string.load_more_header__loading)).check(matches(withEffectiveVisibility(ViewMatchers.Visibility.GONE))) - } - @Ignore("Flakey espresso test.") @Test fun testUsernameCreationOutsideOfRegistration() { @@ -108,7 +91,7 @@ class UsernameEditFragmentTest { } ) - val scenario = createScenario(UsernameEditMode.REGISTRATION) + val scenario = createScenario(UsernameEditMode.NORMAL) scenario.moveToState(Lifecycle.State.RESUMED) onView(withId(R.id.username_text)).perform(typeText(nickname)) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 993dede288..7d840a9b0c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -976,11 +976,6 @@ android:windowSoftInputMode="stateVisible|adjustResize" android:exported="false"/> - - { - if (args.getMode() == UsernameEditMode.RECOVERY) { - getActivity().finish(); - } else { - Navigation.findNavController(view).popBackStack(); - } - }); - binding.usernameSubmitButton.setVisibility(View.VISIBLE); - } + binding.toolbar.setNavigationOnClickListener(v -> { + if (args.getMode() == UsernameEditMode.RECOVERY) { + getActivity().finish(); + } else { + Navigation.findNavController(view).popBackStack(); + } + }); + binding.usernameSubmitButton.setVisibility(View.VISIBLE); binding.usernameTextWrapper.setErrorIconDrawable(null); @@ -211,47 +199,6 @@ public class UsernameEditFragment extends LoggingFragment { } private void presentButtonState(@NonNull UsernameEditViewModel.ButtonState buttonState) { - if (args.getMode() == UsernameEditMode.REGISTRATION) { - presentRegistrationButtonState(buttonState); - } else { - presentProfileUpdateButtonState(buttonState); - } - } - - private void presentSummary(@NonNull UsernameState usernameState) { - if (usernameState.getUsername() != null) { - binding.summary.setText(usernameState.getUsername().getUsername()); - binding.summary.setAlpha(1f); - } else if (!(usernameState instanceof UsernameState.Loading)) { - binding.summary.setText(R.string.UsernameEditFragment__choose_your_username); - binding.summary.setAlpha(1f); - } - } - - private void presentRegistrationButtonState(@NonNull UsernameEditViewModel.ButtonState buttonState) { - binding.usernameText.setEnabled(true); - binding.usernameProgressCard.setVisibility(View.GONE); - - switch (buttonState) { - case SUBMIT: - binding.usernameDoneButton.setEnabled(true); - binding.usernameDoneButton.setAlpha(1f); - break; - case SUBMIT_DISABLED: - binding.usernameDoneButton.setEnabled(false); - binding.usernameDoneButton.setAlpha(DISABLED_ALPHA); - break; - case SUBMIT_LOADING: - binding.usernameDoneButton.setEnabled(false); - binding.usernameDoneButton.setAlpha(DISABLED_ALPHA); - binding.usernameProgressCard.setVisibility(View.VISIBLE); - break; - default: - throw new IllegalStateException("Delete functionality is not available during registration."); - } - } - - private void presentProfileUpdateButtonState(@NonNull UsernameEditViewModel.ButtonState buttonState) { CircularProgressMaterialButton submitButton = binding.usernameSubmitButton; CircularProgressMaterialButton deleteButton = binding.usernameDeleteButton; EditText usernameInput = binding.usernameText; @@ -303,6 +250,16 @@ public class UsernameEditFragment extends LoggingFragment { } } + private void presentSummary(@NonNull UsernameState usernameState) { + if (usernameState.getUsername() != null) { + binding.summary.setText(usernameState.getUsername().getUsername()); + binding.summary.setAlpha(1f); + } else if (!(usernameState instanceof UsernameState.Loading)) { + binding.summary.setText(R.string.UsernameEditFragment__choose_your_username); + binding.summary.setAlpha(1f); + } + } + private void presentUsernameInputState(@NonNull UsernameEditStateMachine.State state) { binding.usernameText.setTag(IGNORE_TEXT_CHANGE_EVENT); String nickname = state.getNickname(); @@ -366,34 +323,13 @@ public class UsernameEditFragment extends LoggingFragment { } private void closeScreen() { - if (args.getMode() == UsernameEditMode.REGISTRATION) { - finishAndStartNextIntent(); - } else if (args.getMode() == UsernameEditMode.RECOVERY) { + if (args.getMode() == UsernameEditMode.RECOVERY) { getActivity().finish(); } else { NavHostFragment.findNavController(this).popBackStack(); } } - private void finishAndStartNextIntent() { - FragmentActivity activity = requireActivity(); - boolean didLaunch = false; - Intent activityIntent = activity.getIntent(); - - if (activityIntent != null) { - Intent nextIntent = activityIntent.getParcelableExtra(PassphraseRequiredActivity.NEXT_INTENT_EXTRA); - if (nextIntent != null) { - activity.startActivity(nextIntent); - activity.finish(); - didLaunch = true; - } - } - - if (!didLaunch) { - activity.finish(); - } - } - static class ResultContract extends FragmentResultContract { private static final String REQUEST_KEY = "username_created"; diff --git a/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/UsernameEditMode.kt b/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/UsernameEditMode.kt index a99936ff58..7b1f7c3cba 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/UsernameEditMode.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/UsernameEditMode.kt @@ -9,11 +9,6 @@ enum class UsernameEditMode { /** A typical launch, no special conditions. */ NORMAL, - /** Screen is launched during registration, includes special first-time flows. */ - REGISTRATION, - /** Screen was launched because the username was in a bad state and needs to be recovered. Shows a special dialog. */ - RECOVERY; - - val allowsDelete get() = this == NORMAL || this == RECOVERY + RECOVERY } 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 efb8c24741..c605fd0fe8 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 @@ -84,7 +84,7 @@ internal class UsernameEditViewModel private constructor(private val mode: Usern uiState.update { state: State -> if (nickname.isBlank() && SignalStore.account().username != null) { return@update State( - buttonState = if (mode.allowsDelete) ButtonState.DELETE else ButtonState.SUBMIT_DISABLED, + buttonState = ButtonState.DELETE, usernameStatus = UsernameStatus.NONE, usernameState = UsernameState.NoUsername ) @@ -106,7 +106,7 @@ internal class UsernameEditViewModel private constructor(private val mode: Usern uiState.update { state: State -> if (discriminator.isBlank() && SignalStore.account().username != null) { return@update State( - buttonState = if (mode.allowsDelete) ButtonState.DELETE else ButtonState.SUBMIT_DISABLED, + buttonState = ButtonState.DELETE, usernameStatus = UsernameStatus.NONE, usernameState = UsernameState.NoUsername ) diff --git a/app/src/main/java/org/thoughtcrime/securesms/profiles/username/AddAUsernameActivity.kt b/app/src/main/java/org/thoughtcrime/securesms/profiles/username/AddAUsernameActivity.kt deleted file mode 100644 index 214eebe948..0000000000 --- a/app/src/main/java/org/thoughtcrime/securesms/profiles/username/AddAUsernameActivity.kt +++ /dev/null @@ -1,38 +0,0 @@ -package org.thoughtcrime.securesms.profiles.username - -import android.os.Bundle -import androidx.navigation.fragment.NavHostFragment -import org.thoughtcrime.securesms.BaseActivity -import org.thoughtcrime.securesms.R -import org.thoughtcrime.securesms.profiles.manage.UsernameEditFragmentArgs -import org.thoughtcrime.securesms.profiles.manage.UsernameEditMode -import org.thoughtcrime.securesms.util.DynamicNoActionBarTheme -import org.thoughtcrime.securesms.util.DynamicTheme - -class AddAUsernameActivity : BaseActivity() { - private val dynamicTheme: DynamicTheme = DynamicNoActionBarTheme() - private val contentViewId: Int = R.layout.fragment_container - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(contentViewId) - dynamicTheme.onCreate(this) - - if (savedInstanceState == null) { - supportFragmentManager.beginTransaction() - .replace( - R.id.fragment_container, - NavHostFragment.create( - R.navigation.create_username, - UsernameEditFragmentArgs.Builder().setMode(UsernameEditMode.REGISTRATION).build().toBundle() - ) - ) - .commit() - } - } - - override fun onResume() { - super.onResume() - dynamicTheme.onResume(this) - } -} diff --git a/app/src/main/res/navigation/app_settings.xml b/app/src/main/res/navigation/app_settings.xml index 3f3c101ab4..49fc617018 100644 --- a/app/src/main/res/navigation/app_settings.xml +++ b/app/src/main/res/navigation/app_settings.xml @@ -585,7 +585,7 @@ + + + + - \ No newline at end of file diff --git a/app/src/main/res/navigation/create_username.xml b/app/src/main/res/navigation/create_username.xml deleted file mode 100644 index 73ad8c0949..0000000000 --- a/app/src/main/res/navigation/create_username.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - \ No newline at end of file