From b113eec9404bfa8c9bff33dbac98620c91c86c56 Mon Sep 17 00:00:00 2001 From: Nicholas Tinsley Date: Mon, 1 Jul 2024 15:05:53 -0400 Subject: [PATCH] Show "Update" action button on profile name change. --- .../v2/items/V2ConversationItemShapeTest.kt | 2 ++ .../test/InternalConversationTestFragment.kt | 4 ++++ .../securesms/BindableConversationItem.java | 1 + .../conversation/ConversationUpdateItem.java | 10 +++++++++- .../conversation/v2/ConversationFragment.kt | 14 ++++++++++++++ app/src/main/res/values/strings.xml | 2 ++ 6 files changed, 32 insertions(+), 1 deletion(-) diff --git a/app/src/androidTest/java/org/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemShapeTest.kt b/app/src/androidTest/java/org/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemShapeTest.kt index f135dab675..72e99eb08b 100644 --- a/app/src/androidTest/java/org/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemShapeTest.kt +++ b/app/src/androidTest/java/org/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemShapeTest.kt @@ -290,6 +290,8 @@ class V2ConversationItemShapeTest { override fun onChangeNumberUpdateContact(recipient: Recipient) = Unit + override fun onChangeProfileNameUpdateContact(recipient: Recipient) = Unit + override fun onCallToAction(action: String) = Unit override fun onDonateClicked() = Unit diff --git a/app/src/debug/java/org/thoughtcrime/securesms/components/settings/app/internal/conversation/test/InternalConversationTestFragment.kt b/app/src/debug/java/org/thoughtcrime/securesms/components/settings/app/internal/conversation/test/InternalConversationTestFragment.kt index fa558ea294..04339ca04e 100644 --- a/app/src/debug/java/org/thoughtcrime/securesms/components/settings/app/internal/conversation/test/InternalConversationTestFragment.kt +++ b/app/src/debug/java/org/thoughtcrime/securesms/components/settings/app/internal/conversation/test/InternalConversationTestFragment.kt @@ -231,6 +231,10 @@ class InternalConversationTestFragment : Fragment(R.layout.conversation_test_fra Toast.makeText(requireContext(), "Can't touch this.", Toast.LENGTH_SHORT).show() } + override fun onChangeProfileNameUpdateContact(recipient: Recipient) { + Toast.makeText(requireContext(), "Can't touch this.", Toast.LENGTH_SHORT).show() + } + override fun onCallToAction(action: String) { Toast.makeText(requireContext(), "Can't touch this.", Toast.LENGTH_SHORT).show() } diff --git a/app/src/main/java/org/thoughtcrime/securesms/BindableConversationItem.java b/app/src/main/java/org/thoughtcrime/securesms/BindableConversationItem.java index 04b4a86ba3..b1b78674ad 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/BindableConversationItem.java +++ b/app/src/main/java/org/thoughtcrime/securesms/BindableConversationItem.java @@ -112,6 +112,7 @@ public interface BindableConversationItem extends Unbindable, GiphyMp4Playable, void onInMemoryMessageClicked(@NonNull InMemoryMessageRecord messageRecord); void onViewGroupDescriptionChange(@Nullable GroupId groupId, @NonNull String description, boolean isMessageRequestAccepted); void onChangeNumberUpdateContact(@NonNull Recipient recipient); + void onChangeProfileNameUpdateContact(@NonNull Recipient recipient); void onCallToAction(@NonNull String action); void onDonateClicked(); void onBlockJoinRequest(@NonNull Recipient recipient); diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationUpdateItem.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationUpdateItem.java index 068787b58a..0688d27ea2 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationUpdateItem.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationUpdateItem.java @@ -580,6 +580,14 @@ public final class ConversationUpdateItem extends FrameLayout eventListener.onReportSpamLearnMoreClicked(); } }); + } else if (conversationMessage.getMessageRecord().isProfileChange() && !conversationMessage.getMessageRecord().getFromRecipient().isSelf()) { + actionButton.setText(R.string.ConversationUpdateItem_update); + actionButton.setVisibility(VISIBLE); + actionButton.setOnClickListener(v -> { + if (batchSelected.isEmpty() && eventListener != null) { + eventListener.onChangeProfileNameUpdateContact(conversationMessage.getMessageRecord().getFromRecipient()); + } + }); } else if (conversationMessage.getMessageRecord().isMessageRequestAccepted()) { actionButton.setText(R.string.ConversationUpdateItem_options); actionButton.setVisibility(VISIBLE); @@ -588,7 +596,7 @@ public final class ConversationUpdateItem extends FrameLayout eventListener.onMessageRequestAcceptOptionsClicked(); } }); - } else{ + } else { actionButton.setVisibility(GONE); actionButton.setOnClickListener(null); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt index 5bd9b76317..5754d0a954 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt @@ -22,6 +22,7 @@ import android.graphics.Rect import android.net.Uri import android.os.Bundle import android.provider.Browser +import android.provider.ContactsContract import android.provider.Settings import android.text.Editable import android.text.TextWatcher @@ -259,6 +260,7 @@ import org.thoughtcrime.securesms.mms.SlideDeck import org.thoughtcrime.securesms.mms.SlideFactory import org.thoughtcrime.securesms.mms.StickerSlide import org.thoughtcrime.securesms.mms.VideoSlide +import org.thoughtcrime.securesms.nicknames.NicknameActivity import org.thoughtcrime.securesms.notifications.v2.ConversationId import org.thoughtcrime.securesms.payments.preferences.PaymentsActivity import org.thoughtcrime.securesms.permissions.Permissions @@ -2919,6 +2921,18 @@ class ConversationFragment : startActivity(RecipientExporter.export(recipient).asAddContactIntent()) } + override fun onChangeProfileNameUpdateContact(recipient: Recipient) { + if (recipient.isSystemContact) { + startActivity( + Intent(Intent.ACTION_EDIT).apply { + setDataAndType(recipient.contactUri, ContactsContract.Contacts.CONTENT_ITEM_TYPE) + } + ) + } else { + registerForActivityResult(NicknameActivity.Contract()) {}.launch(NicknameActivity.Args(recipientId = recipient.id, focusNoteFirst = false)) + } + } + override fun onCallToAction(action: String) { if ("gift_badge" == action) { startActivity(CheckoutFlowActivity.createIntent(requireContext(), InAppPaymentType.ONE_TIME_GIFT)) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d505c3e357..6d9bbc3a85 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -2955,6 +2955,8 @@ You have removed this person, messaging them again will add them back to your list. Options + + Update Play … Pause