retrigger key selection if openpgp key was deleted

Daniel Gultsch created

Change summary

src/main/java/eu/siacs/conversations/crypto/PgpEngine.java | 9 ++++++-
src/main/java/eu/siacs/conversations/ui/XmppActivity.java  | 9 +++++++
2 files changed, 15 insertions(+), 3 deletions(-)

Detailed changes

src/main/java/eu/siacs/conversations/crypto/PgpEngine.java 🔗

@@ -259,8 +259,13 @@ public class PgpEngine {
 							account);
 					return;
 				case OpenPgpApi.RESULT_CODE_ERROR:
-					logError(account, (OpenPgpError) result.getParcelableExtra(OpenPgpApi.RESULT_ERROR));
-					callback.error(R.string.unable_to_connect_to_keychain, account);
+					OpenPgpError error = result.getParcelableExtra(OpenPgpApi.RESULT_ERROR);
+					if (error != null && "signing subkey not found!".equals(error.getMessage())) {
+						callback.error(0,account);
+					} else {
+						logError(account, error);
+						callback.error(R.string.unable_to_connect_to_keychain, null);
+					}
                 }
 			}
 		});

src/main/java/eu/siacs/conversations/ui/XmppActivity.java 🔗

@@ -584,7 +584,14 @@ public abstract class XmppActivity extends Activity {
 
 				@Override
 				public void error(int error, Account account) {
-					displayErrorDialog(error);
+					if (error == 0 && account != null) {
+						account.setPgpSignId(0);
+						account.unsetPgpSignature();
+						xmppConnectionService.databaseBackend.updateAccount(account);
+						choosePgpSignId(account);
+					} else {
+						displayErrorDialog(error);
+					}
 				}
 			});
 		}