From 555104aff063b5545565b7720badc053e7be11ef Mon Sep 17 00:00:00 2001 From: Alan Evans Date: Thu, 18 Jun 2020 14:00:06 -0300 Subject: [PATCH] Make message button navigate back if launched from the conversation. --- .../conversation/ConversationActivity.java | 2 +- .../ManageRecipientActivity.java | 15 +++++++++++++-- .../ManageRecipientFragment.java | 19 ++++++++++++++----- 3 files changed, 28 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationActivity.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationActivity.java index 64c858b9e7..811751f091 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationActivity.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationActivity.java @@ -1042,7 +1042,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity if (isInMessageRequest()) return; - Intent intent = ManageRecipientActivity.newIntent(this, recipient.getId()); + Intent intent = ManageRecipientActivity.newIntentFromConversation(this, recipient.getId()); startActivitySceneTransition(intent, titleView.findViewById(R.id.contact_photo_image), "avatar"); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/recipients/ui/managerecipient/ManageRecipientActivity.java b/app/src/main/java/org/thoughtcrime/securesms/recipients/ui/managerecipient/ManageRecipientActivity.java index 7f73abf278..eef2ea34c7 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/recipients/ui/managerecipient/ManageRecipientActivity.java +++ b/app/src/main/java/org/thoughtcrime/securesms/recipients/ui/managerecipient/ManageRecipientActivity.java @@ -18,7 +18,8 @@ import org.thoughtcrime.securesms.util.DynamicTheme; public class ManageRecipientActivity extends PassphraseRequiredActionBarActivity { - private static final String RECIPIENT_ID = "RECIPIENT_ID"; + private static final String RECIPIENT_ID = "RECIPIENT_ID"; + private static final String FROM_CONVERSATION = "FROM_CONVERSATION"; private final DynamicTheme dynamicTheme = new DynamicNoActionBarTheme(); @@ -28,6 +29,16 @@ public class ManageRecipientActivity extends PassphraseRequiredActionBarActivity return intent; } + /** + * Makes the message button behave like back. + */ + public static Intent newIntentFromConversation(@NonNull Context context, @NonNull RecipientId recipientId) { + Intent intent = new Intent(context, ManageRecipientActivity.class); + intent.putExtra(RECIPIENT_ID, recipientId); + intent.putExtra(FROM_CONVERSATION, true); + return intent; + } + public static @Nullable Bundle createTransitionBundle(@NonNull Context activityContext, @NonNull View from) { if (activityContext instanceof Activity) { return ActivityOptionsCompat.makeSceneTransitionAnimation((Activity) activityContext, from, "avatar").toBundle(); @@ -47,7 +58,7 @@ public class ManageRecipientActivity extends PassphraseRequiredActionBarActivity setContentView(R.layout.recipient_manage_activity); if (savedInstanceState == null) { getSupportFragmentManager().beginTransaction() - .replace(R.id.container, ManageRecipientFragment.newInstance(getIntent().getParcelableExtra(RECIPIENT_ID))) + .replace(R.id.container, ManageRecipientFragment.newInstance(getIntent().getParcelableExtra(RECIPIENT_ID), getIntent().getBooleanExtra(FROM_CONVERSATION, false))) .commitNow(); } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/recipients/ui/managerecipient/ManageRecipientFragment.java b/app/src/main/java/org/thoughtcrime/securesms/recipients/ui/managerecipient/ManageRecipientFragment.java index 1ccb17726f..c31a6ea2ee 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/recipients/ui/managerecipient/ManageRecipientFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/recipients/ui/managerecipient/ManageRecipientFragment.java @@ -55,7 +55,8 @@ import java.util.Locale; import java.util.Objects; public class ManageRecipientFragment extends Fragment { - private static final String RECIPIENT_ID = "RECIPIENT_ID"; + private static final String RECIPIENT_ID = "RECIPIENT_ID"; + private static final String FROM_CONVERSATION = "FROM_CONVERSATION"; private static final int RETURN_FROM_MEDIA = 405; @@ -93,11 +94,12 @@ public class ManageRecipientFragment extends Fragment { private View insecureCallButton; private View secureVideoCallButton; - static ManageRecipientFragment newInstance(@NonNull RecipientId recipientId) { + static ManageRecipientFragment newInstance(@NonNull RecipientId recipientId, boolean fromConversation) { ManageRecipientFragment fragment = new ManageRecipientFragment(); Bundle args = new Bundle(); args.putParcelable(RECIPIENT_ID, recipientId); + args.putBoolean(FROM_CONVERSATION, fromConversation); fragment.setArguments(args); return fragment; @@ -149,8 +151,9 @@ public class ManageRecipientFragment extends Fragment { public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); - RecipientId recipientId = Objects.requireNonNull(requireArguments().getParcelable(RECIPIENT_ID)); - ManageRecipientViewModel.Factory factory = new ManageRecipientViewModel.Factory(recipientId); + RecipientId recipientId = Objects.requireNonNull(requireArguments().getParcelable(RECIPIENT_ID)); + boolean fromConversation = requireArguments().getBoolean(FROM_CONVERSATION, false); + ManageRecipientViewModel.Factory factory = new ManageRecipientViewModel.Factory(recipientId); viewModel = ViewModelProviders.of(requireActivity(), factory).get(ManageRecipientViewModel.class); @@ -227,7 +230,13 @@ public class ManageRecipientFragment extends Fragment { unblock.setVisibility(canBlock ? View.GONE : View.VISIBLE); }); - messageButton.setOnClickListener(v -> viewModel.onMessage(requireActivity())); + messageButton.setOnClickListener(v -> { + if (fromConversation) { + requireActivity().onBackPressed(); + } else { + viewModel.onMessage(requireActivity()); + } + }); secureCallButton.setOnClickListener(v -> viewModel.onSecureCall(requireActivity())); insecureCallButton.setOnClickListener(v -> viewModel.onInsecureCall(requireActivity())); secureVideoCallButton.setOnClickListener(v -> viewModel.onSecureVideoCall(requireActivity()));