diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyEmailFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyEmailFragment.java
index 2e8a1f370..7e2e1c31c 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyEmailFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyEmailFragment.java
@@ -39,6 +39,7 @@ import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.ui.CreateKeyActivity.FragAction;
import org.sufficientlysecure.keychain.ui.dialog.AddEmailDialogFragment;
import org.sufficientlysecure.keychain.ui.dialog.SetPassphraseDialogFragment;
+import org.sufficientlysecure.keychain.ui.util.Notify;
import org.sufficientlysecure.keychain.ui.widget.EmailEditText;
import java.util.ArrayList;
@@ -122,16 +123,22 @@ public class CreateKeyEmailFragment extends Fragment {
mEmailsRecyclerView.setItemAnimator(new DefaultItemAnimator());
// initial values
- mAdditionalEmailModels = new ArrayList<>();
- if (mCreateKeyActivity.mAdditionalEmails != null) {
- setAdditionalEmails(mCreateKeyActivity.mAdditionalEmails);
- }
- mEmailAdapter = new EmailAdapter(mAdditionalEmailModels, new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- addEmail();
+ if (mAdditionalEmailModels == null) {
+ mAdditionalEmailModels = new ArrayList<>();
+ if (mCreateKeyActivity.mAdditionalEmails != null) {
+ setAdditionalEmails(mCreateKeyActivity.mAdditionalEmails);
}
- });
+ }
+
+ if (mEmailAdapter == null) {
+ mEmailAdapter = new EmailAdapter(mAdditionalEmailModels, new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ addEmail();
+ }
+ });
+ }
+
mEmailsRecyclerView.setAdapter(mEmailAdapter);
return view;
@@ -144,10 +151,27 @@ public class CreateKeyEmailFragment extends Fragment {
if (message.what == SetPassphraseDialogFragment.MESSAGE_OKAY) {
Bundle data = message.getData();
+ String email = data.getString(AddEmailDialogFragment.MESSAGE_DATA_EMAIL);
+
+ if (email.length() > 0 && mEmailEdit.getText().length() > 0 &&
+ email.equals(mEmailEdit.getText().toString())) {
+ Notify.create(getActivity(),
+ getString(R.string.create_key_email_already_exists_text),
+ Notify.LENGTH_LONG, Notify.Style.ERROR).show();
+ return;
+ }
+ //check for duplicated emails inside the adapter
+ for (EmailAdapter.ViewModel model : mAdditionalEmailModels) {
+ if (email.equals(model.email)) {
+ Notify.create(getActivity(),
+ getString(R.string.create_key_email_already_exists_text),
+ Notify.LENGTH_LONG, Notify.Style.ERROR).show();
+ return;
+ }
+ }
+
// add new user id
- mEmailAdapter.add(
- data.getString(AddEmailDialogFragment.MESSAGE_DATA_EMAIL)
- );
+ mEmailAdapter.add(email);
}
}
};
diff --git a/OpenKeychain/src/main/res/values/strings.xml b/OpenKeychain/src/main/res/values/strings.xml
index 8c4fe2a33..6ee30887b 100644
--- a/OpenKeychain/src/main/res/values/strings.xml
+++ b/OpenKeychain/src/main/res/values/strings.xml
@@ -629,6 +629,7 @@
"Change key configuration"
"Add email address"
"Additional email addresses are also associated to this key and can be used for secure communication."
+ "Email has already been added"
"Revoked: Key must not be used anymore!"