diff options
Diffstat (limited to 'src/main')
-rw-r--r-- | src/main/java/eu/siacs/conversations/ui/ShareWithActivity.java | 56 | ||||
-rw-r--r-- | src/main/res/values/strings.xml | 1 |
2 files changed, 52 insertions, 5 deletions
diff --git a/src/main/java/eu/siacs/conversations/ui/ShareWithActivity.java b/src/main/java/eu/siacs/conversations/ui/ShareWithActivity.java index 9a7414ef..f5724fc6 100644 --- a/src/main/java/eu/siacs/conversations/ui/ShareWithActivity.java +++ b/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) { diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index e38d6cd0..9ad0d63d 100644 --- a/src/main/res/values/strings.xml +++ b/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> |