diff --git a/briar-android/src/main/java/org/briarproject/briar/android/conversation/AliasDialogFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/conversation/AliasDialogFragment.java
index fb75da55f..bd669cd9e 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/conversation/AliasDialogFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/conversation/AliasDialogFragment.java
@@ -4,6 +4,7 @@ import android.arch.lifecycle.ViewModelProvider;
import android.arch.lifecycle.ViewModelProviders;
import android.os.Bundle;
import android.support.annotation.NonNull;
+import android.support.design.widget.TextInputLayout;
import android.support.v7.app.AppCompatDialogFragment;
import android.view.LayoutInflater;
import android.view.View;
@@ -18,6 +19,8 @@ import org.briarproject.briar.android.activity.BriarActivity;
import javax.inject.Inject;
import static java.util.Objects.requireNonNull;
+import static org.briarproject.bramble.api.identity.AuthorConstants.MAX_AUTHOR_NAME_LENGTH;
+import static org.briarproject.bramble.util.StringUtils.toUtf8;
public class AliasDialogFragment extends AppCompatDialogFragment {
@@ -27,6 +30,7 @@ public class AliasDialogFragment extends AppCompatDialogFragment {
ViewModelProvider.Factory viewModelFactory;
private ConversationViewModel viewModel;
+ private TextInputLayout aliasEditLayout;
private EditText aliasEditText;
public static AliasDialogFragment newInstance() {
@@ -51,6 +55,7 @@ public class AliasDialogFragment extends AppCompatDialogFragment {
View v = inflater.inflate(R.layout.fragment_alias_dialog, container,
false);
+ aliasEditLayout = v.findViewById(R.id.aliasEditLayout);
aliasEditText = v.findViewById(R.id.aliasEditText);
Contact contact = requireNonNull(viewModel.getContact().getValue());
String alias = contact.getAlias();
@@ -58,10 +63,7 @@ public class AliasDialogFragment extends AppCompatDialogFragment {
if (alias != null) aliasEditText.setSelection(alias.length());
Button setButton = v.findViewById(R.id.setButton);
- setButton.setOnClickListener(v1 -> {
- viewModel.setContactAlias(aliasEditText.getText().toString());
- getDialog().dismiss();
- });
+ setButton.setOnClickListener(v1 -> onSetButtonClicked());
Button cancelButton = v.findViewById(R.id.cancelButton);
cancelButton.setOnClickListener(v1 -> getDialog().cancel());
@@ -69,4 +71,14 @@ public class AliasDialogFragment extends AppCompatDialogFragment {
return v;
}
+ private void onSetButtonClicked() {
+ String alias = aliasEditText.getText().toString();
+ if (toUtf8(alias).length > MAX_AUTHOR_NAME_LENGTH) {
+ aliasEditLayout.setError(getString(R.string.name_too_long));
+ } else {
+ viewModel.setContactAlias(alias);
+ getDialog().dismiss();
+ }
+ }
+
}
diff --git a/briar-android/src/main/res/layout/fragment_alias_dialog.xml b/briar-android/src/main/res/layout/fragment_alias_dialog.xml
index 487cb3edd..c96f426e1 100644
--- a/briar-android/src/main/res/layout/fragment_alias_dialog.xml
+++ b/briar-android/src/main/res/layout/fragment_alias_dialog.xml
@@ -1,6 +1,7 @@
-
+ app:errorEnabled="true"
+ app:hintEnabled="false">
+
+
+
+