mirror of
https://github.com/moparisthebest/open-keychain
synced 2024-12-23 15:38:50 -05:00
-Fixed a situation where additional emails could be duplicated when creating a new key -If CreateKeyEmailFragment view is recreated, the array of additional emails won't be repopulated again if its not null, avoiding new reallocations. -if CreateKeyEmailFragment view is recreated, the email adapter wont be recreated if its not null, avoiding new reallocations.
This commit is contained in:
parent
d6368db564
commit
605c9ace58
@ -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);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
@ -629,6 +629,7 @@
|
||||
<string name="create_key_edit">"Change key configuration"</string>
|
||||
<string name="create_key_add_email">"Add email address"</string>
|
||||
<string name="create_key_add_email_text">"Additional email addresses are also associated to this key and can be used for secure communication."</string>
|
||||
<string name="create_key_email_already_exists_text">"Email has already been added"</string>
|
||||
|
||||
<!-- View key -->
|
||||
<string name="view_key_revoked">"Revoked: Key must not be used anymore!"</string>
|
||||
|
Loading…
Reference in New Issue
Block a user