Disable compose input when opening conversation with unregistered recipient.

This commit is contained in:
Cody Henthorne
2023-07-27 16:45:53 -04:00
parent 8e3027642b
commit 74562432cf
2 changed files with 26 additions and 0 deletions

View File

@@ -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<Result<Unit, GroupChangeFailureReason>>.subscribeWithShowProgress(logMessage: String): Disposable {
return doOnSubscribe { binding.conversationDisabledInput.showBusy() }
.doOnTerminate { binding.conversationDisabledInput.hideBusy() }

View File

@@ -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<TextView>(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<MaterialButton>(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)
}
}