From 1e39762eb17bec71e66905368cb063ac7307016a Mon Sep 17 00:00:00 2001 From: Niels Andriesse Date: Tue, 29 Jun 2021 16:01:02 +1000 Subject: [PATCH] Fix invisible attachment buttons being tappable --- .../conversation/v2/ConversationActivityV2.kt | 16 ++++++++++------ .../conversation/v2/input_bar/InputBarButton.kt | 3 ++- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationActivityV2.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationActivityV2.kt index d7c53e7f72..7a3d681664 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationActivityV2.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationActivityV2.kt @@ -51,7 +51,6 @@ import org.session.libsession.messaging.messages.visible.OpenGroupInvitation import org.session.libsession.messaging.messages.visible.VisibleMessage import org.session.libsession.messaging.open_groups.OpenGroupAPIV2 import org.session.libsession.messaging.sending_receiving.MessageSender -import org.session.libsession.messaging.sending_receiving.MessageSender.send import org.session.libsession.messaging.sending_receiving.attachments.Attachment import org.session.libsession.messaging.sending_receiving.link_preview.LinkPreview import org.session.libsession.messaging.sending_receiving.quotes.QuoteModel @@ -99,7 +98,6 @@ import org.thoughtcrime.securesms.permissions.Permissions import org.thoughtcrime.securesms.util.DateUtils import org.thoughtcrime.securesms.util.MediaUtil import org.thoughtcrime.securesms.util.SaveAttachmentTask -import org.w3c.dom.Text import java.util.* import java.util.concurrent.ExecutionException import kotlin.math.* @@ -261,18 +259,22 @@ class ConversationActivityV2 : PassphraseRequiredActionBarActivity(), InputBarDe gifButtonContainer.addView(gifButton) gifButton.layoutParams = RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT) gifButton.onUp = { showGIFPicker() } + gifButton.snIsEnabled = false // Document button documentButtonContainer.addView(documentButton) documentButton.layoutParams = RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT) documentButton.onUp = { showDocumentPicker() } + documentButton.snIsEnabled = false // Library button libraryButtonContainer.addView(libraryButton) libraryButton.layoutParams = RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT) libraryButton.onUp = { pickFromLibrary() } + libraryButton.snIsEnabled = false // Camera button cameraButtonContainer.addView(cameraButton) cameraButton.layoutParams = RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT) cameraButton.onUp = { showCamera() } + cameraButton.snIsEnabled = false } private fun restoreDraftIfNeeded() { @@ -491,11 +493,11 @@ class ConversationActivityV2 : PassphraseRequiredActionBarActivity(), InputBarDe override fun toggleAttachmentOptions() { val targetAlpha = if (isShowingAttachmentOptions) 0.0f else 1.0f - val allButtons = listOf( cameraButtonContainer, libraryButtonContainer, documentButtonContainer, gifButtonContainer) + val allButtonContainers = listOf( cameraButtonContainer, libraryButtonContainer, documentButtonContainer, gifButtonContainer) val isReversed = isShowingAttachmentOptions // Run the animation in reverse - val count = allButtons.size - allButtons.indices.forEach { index -> - val view = allButtons[index] + val count = allButtonContainers.size + allButtonContainers.indices.forEach { index -> + val view = allButtonContainers[index] val animation = ValueAnimator.ofObject(FloatEvaluator(), view.alpha, targetAlpha) animation.duration = 250L animation.startDelay = if (isReversed) 50L * (count - index.toLong()) else 50L * index.toLong() @@ -505,6 +507,8 @@ class ConversationActivityV2 : PassphraseRequiredActionBarActivity(), InputBarDe animation.start() } isShowingAttachmentOptions = !isShowingAttachmentOptions + val allButtons = listOf( cameraButton, libraryButton, documentButton, gifButton ) + allButtons.forEach { it.snIsEnabled = isShowingAttachmentOptions } } override fun showVoiceMessageUI() { diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/input_bar/InputBarButton.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/input_bar/InputBarButton.kt index 5d7eefb07a..ef1417ea42 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/input_bar/InputBarButton.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/input_bar/InputBarButton.kt @@ -32,7 +32,7 @@ class InputBarButton : RelativeLayout { @DrawableRes private var iconID = 0 private var longPressCallback: Runnable? = null private var onDownTimestamp = 0L - + var snIsEnabled = true var onPress: (() -> Unit)? = null var onMove: ((MotionEvent) -> Unit)? = null var onCancel: ((MotionEvent) -> Unit)? = null @@ -130,6 +130,7 @@ class InputBarButton : RelativeLayout { } override fun onTouchEvent(event: MotionEvent): Boolean { + if (!snIsEnabled) { return false } when (event.action) { MotionEvent.ACTION_DOWN -> onDown(event) MotionEvent.ACTION_MOVE -> onMove(event)