diff --git a/app/src/main/java/eu/faircode/email/AdapterMessage.java b/app/src/main/java/eu/faircode/email/AdapterMessage.java index 985306334f..e8d7626b1f 100644 --- a/app/src/main/java/eu/faircode/email/AdapterMessage.java +++ b/app/src/main/java/eu/faircode/email/AdapterMessage.java @@ -2700,17 +2700,13 @@ public class AdapterMessage extends RecyclerView.Adapter() { @Override - public void onSelected(String alias) { - args.putString("alias", alias); - onSmime(args); + protected EntityIdentity onExecute(Context context, Bundle args) { + long id = args.getLong("id"); + + DB db = DB.getInstance(context); + + EntityMessage message = db.message().getMessage(id); + if (message == null || message.identity == null) + return null; + + return db.identity().getIdentity(message.identity); } @Override - public void onNothingSelected() { - Snackbar snackbar = Snackbar.make(view, R.string.title_no_key, Snackbar.LENGTH_LONG); - final Intent intent = KeyChain.createInstallIntent(); - if (intent.resolveActivity(getContext().getPackageManager()) != null) - snackbar.setAction(R.string.title_fix, new View.OnClickListener() { - @Override - public void onClick(View v) { - startActivity(intent); - } - }); - snackbar.show(); + protected void onExecuted(Bundle args, EntityIdentity identity) { + Helper.selectKeyAlias(getActivity(), identity == null ? null : identity.sign_key_alias, new Helper.IKeyAlias() { + @Override + public void onSelected(String alias) { + args.putString("alias", alias); + onSmime(args); + } + + @Override + public void onNothingSelected() { + Snackbar snackbar = Snackbar.make(view, R.string.title_no_key, Snackbar.LENGTH_LONG); + final Intent intent = KeyChain.createInstallIntent(); + if (intent.resolveActivity(getContext().getPackageManager()) != null) + snackbar.setAction(R.string.title_fix, new View.OnClickListener() { + @Override + public void onClick(View v) { + startActivity(intent); + } + }); + snackbar.show(); + } + }); } - }); + + @Override + protected void onException(Bundle args, Throwable ex) { + Helper.unexpectedError(getParentFragmentManager(), ex); + } + }.execute(this, args, "messages:alias"); } else { if (pgpService.isBound()) { Intent data = new Intent();