1
0
Fork 0
mirror of https://github.com/M66B/FairEmail.git synced 2024-12-27 10:17:18 +00:00

Added PGP solution

This commit is contained in:
M66B 2023-02-28 12:46:34 +01:00
parent 6a41ed95c9
commit 273b05e7a1
2 changed files with 48 additions and 17 deletions

View file

@ -135,6 +135,9 @@ public interface DaoIdentity {
@Query("UPDATE identity SET encrypt = :encrypt WHERE id = :id AND NOT (encrypt IS :encrypt)")
int setIdentityEncrypt(long id, int encrypt);
@Query("UPDATE identity SET sign_default = 0, encrypt_default = 0 WHERE encrypt = 0")
int resetIdentityPGP();
@Query("UPDATE identity SET sign_key = :sign_key WHERE id = :id AND NOT (sign_key IS :sign_key)")
int setIdentitySignKey(long id, Long sign_key);

View file

@ -1975,23 +1975,6 @@ public class FragmentCompose extends FragmentBase {
private void onMenuEncrypt() {
EntityIdentity identity = (EntityIdentity) spIdentity.getSelectedItem();
if (identity == null || identity.encrypt == 0) {
final Context context = getContext();
if (!Helper.isOpenKeychainInstalled(context)) {
new AlertDialog.Builder(context)
.setIcon(R.drawable.twotone_lock_24)
.setTitle(R.string.title_no_openpgp)
.setMessage(R.string.title_no_openpgp_remark)
.setPositiveButton(R.string.title_info, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Helper.viewFAQ(context, 12);
}
})
.setNegativeButton(android.R.string.cancel, null)
.show();
return;
}
if (EntityMessage.ENCRYPT_NONE.equals(encrypt) || encrypt == null)
encrypt = EntityMessage.PGP_SIGNENCRYPT;
else if (EntityMessage.PGP_SIGNENCRYPT.equals(encrypt))
@ -2007,6 +1990,51 @@ public class FragmentCompose extends FragmentBase {
encrypt = EntityMessage.ENCRYPT_NONE;
}
final Context context = getContext();
if ((EntityMessage.PGP_SIGNONLY.equals(encrypt) ||
EntityMessage.PGP_SIGNENCRYPT.equals(encrypt))
&& !Helper.isOpenKeychainInstalled(context)) {
encrypt = EntityMessage.ENCRYPT_NONE;
new AlertDialog.Builder(context)
.setIcon(R.drawable.twotone_lock_24)
.setTitle(R.string.title_no_openpgp)
.setMessage(R.string.title_no_openpgp_remark)
.setPositiveButton(R.string.title_info, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Helper.viewFAQ(context, 12);
}
})
.setNegativeButton(android.R.string.cancel, null)
.setNeutralButton(R.string.title_reset, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
new SimpleTask<Void>() {
@Override
protected Void onExecute(Context context, Bundle args) throws Throwable {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
prefs.edit()
.remove("sign_default")
.remove("encrypt_default")
.apply();
DB db = DB.getInstance(context);
db.identity().resetIdentityPGP();
return null;
}
@Override
protected void onException(Bundle args, Throwable ex) {
Log.unexpectedError(getParentFragmentManager(), ex);
}
}.execute(FragmentCompose.this, new Bundle(), "encrypt: fix");
}
})
.show();
}
invalidateOptionsMenu();
Bundle args = new Bundle();