diff --git a/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/EditProfileNameFragment.java b/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/EditProfileNameFragment.java index ddab6a558..6c646b294 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/EditProfileNameFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/EditProfileNameFragment.java @@ -23,6 +23,7 @@ import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.profiles.ProfileName; import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.util.StringUtil; +import org.thoughtcrime.securesms.util.ViewUtil; import org.thoughtcrime.securesms.util.text.AfterTextChanged; /** @@ -71,6 +72,8 @@ public class EditProfileNameFragment extends Fragment { saveButton.setOnClickListener(v -> viewModel.onSaveClicked(requireContext(), givenName.getText().toString(), familyName.getText().toString())); + + ViewUtil.focusAndMoveCursorToEndAndOpenKeyboard(this.givenName); } private void initializeViewModel() { diff --git a/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/EditProfileNameViewModel.java b/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/EditProfileNameViewModel.java index 1d4b56117..83646590e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/EditProfileNameViewModel.java +++ b/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/EditProfileNameViewModel.java @@ -6,6 +6,7 @@ import android.text.Editable; import androidx.annotation.NonNull; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; +import androidx.lifecycle.Transformations; import androidx.lifecycle.ViewModel; import org.thoughtcrime.securesms.profiles.ProfileName; @@ -25,7 +26,7 @@ public final class EditProfileNameViewModel extends ViewModel { } void onGivenNameChanged(@NonNull String text) { - if (StringUtil.isVisuallyEmpty(text.toString())) { + if (StringUtil.isVisuallyEmpty(text)) { saveState.setValue(SaveState.DISABLED); } else { saveState.setValue(SaveState.IDLE); @@ -33,7 +34,7 @@ public final class EditProfileNameViewModel extends ViewModel { } @NonNull LiveData getSaveState() { - return saveState; + return Transformations.distinctUntilChanged(saveState); } @NonNull LiveData getEvents() { diff --git a/app/src/main/res/layout/edit_profile_name_fragment.xml b/app/src/main/res/layout/edit_profile_name_fragment.xml index c1ded3c5b..705c4f21d 100644 --- a/app/src/main/res/layout/edit_profile_name_fragment.xml +++ b/app/src/main/res/layout/edit_profile_name_fragment.xml @@ -33,8 +33,9 @@ android:id="@+id/edit_profile_name_given_name" android:layout_width="match_parent" android:layout_height="wrap_content" + android:autofillHints="personGivenName" android:inputType="textPersonName" - android:maxLines="1" /> + android:singleLine="true" /> @@ -55,8 +56,9 @@ android:id="@+id/edit_profile_name_family_name" android:layout_width="match_parent" android:layout_height="wrap_content" + android:autofillHints="personFamilyName" android:inputType="textPersonName" - android:maxLines="1" /> + android:singleLine="true" /> diff --git a/app/src/main/res/layout/profile_create_fragment.xml b/app/src/main/res/layout/profile_create_fragment.xml index e10967cbc..140f131fa 100644 --- a/app/src/main/res/layout/profile_create_fragment.xml +++ b/app/src/main/res/layout/profile_create_fragment.xml @@ -131,7 +131,7 @@ android:layout_marginTop="13dp" android:layout_marginEnd="16dp" android:layout_weight="1" - android:autofillHints="given-name" + android:autofillHints="personGivenName" android:hint="@string/CreateProfileActivity_first_name_required" android:inputType="textPersonName" android:singleLine="true" /> @@ -158,7 +158,7 @@ android:layout_marginTop="13dp" android:layout_marginEnd="16dp" android:layout_weight="1" - android:autofillHints="family-name" + android:autofillHints="personFamilyName" android:hint="@string/CreateProfileActivity_last_name_optional" android:inputType="textPersonName" android:singleLine="true" />