From 3fc26733ad08ef9dc0f93bc559d6d13c08723a71 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Sat, 9 Sep 2023 11:25:01 -0400 Subject: [PATCH] Add more logging to forwarding bottom sheet. --- .../contacts/paged/ContactSearchMediator.kt | 16 +++++++++++++++- .../forward/MultiselectForwardBottomSheet.kt | 11 +++++++++++ .../forward/MultiselectForwardFragment.kt | 17 +++++++++++++---- 3 files changed, 39 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ContactSearchMediator.kt b/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ContactSearchMediator.kt index 1bf592e86b..b4d5d020ed 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ContactSearchMediator.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ContactSearchMediator.kt @@ -9,6 +9,7 @@ import androidx.lifecycle.ViewModelProvider import com.google.android.material.dialog.MaterialAlertDialogBuilder import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers import io.reactivex.rxjava3.core.Observable +import org.signal.core.util.logging.Log import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.conversationlist.chatfilter.ConversationFilterRequest import org.thoughtcrime.securesms.groups.SelectionLimits @@ -50,6 +51,10 @@ class ContactSearchMediator( arbitraryRepository: ArbitraryRepository? = null ) { + companion object { + private val TAG = Log.tag(ContactSearchMediator::class.java) + } + private val queryDebouncer = Debouncer(300, TimeUnit.MILLISECONDS) private val viewModel: ContactSearchViewModel = ViewModelProvider( @@ -70,14 +75,17 @@ class ContactSearchMediator( displayOptions = displayOptions, callbacks = object : ContactSearchAdapter.ClickCallbacks { override fun onStoryClicked(view: View, story: ContactSearchData.Story, isSelected: Boolean) { + Log.d(TAG, "onStoryClicked() Recipient: ${story.recipient.id}") toggleStorySelection(view, story, isSelected) } override fun onKnownRecipientClicked(view: View, knownRecipient: ContactSearchData.KnownRecipient, isSelected: Boolean) { + Log.d(TAG, "onKnownRecipientClicked() Recipient: ${knownRecipient.recipient.id}") toggleSelection(view, knownRecipient, isSelected) } override fun onExpandClicked(expand: ContactSearchData.Expand) { + Log.d(TAG, "onExpandClicked()") viewModel.expandSection(expand.sectionKey) } }, @@ -119,6 +127,7 @@ class ContactSearchMediator( } fun setKeysSelected(keys: Set) { + Log.d(TAG, "setKeysSelected() Keys: ${keys.map { it.toString() }}") viewModel.setKeysSelected(callbacks.onBeforeContactsSelected(null, keys)) } @@ -167,9 +176,11 @@ class ContactSearchMediator( private fun toggleSelection(view: View, contactSearchData: ContactSearchData, isSelected: Boolean) { return if (isSelected) { + Log.d(TAG, "toggleSelection(OFF) ${contactSearchData.contactSearchKey}") callbacks.onContactDeselected(view, contactSearchData.contactSearchKey) viewModel.setKeysNotSelected(setOf(contactSearchData.contactSearchKey)) } else { + Log.d(TAG, "toggleSelection(ON) ${contactSearchData.contactSearchKey}") viewModel.setKeysSelected(callbacks.onBeforeContactsSelected(view, setOf(contactSearchData.contactSearchKey))) } } @@ -212,10 +223,13 @@ class ContactSearchMediator( open class SimpleCallbacks : Callbacks { override fun onBeforeContactsSelected(view: View?, contactSearchKeys: Set): Set { + Log.d(TAG, "onBeforeContactsSelected() Selecting: ${contactSearchKeys.map { it.toString() }}") return contactSearchKeys } - override fun onContactDeselected(view: View?, contactSearchKey: ContactSearchKey) = Unit + override fun onContactDeselected(view: View?, contactSearchKey: ContactSearchKey) { + Log.i(TAG, "onContactDeselected() Deselected: $contactSearchKey}") + } override fun onAdapterListCommitted(size: Int) = Unit } diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/mutiselect/forward/MultiselectForwardBottomSheet.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/mutiselect/forward/MultiselectForwardBottomSheet.kt index 30921e06d9..4ba4668114 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/mutiselect/forward/MultiselectForwardBottomSheet.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/mutiselect/forward/MultiselectForwardBottomSheet.kt @@ -8,6 +8,7 @@ import android.view.ViewGroup import androidx.fragment.app.setFragmentResult import com.google.android.material.bottomsheet.BottomSheetBehavior import com.google.android.material.bottomsheet.BottomSheetDialog +import org.signal.core.util.logging.Log import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.components.FixedRoundedCornerBottomSheetDialogFragment import org.thoughtcrime.securesms.stories.Stories @@ -19,11 +20,17 @@ class MultiselectForwardBottomSheet : FixedRoundedCornerBottomSheetDialogFragmen private var callback: Callback? = null + companion object { + private val TAG = Log.tag(MultiselectForwardBottomSheet::class.java) + } + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { return inflater.inflate(R.layout.multiselect_bottom_sheet, container, false) } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + Log.d(TAG, "onViewCreated()") + callback = findListener() if (savedInstanceState == null) { @@ -53,18 +60,22 @@ class MultiselectForwardBottomSheet : FixedRoundedCornerBottomSheetDialogFragmen override fun onDismiss(dialog: DialogInterface) { super.onDismiss(dialog) + Log.d(TAG, "onDismiss()") callback?.onDismissForwardSheet() } override fun onFinishForwardAction() { + Log.d(TAG, "onFinishForwardAction()") callback?.onFinishForwardAction() } override fun exitFlow() { + Log.d(TAG, "exitFlow()") dismissAllowingStateLoss() } override fun onSearchInputFocused() { + Log.d(TAG, "onSearchInputFocused()") (requireDialog() as BottomSheetDialog).behavior.state = BottomSheetBehavior.STATE_EXPANDED } diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/mutiselect/forward/MultiselectForwardFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/mutiselect/forward/MultiselectForwardFragment.kt index a593b82a46..065974a41f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/mutiselect/forward/MultiselectForwardFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/mutiselect/forward/MultiselectForwardFragment.kt @@ -117,6 +117,8 @@ class MultiselectForwardFragment : } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + Log.d(TAG, "onViewCreated()") + view.minimumHeight = resources.displayMetrics.heightPixels contactSearchRecycler = view.findViewById(R.id.contact_selection_list) @@ -133,7 +135,9 @@ class MultiselectForwardFragment : this::getConfiguration, object : ContactSearchMediator.SimpleCallbacks() { override fun onBeforeContactsSelected(view: View?, contactSearchKeys: Set): Set { - return filterContacts(view, contactSearchKeys) + val filtered: Set = filterContacts(view, contactSearchKeys) + Log.d(TAG, "onBeforeContactsSelected() Attempting to select: ${contactSearchKeys.map { it.toString() }}, Filtered selection: ${filtered.map { it.toString() } }") + return filtered } } ) @@ -224,7 +228,6 @@ class MultiselectForwardFragment : disposables += contactSearchMediator .getErrorEvents() .subscribe { - @Suppress("WHEN_ENUM_CAN_BE_NULL_IN_JAVA") val message: Int = when (it) { ContactSearchError.CONTACT_NOT_SELECTABLE -> R.string.MultiselectForwardFragment__only_admins_can_send_messages_to_this_group ContactSearchError.RECOMMENDED_LIMIT_REACHED -> R.string.ContactSelectionListFragment_recommended_member_limit_reached @@ -235,6 +238,8 @@ class MultiselectForwardFragment : } viewModel.state.observe(viewLifecycleOwner) { + Log.d(TAG, "State change: ${it.stage.javaClass.simpleName}") + when (it.stage) { MultiselectForwardState.Stage.Selection -> {} MultiselectForwardState.Stage.FirstConfirmation -> displayFirstSendConfirmation() @@ -272,6 +277,8 @@ class MultiselectForwardFragment : override fun onResume() { super.onResume() + Log.d(TAG, "onViewCreated()") + val now = System.currentTimeMillis() val expiringMessages = args.multiShareArgs.filter { it.expiresAt > 0L } val firstToExpire = expiringMessages.minByOrNull { it.expiresAt } @@ -331,6 +338,8 @@ class MultiselectForwardFragment : } private fun dismissWithSuccess(@PluralsRes toastTextResId: Int) { + Log.d(TAG, "dismissWithSuccess() Selected: ${contactSearchMediator.getSelectedContacts().map { it.toString() }}") + requireListener().setResult( Bundle().apply { putBoolean(RESULT_SENT, true) @@ -341,7 +350,7 @@ class MultiselectForwardFragment : } private fun dismissAndShowToast(@PluralsRes toastTextResId: Int) { - Log.d(TAG, "dismissAndShowToast") + Log.d(TAG, "dismissAndShowToast() Selected: ${contactSearchMediator.getSelectedContacts().map { it.toString() }}") val argCount = getMessageCount() @@ -363,7 +372,7 @@ class MultiselectForwardFragment : } private fun dismissWithSelection(selectedContacts: Set) { - Log.d(TAG, "dismissWithSelection") + Log.d(TAG, "dismissWithSelection() Selected: ${selectedContacts.map { it.toString() }}") callback.onFinishForwardAction() dismissibleDialog?.dismiss()