Do not allow profile given names to be empty when editing.
This commit is contained in:
parent
80c911e118
commit
9640f3f215
2 changed files with 42 additions and 2 deletions
|
@ -5,6 +5,7 @@ import android.text.Editable;
|
|||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.inputmethod.EditorInfo;
|
||||
import android.widget.EditText;
|
||||
import android.widget.Toast;
|
||||
|
||||
|
@ -56,6 +57,8 @@ public class EditProfileNameFragment extends Fragment {
|
|||
this.givenName.setText(Recipient.self().getProfileName().getGivenName());
|
||||
this.familyName.setText(Recipient.self().getProfileName().getFamilyName());
|
||||
|
||||
viewModel.onGivenNameLengthChanged(this.givenName.getText().length());
|
||||
|
||||
view.<Toolbar>findViewById(R.id.toolbar)
|
||||
.setNavigationOnClickListener(v -> Navigation.findNavController(view)
|
||||
.popBackStack());
|
||||
|
@ -63,7 +66,10 @@ public class EditProfileNameFragment extends Fragment {
|
|||
EditTextUtil.addGraphemeClusterLimitFilter(givenName, NAME_MAX_GLYPHS);
|
||||
EditTextUtil.addGraphemeClusterLimitFilter(familyName, NAME_MAX_GLYPHS);
|
||||
|
||||
this.givenName.addTextChangedListener(new AfterTextChanged(EditProfileNameFragment::trimFieldToMaxByteLength));
|
||||
this.givenName.addTextChangedListener(new AfterTextChanged(s -> {
|
||||
trimFieldToMaxByteLength(s);
|
||||
viewModel.onGivenNameLengthChanged(s.length());
|
||||
}));
|
||||
this.familyName.addTextChangedListener(new AfterTextChanged(EditProfileNameFragment::trimFieldToMaxByteLength));
|
||||
|
||||
saveButton.setOnClickListener(v -> viewModel.onSaveClicked(requireContext(),
|
||||
|
@ -80,19 +86,34 @@ public class EditProfileNameFragment extends Fragment {
|
|||
|
||||
private void presentSaveState(@NonNull EditProfileNameViewModel.SaveState state) {
|
||||
switch (state) {
|
||||
case DISABLED:
|
||||
saveButton.setClickable(false);
|
||||
saveButton.setAlpha(0.5f);
|
||||
setEditTextEnabled(givenName, true);
|
||||
setEditTextEnabled(familyName, true);
|
||||
break;
|
||||
case IDLE:
|
||||
saveButton.setClickable(true);
|
||||
saveButton.setIndeterminateProgressMode(false);
|
||||
saveButton.setProgress(0);
|
||||
saveButton.setAlpha(1);
|
||||
setEditTextEnabled(givenName, true);
|
||||
setEditTextEnabled(familyName, true);
|
||||
break;
|
||||
case IN_PROGRESS:
|
||||
saveButton.setClickable(false);
|
||||
saveButton.setIndeterminateProgressMode(true);
|
||||
saveButton.setProgress(50);
|
||||
saveButton.setAlpha(1);
|
||||
setEditTextEnabled(givenName, false);
|
||||
setEditTextEnabled(familyName, false);
|
||||
break;
|
||||
case DONE:
|
||||
saveButton.setClickable(false);
|
||||
Navigation.findNavController(requireView()).popBackStack();
|
||||
saveButton.setAlpha(1);
|
||||
setEditTextEnabled(givenName, false);
|
||||
setEditTextEnabled(familyName, false);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -114,4 +135,15 @@ public class EditProfileNameFragment extends Fragment {
|
|||
s.delete(trimmedLength, s.length());
|
||||
}
|
||||
}
|
||||
|
||||
private static void setEditTextEnabled(@NonNull EditText text, boolean enabled) {
|
||||
text.setEnabled(enabled);
|
||||
text.setFocusable(enabled);
|
||||
if (enabled) {
|
||||
text.setInputType(EditorInfo.TYPE_TEXT_VARIATION_PERSON_NAME);
|
||||
} else {
|
||||
text.clearFocus();
|
||||
text.setInputType(EditorInfo.TYPE_NULL);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -22,6 +22,14 @@ public final class EditProfileNameViewModel extends ViewModel {
|
|||
this.events = new SingleLiveEvent<>();
|
||||
}
|
||||
|
||||
void onGivenNameLengthChanged(int length) {
|
||||
if (length <= 0) {
|
||||
saveState.setValue(SaveState.DISABLED);
|
||||
} else {
|
||||
saveState.setValue(SaveState.IDLE);
|
||||
}
|
||||
}
|
||||
|
||||
@NonNull LiveData<SaveState> getSaveState() {
|
||||
return saveState;
|
||||
}
|
||||
|
@ -46,7 +54,7 @@ public final class EditProfileNameViewModel extends ViewModel {
|
|||
}
|
||||
|
||||
enum SaveState {
|
||||
IDLE, IN_PROGRESS, DONE
|
||||
IDLE, IN_PROGRESS, DONE, DISABLED
|
||||
}
|
||||
|
||||
enum Event {
|
||||
|
|
Loading…
Add table
Reference in a new issue