fixed pgp encrypted text quick sharing. fixes #2237

Daniel Gultsch created

Change summary

src/main/java/eu/siacs/conversations/ui/ShareWithActivity.java | 56 +++
src/main/res/values/strings.xml                                |  1 
2 files changed, 52 insertions(+), 5 deletions(-)

Detailed changes

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

@@ -310,15 +310,61 @@ public class ShareWithActivity extends XmppActivity implements XmppConnectionSer
 		} else {
 			if (mReturnToPrevious && this.share.text != null && !this.share.text.isEmpty() ) {
 				final OnPresenceSelected callback = new OnPresenceSelected() {
+
+					private void finishAndSend(Message message) {
+						xmppConnectionService.sendMessage(message);
+						replaceToast(getString(R.string.shared_text_with_x, conversation.getName()));
+						finish();
+					}
+
+					private UiCallback<Message> messageEncryptionCallback = new UiCallback<Message>() {
+						@Override
+						public void success(final Message message) {
+							message.setEncryption(Message.ENCRYPTION_DECRYPTED);
+							runOnUiThread(new Runnable() {
+								@Override
+								public void run() {
+									finishAndSend(message);
+								}
+							});
+						}
+
+						@Override
+						public void error(final int errorCode, Message object) {
+							runOnUiThread(new Runnable() {
+								@Override
+								public void run() {
+									replaceToast(getString(errorCode));
+									finish();
+								}
+							});
+						}
+
+						@Override
+						public void userInputRequried(PendingIntent pi, Message object) {
+							finish();
+						}
+					};
+
 					@Override
 					public void onPresenceSelected() {
-						Message message = new Message(conversation,share.text, conversation.getNextEncryption());
-						if (conversation.getNextEncryption() == Message.ENCRYPTION_OTR) {
+
+						final int encryption = conversation.getNextEncryption();
+
+						Message message = new Message(conversation,share.text, encryption);
+
+						Log.d(Config.LOGTAG,"on presence selected encrpytion="+encryption);
+
+						if (encryption == Message.ENCRYPTION_PGP) {
+							replaceToast(getString(R.string.encrypting_message));
+							xmppConnectionService.getPgpEngine().encrypt(message,messageEncryptionCallback);
+							return;
+						}
+
+						if (encryption == Message.ENCRYPTION_OTR) {
 							message.setCounterpart(conversation.getNextCounterpart());
 						}
-						xmppConnectionService.sendMessage(message);
-						replaceToast(getString(R.string.shared_text_with_x, conversation.getName()));
-						finish();
+						finishAndSend(message);
 					}
 				};
 				if (conversation.getNextEncryption() == Message.ENCRYPTION_OTR) {

src/main/res/values/strings.xml 🔗

@@ -724,4 +724,5 @@
 	<string name="hide_inactive_devices">Hide inactive devices</string>
 	<string name="distrust_omemo_key">Distrust device</string>
 	<string name="distrust_omemo_key_text">Are you sure you want to remove the verification for this device?\nThis device and messages coming from that device will be marked as untrusted.</string>
+	<string name="encrypting_message">Encrypting message</string>
 </resources>