From 757b52174412305243e218716058bbee0e92fd0d Mon Sep 17 00:00:00 2001 From: Cody Henthorne Date: Thu, 4 Jun 2026 13:59:47 -0400 Subject: [PATCH] Add additional logging around message request interactions. --- .../conversation/v2/ConversationFragment.kt | 16 +++---- .../conversation/v2/DisabledInputView.kt | 42 +++++++++++++++---- 2 files changed, 43 insertions(+), 15 deletions(-) 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 a1afdcfc1d..e795e7c3db 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 @@ -2882,10 +2882,11 @@ class ConversationFragment : requireContext(), recipient, { + val disabledInput = binding.conversationDisabledInput messageRequestViewModel .onReportSpam() - .doOnSubscribe { binding.conversationDisabledInput.showBusy() } - .doOnTerminate { binding.conversationDisabledInput.hideBusy() } + .doOnSubscribe { disabledInput.showBusy() } + .doOnTerminate { disabledInput.hideBusy() } .subscribeBy { Log.d(TAG, "report spam complete") toast(R.string.ConversationFragment_reported_as_spam) @@ -2895,10 +2896,11 @@ class ConversationFragment : null } else { Runnable { + val disabledInput = binding.conversationDisabledInput messageRequestViewModel .onBlockAndReportSpam() - .doOnSubscribe { binding.conversationDisabledInput.showBusy() } - .doOnTerminate { binding.conversationDisabledInput.hideBusy() } + .doOnSubscribe { disabledInput.showBusy() } + .doOnTerminate { disabledInput.hideBusy() } .subscribeBy { result -> when (result) { is Result.Success -> { @@ -2957,7 +2959,6 @@ class ConversationFragment : messageRequestViewModel .onAccept() .subscribeWithShowProgress("accept message request") - .addTo(disposables) } private fun onDeleteConversation() { @@ -2976,8 +2977,9 @@ class ConversationFragment : } private fun Single>.subscribeWithShowProgress(logMessage: String): Disposable { - return doOnSubscribe { binding.conversationDisabledInput.showBusy() } - .doOnTerminate { binding.conversationDisabledInput.hideBusy() } + val disabledInput = binding.conversationDisabledInput + return doOnSubscribe { disabledInput.showBusy() } + .doOnTerminate { disabledInput.hideBusy() } .subscribeBy { result -> when (result) { is Result.Success -> Log.d(TAG, "$logMessage complete") 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 4b29f0fc24..6200680ab6 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 @@ -16,6 +16,7 @@ import android.widget.TextView import androidx.core.content.ContextCompat import com.google.android.material.button.MaterialButton import com.google.android.material.dialog.MaterialAlertDialogBuilder +import org.signal.core.util.logging.Log import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.messagerequests.MessageRequestState import org.thoughtcrime.securesms.messagerequests.MessageRequestsBottomView @@ -39,6 +40,10 @@ class DisabledInputView @JvmOverloads constructor( defStyleAttr: Int = 0 ) : FrameLayout(context, attrs, defStyleAttr) { + companion object { + private val TAG = Log.tag(DisabledInputView::class.java) + } + private val inflater: LayoutInflater by lazy { LayoutInflater.from(context) } private var expiredOrUnauthorized: View? = null @@ -93,30 +98,51 @@ class DisabledInputView @JvmOverloads constructor( setWallpaperEnabled(recipient.hasWallpaper) setAcceptOnClickListener { + Log.i(TAG, "[message-request] Accept tapped. isIndividual: ${messageRequestState.isIndividual}, isGroupV2Add: ${messageRequestState.isGroupV2Add}, listener present: ${listener != null}") if (messageRequestState.isIndividual) { val signalWillNever = context.getString(R.string.MessageRequestBottomView_signal_will_never) val body = context.getString(R.string.MessageRequestBottomView_accept_request_body, signalWillNever) MaterialAlertDialogBuilder(context) .setTitle(R.string.MessageRequestBottomView_accept_request) .setMessage(SpanUtil.boldSubstring(body, signalWillNever)) - .setPositiveButton(R.string.MessageRequestBottomView_accept) { _, _ -> listener?.onAcceptMessageRequestClicked() } - .setNegativeButton(android.R.string.cancel, null) + .setCancelable(false) + .setPositiveButton(R.string.MessageRequestBottomView_accept) { _, _ -> + Log.i(TAG, "[message-request] Individual request confirmed. listener present: ${listener != null}") + listener?.onAcceptMessageRequestClicked() + } + .setNegativeButton(android.R.string.cancel) { _, _ -> Log.i(TAG, "[message-request] Individual request canceled.") } .show() } else if (messageRequestState.isGroupV2Add) { MaterialAlertDialogBuilder(context) .setTitle(R.string.MessageRequestBottomView_join_group) .setMessage(R.string.MessageRequestBottomView_review_requests_carefully_groups) - .setPositiveButton(R.string.MessageRequestBottomView_join) { _, _ -> listener?.onAcceptMessageRequestClicked() } - .setNegativeButton(android.R.string.cancel, null) + .setCancelable(false) + .setPositiveButton(R.string.MessageRequestBottomView_join) { _, _ -> + Log.i(TAG, "[message-request] Group join confirmed. listener present: ${listener != null}") + listener?.onAcceptMessageRequestClicked() + } + .setNegativeButton(android.R.string.cancel) { _, _ -> Log.i(TAG, "[message-request] Group join canceled.") } .show() } else { listener?.onAcceptMessageRequestClicked() } } - setDeleteOnClickListener { listener?.onDeleteClicked() } - setBlockOnClickListener { listener?.onBlockClicked() } - setUnblockOnClickListener { listener?.onUnblockClicked() } - setReportOnClickListener { listener?.onReportSpamClicked() } + setDeleteOnClickListener { + Log.i(TAG, "[message-request] Delete tapped. listener present: ${listener != null}") + listener?.onDeleteClicked() + } + setBlockOnClickListener { + Log.i(TAG, "[message-request] Block tapped. listener present: ${listener != null}") + listener?.onBlockClicked() + } + setUnblockOnClickListener { + Log.i(TAG, "[message-request] Unblock tapped. listener present: ${listener != null}") + listener?.onUnblockClicked() + } + setReportOnClickListener { + Log.i(TAG, "[message-request] Report tapped. listener present: ${listener != null}") + listener?.onReportSpamClicked() + } } ) }