diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 95fdd1409..fb5c502b4 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -135,7 +135,6 @@ uriList = RelayUtil.getSharedUris(this); - if (uriList == null || uriList.size() == 0) return; + if (uriList == null) return; if (uriList.size() > 1) { String message = String.format(getString(R.string.share_multiple_attachments), uriList.size()); new AlertDialog.Builder(this) @@ -627,9 +643,16 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity .setPositiveButton(R.string.menu_send, (dialog, which) -> new RelayingTask(this, chatId).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR)) .show(); } else { - DcMsg message = createMessage(this, uriList.get(0)); - dcContext.setDraft(chatId, message); - initializeDraft(); + if (uriList.size() == 1) { + DcMsg message = createMessage(this, uriList.get(0)); + dcContext.setDraft(chatId, message); + } + initializeDraft().addListener(new AssertedSuccessListener() { + @Override + public void onSuccess(Boolean result) { + isShareDraftInitialized = true; + } + }); } } @@ -785,7 +808,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity }); titleView.setOnClickListener(v -> handleConversationSettings()); - titleView.setOnBackClickedListener(view -> super.onBackPressed()); + titleView.setOnBackClickedListener(view -> onBackPressed()); composeText.setOnKeyListener(composeKeyPressedListener); composeText.addTextChangedListener(composeKeyPressedListener); @@ -967,7 +990,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity protected ListenableFuture processComposeControls(int action) { return processComposeControls(action, composeText.getTextTrimmed(), - attachmentManager.isAttachmentPresent()? + attachmentManager.isAttachmentPresent() ? attachmentManager.buildSlideDeck() : null); } @@ -1192,6 +1215,11 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity fragment.scrollToBottom(); attachmentManager.cleanup(); + + if (isShareDraftInitialized) { + isShareDraftInitialized = false; + setResult(RESULT_OK); + } } @@ -1487,7 +1515,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity @Override public void handleEvent(int eventId, Object data1, Object data2) { - if (eventId==DcContext.DC_EVENT_CHAT_MODIFIED || eventId==DcContext.DC_EVENT_CONTACTS_CHANGED) { + if (eventId == DcContext.DC_EVENT_CHAT_MODIFIED || eventId == DcContext.DC_EVENT_CONTACTS_CHANGED) { dcChat = dcContext.getChat(chatId); titleView.setTitle(glideRequests, dcChat); updateReminders(); diff --git a/src/org/thoughtcrime/securesms/ConversationFragment.java b/src/org/thoughtcrime/securesms/ConversationFragment.java index d5c034fc7..06b2cbaa2 100644 --- a/src/org/thoughtcrime/securesms/ConversationFragment.java +++ b/src/org/thoughtcrime/securesms/ConversationFragment.java @@ -69,7 +69,6 @@ import org.thoughtcrime.securesms.mms.GlideApp; import org.thoughtcrime.securesms.permissions.Permissions; import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.util.Debouncer; -import org.thoughtcrime.securesms.util.RelayUtil; import org.thoughtcrime.securesms.util.SaveAttachmentTask; import org.thoughtcrime.securesms.util.StickyHeaderDecoration; import org.thoughtcrime.securesms.util.ViewUtil; @@ -79,10 +78,10 @@ import java.util.Comparator; import java.util.LinkedList; import java.util.List; import java.util.Locale; -import java.util.Objects; import java.util.Set; import static com.b44t.messenger.DcContact.DC_CONTACT_ID_SELF; +import static org.thoughtcrime.securesms.util.RelayUtil.REQUEST_RELAY; import static org.thoughtcrime.securesms.util.RelayUtil.setForwardingMessageIds; @SuppressLint("StaticFieldLeak") @@ -402,8 +401,8 @@ public class ConversationFragment extends Fragment Intent composeIntent = new Intent(getActivity(), ConversationListActivity.class); int[] msgIds = DcMsg.msgSetToIds(messageRecords); setForwardingMessageIds(composeIntent, msgIds); - startActivity(composeIntent); - Objects.requireNonNull(getActivity()).overridePendingTransition(R.anim.slide_from_right, R.anim.fade_scale_out); + startActivityForResult(composeIntent, REQUEST_RELAY); + getActivity().overridePendingTransition(R.anim.slide_from_right, R.anim.fade_scale_out); } private void handleResendMessage(final DcMsg message) { diff --git a/src/org/thoughtcrime/securesms/ConversationListActivity.java b/src/org/thoughtcrime/securesms/ConversationListActivity.java index 31137d413..66cbc118b 100644 --- a/src/org/thoughtcrime/securesms/ConversationListActivity.java +++ b/src/org/thoughtcrime/securesms/ConversationListActivity.java @@ -101,10 +101,11 @@ public class ConversationListActivity extends PassphraseRequiredActionBarActivit if (isRelayingMessageContent(this)) { title.setText(isForwarding(this) ? R.string.forward_to : R.string.chat_share_with_title); getSupportActionBar().setDisplayHomeAsUpEnabled(true); - conversationListFragment.onNewIntent(); } else { + title.setText(R.string.dc_app_name); getSupportActionBar().setDisplayHomeAsUpEnabled(false); } + conversationListFragment.onNewIntent(); invalidateOptionsMenu(); } @@ -186,7 +187,7 @@ public class ConversationListActivity extends PassphraseRequiredActionBarActivit case R.id.menu_qr_show: handleQrShow(); return true; case R.id.menu_deaddrop: handleDeaddrop(); return true; case R.id.menu_global_map: handleShowMap(); return true; - case android.R.id.home: handleResetRelaying(); return true; + case android.R.id.home: onBackPressed(); return true; } return false; @@ -253,6 +254,7 @@ public class ConversationListActivity extends PassphraseRequiredActionBarActivit if (searchToolbar.isVisible()) searchToolbar.collapse(); else if (isRelayingMessageContent(this)) { handleResetRelaying(); + finish(); } else super.onBackPressed(); } @@ -289,6 +291,8 @@ public class ConversationListActivity extends PassphraseRequiredActionBarActivit case REQUEST_RELAY: if (resultCode == RESULT_OK) { handleResetRelaying(); + setResult(RESULT_OK); + finish(); } break; default: diff --git a/src/org/thoughtcrime/securesms/ConversationListArchiveActivity.java b/src/org/thoughtcrime/securesms/ConversationListArchiveActivity.java index 76799c1e3..1fddc630d 100644 --- a/src/org/thoughtcrime/securesms/ConversationListArchiveActivity.java +++ b/src/org/thoughtcrime/securesms/ConversationListArchiveActivity.java @@ -13,6 +13,7 @@ import static org.thoughtcrime.securesms.ConversationActivity.LAST_SEEN_EXTRA; import static org.thoughtcrime.securesms.util.RelayUtil.REQUEST_RELAY; import static org.thoughtcrime.securesms.util.RelayUtil.acquireRelayMessageContent; import static org.thoughtcrime.securesms.util.RelayUtil.isRelayingMessageContent; +import static org.thoughtcrime.securesms.util.RelayUtil.isSharing; public class ConversationListArchiveActivity extends PassphraseRequiredActionBarActivity implements ConversationListFragment.ConversationSelectedListener @@ -31,7 +32,7 @@ public class ConversationListArchiveActivity extends PassphraseRequiredActionBar protected void onCreate(Bundle icicle, boolean ready) { getSupportActionBar().setDisplayHomeAsUpEnabled(true); if (isRelayingMessageContent(this)) { - getSupportActionBar().setTitle(R.string.forward_to); + getSupportActionBar().setTitle(isSharing(this) ? R.string.chat_share_with_title : R.string.forward_to); getSupportActionBar().setSubtitle(R.string.chat_archived_chats_title); } else { getSupportActionBar().setTitle(R.string.chat_archived_chats_title); @@ -55,7 +56,7 @@ public class ConversationListArchiveActivity extends PassphraseRequiredActionBar super.onOptionsItemSelected(item); switch (item.getItemId()) { - case R.id.home: super.onBackPressed(); return true; + case android.R.id.home: super.onBackPressed(); return true; } return false;