diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 11bdde1518..a9e23819df 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -107,6 +107,7 @@ = Build.VERSION_CODES.KITKAT) { emojiToggle.setVisibility(View.GONE); } - attachmentAdapter = new AttachmentTypeSelectorAdapter(this); - attachmentManager = new AttachmentManager(this, this); + attachmentAdapter = new AttachmentTypeSelectorAdapter(this); + attachmentManager = new AttachmentManager(this, this); SendButtonListener sendButtonListener = new SendButtonListener(); ComposeKeyPressedListener composeKeyPressedListener = new ComposeKeyPressedListener(); @@ -750,6 +756,13 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity composeText.setOnFocusChangeListener(composeKeyPressedListener); emojiDrawer.setComposeEditText(composeText); emojiToggle.setOnClickListener(new EmojiToggleListener()); + } + + private void initializeResources() { + recipients = RecipientFactory.getRecipientsForIds(this, getIntent().getLongArrayExtra(RECIPIENTS_EXTRA), true); + threadId = getIntent().getLongExtra(THREAD_ID_EXTRA, -1); + distributionType = getIntent().getIntExtra(DISTRIBUTION_TYPE_EXTRA, ThreadDatabase.DistributionTypes.DEFAULT); + masterSecret = getIntent().getParcelableExtra(MASTER_SECRET_EXTRA); recipients.addListener(new RecipientModifiedListener() { @Override @@ -906,9 +919,8 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity if (this.threadId <= 0 || this.recipients == null || this.recipients.isEmpty()) return; - final Drafts drafts = getDraftsForCurrentState(); - - final long thisThreadId = this.threadId; + final Drafts drafts = getDraftsForCurrentState(); + final long thisThreadId = this.threadId; final MasterSecret thisMasterSecret = this.masterSecret.parcelClone(); new AsyncTask() { @@ -1001,8 +1013,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity boolean refreshFragment = (threadId != this.threadId); this.threadId = threadId; - ConversationFragment fragment = (ConversationFragment) getSupportFragmentManager() - .findFragmentById(R.id.fragment_content); + ConversationFragment fragment = getFragment(); if (fragment == null) { return; @@ -1018,6 +1029,10 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity fragment.scrollToBottom(); } + private ConversationFragment getFragment() { + return (ConversationFragment)getSupportFragmentManager().findFragmentById(R.id.fragment_content); + } + private void sendMessage() { try { final Recipients recipients = getRecipients(); diff --git a/src/org/thoughtcrime/securesms/ConversationFragment.java b/src/org/thoughtcrime/securesms/ConversationFragment.java index bb4a2a504f..64d8652ae0 100644 --- a/src/org/thoughtcrime/securesms/ConversationFragment.java +++ b/src/org/thoughtcrime/securesms/ConversationFragment.java @@ -78,6 +78,16 @@ public class ConversationFragment extends ListFragment this.listener = (ConversationFragmentListener)activity; } + public void onNewIntent() { + if (actionMode != null) { + actionMode.finish(); + } + + initializeResources(); + initializeListAdapter(); + getLoaderManager().restartLoader(0, null, this); + } + private void initializeResources() { this.masterSecret = this.getActivity().getIntent().getParcelableExtra("master_secret"); this.recipients = RecipientFactory.getRecipientsForIds(getActivity(), getActivity().getIntent().getLongArrayExtra("recipients"), true);