From 74562432cf8a83346639eea55ab34d54403106e3 Mon Sep 17 00:00:00 2001 From: Cody Henthorne Date: Thu, 27 Jul 2023 16:45:53 -0400 Subject: [PATCH] Disable compose input when opening conversation with unregistered recipient. --- .../conversation/v2/ConversationFragment.kt | 10 ++++++++++ .../conversation/v2/DisabledInputView.kt | 16 ++++++++++++++++ 2 files changed, 26 insertions(+) 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 f248d0e9a9..7cc3b33b20 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 @@ -1047,6 +1047,7 @@ class ConversationFragment : inputReadyState.isActiveGroup == false -> disabledInputView.showAsNoLongerAMember() inputReadyState.isRequestingMember == true -> disabledInputView.showAsRequestingMember() inputReadyState.isAnnouncementGroup == true && inputReadyState.isAdmin == false -> disabledInputView.showAsAnnouncementGroupAdminsOnly() + !inputReadyState.conversationRecipient.isGroup && !inputReadyState.conversationRecipient.isRegistered -> disabledInputView.showAsInviteToSignal(requireContext(), inputReadyState.conversationRecipient) else -> inputDisabled = false } @@ -3487,6 +3488,15 @@ class ConversationFragment : GroupsV1MigrationInitiationBottomSheetDialogFragment.showForInitiation(childFragmentManager, recipient.id) } + override fun onInviteToSignal(recipient: Recipient) { + InviteActions.inviteUserToSignal( + context = requireContext(), + recipient = recipient, + appendInviteToComposer = null, + launchIntent = this@ConversationFragment::startActivity + ) + } + private fun Single>.subscribeWithShowProgress(logMessage: String): Disposable { return doOnSubscribe { binding.conversationDisabledInput.showBusy() } .doOnTerminate { binding.conversationDisabledInput.hideBusy() } diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/DisabledInputView.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/DisabledInputView.kt index 8d51906535..a83c1f91b5 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/DisabledInputView.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/DisabledInputView.kt @@ -44,6 +44,7 @@ class DisabledInputView @JvmOverloads constructor( private var noLongerAMember: View? = null private var requestingGroup: View? = null private var announcementGroupOnly: TextView? = null + private var inviteToSignal: View? = null private var currentView: View? = null @@ -125,6 +126,20 @@ class DisabledInputView @JvmOverloads constructor( ) } + fun showAsInviteToSignal(context: Context, recipient: Recipient) { + inviteToSignal = show( + existingView = inviteToSignal, + create = { inflater.inflate(R.layout.conversation_activity_sms_export_stub, this, false) }, + bind = { + findViewById(R.id.export_sms_message).text = context.getString(R.string.ConversationActivity__sms_messaging_is_no_longer_supported_in_signal_invite_s_to_to_signal_to_keep_the_conversation_here, recipient.getDisplayName(context)) + findViewById(R.id.export_sms_button).apply { + setText(R.string.ConversationActivity__invite_to_signal) + setOnClickListener { listener?.onInviteToSignal(recipient) } + } + } + ) + } + fun setWallpaperEnabled(wallpaperEnabled: Boolean) { color = ContextCompat.getColor(context, if (wallpaperEnabled) R.color.wallpaper_bubble_color else R.color.signal_colorBackground) setBackgroundColor(color) @@ -193,5 +208,6 @@ class DisabledInputView @JvmOverloads constructor( fun onBlockClicked() fun onUnblockClicked() fun onGroupV1MigrationClicked() + fun onInviteToSignal(recipient: Recipient) } }