Change summary
src/main/java/eu/siacs/conversations/ui/ConversationActivity.java | 36 +
src/main/java/eu/siacs/conversations/ui/ConversationFragment.java | 23
2 files changed, 51 insertions(+), 8 deletions(-)
Detailed changes
@@ -60,6 +60,8 @@ import eu.siacs.conversations.ui.service.EmojiService;
import eu.siacs.conversations.ui.util.PendingItem;
import eu.siacs.conversations.xmpp.OnUpdateBlocklist;
+import static eu.siacs.conversations.ui.ConversationFragment.REQUEST_DECRYPT_PGP;
+
public class ConversationActivity extends XmppActivity implements OnConversationSelected, OnConversationArchived, OnConversationsListItemUpdated, OnConversationRead, XmppConnectionService.OnAccountUpdate, XmppConnectionService.OnConversationUpdate, XmppConnectionService.OnRosterUpdate, OnUpdateBlocklist, XmppConnectionService.OnShowErrorToast {
public static final String ACTION_VIEW_CONVERSATION = "eu.siacs.conversations.action.VIEW";
@@ -194,6 +196,40 @@ public class ConversationActivity extends XmppActivity implements OnConversation
return true;
}
+ @Override
+ public void onActivityResult(int requestCode, int resultCode, final Intent data) {
+ Log.d(Config.LOGTAG,"on activity result");
+ if (resultCode == RESULT_OK) {
+ handlePositiveActivityResult(requestCode, data);
+ } else {
+ handleNegativeActivityResult(requestCode);
+ }
+ }
+
+ private void handleNegativeActivityResult(int requestCode) {
+ switch (requestCode) {
+ case REQUEST_DECRYPT_PGP:
+ Conversation conversation = ConversationFragment.getConversationReliable(this);
+ if (conversation == null) {
+ break;
+ }
+ conversation.getAccount().getPgpDecryptionService().giveUpCurrentDecryption();
+ break;
+ }
+ }
+
+ private void handlePositiveActivityResult(int requestCode, final Intent data) {
+ switch (requestCode) {
+ case REQUEST_DECRYPT_PGP:
+ Conversation conversation = ConversationFragment.getConversationReliable(this);
+ if (conversation == null) {
+ break;
+ }
+ conversation.getAccount().getPgpDecryptionService().continueDecryption(data);
+ break;
+ }
+ }
+
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -9,6 +9,7 @@ import android.net.Uri;
import android.os.Build;
import android.preference.PreferenceManager;
import android.provider.MediaStore;
+import android.support.annotation.IdRes;
import android.support.v7.app.AlertDialog;
import android.app.Fragment;
import android.app.PendingIntent;
@@ -639,9 +640,6 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke
private void handlePositiveActivityResult(int requestCode, final Intent data) {
switch (requestCode) {
- case REQUEST_DECRYPT_PGP:
- conversation.getAccount().getPgpDecryptionService().continueDecryption(data);
- break;
case REQUEST_TRUST_KEYS_TEXT:
final String body = this.binding.textinput.getText().toString();
Message message = new Message(conversation, body, conversation.getNextEncryption());
@@ -697,10 +695,7 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke
private void handleNegativeActivityResult(int requestCode) {
switch (requestCode) {
- case REQUEST_DECRYPT_PGP:
- // discard the message to prevent decryption being blocked
- conversation.getAccount().getPgpDecryptionService().giveUpCurrentDecryption();
- break;
+ //nothing to do for now
}
}
@@ -2276,7 +2271,11 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke
}
public static Conversation getConversation(Activity activity) {
- Fragment fragment = activity.getFragmentManager().findFragmentById(R.id.secondary_fragment);
+ return getConversation(activity, R.id.secondary_fragment);
+ }
+
+ private static Conversation getConversation(Activity activity, @IdRes int res) {
+ final Fragment fragment = activity.getFragmentManager().findFragmentById(res);
if (fragment != null && fragment instanceof ConversationFragment) {
return ((ConversationFragment) fragment).getConversation();
} else {
@@ -2284,6 +2283,14 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke
}
}
+ public static Conversation getConversationReliable(Activity activity) {
+ final Conversation conversation = getConversation(activity, R.id.secondary_fragment);
+ if (conversation != null) {
+ return conversation;
+ }
+ return getConversation(activity, R.id.main_fragment);
+ }
+
public Conversation getConversation() {
return conversation;
}