From 61c51ecf64dd3c2ac5b6fbbab8971f5dda02ccde Mon Sep 17 00:00:00 2001 From: andrew Date: Fri, 27 Oct 2023 16:24:56 +1030 Subject: [PATCH] Remove timer from message view --- .../v2/components/ExpirationTimerView.java | 2 + .../v2/messages/VisibleMessageView.kt | 81 +++++++++---------- .../main/res/layout/view_visible_message.xml | 26 +----- 3 files changed, 45 insertions(+), 64 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/components/ExpirationTimerView.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/components/ExpirationTimerView.java index 6765232c7..f7e32818b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/components/ExpirationTimerView.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/components/ExpirationTimerView.java @@ -45,6 +45,8 @@ public class ExpirationTimerView extends androidx.appcompat.widget.AppCompatImag public ExpirationTimerView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); + + setContentDescription(context.getString(R.string.AccessibilityId_timer_icon)); } public void setExpirationTime(long startedAt, long expiresIn) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/messages/VisibleMessageView.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/messages/VisibleMessageView.kt index 9538148fd..e4deafaa4 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/messages/VisibleMessageView.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/messages/VisibleMessageView.kt @@ -12,6 +12,7 @@ import android.view.Gravity import android.view.HapticFeedbackConstants import android.view.MotionEvent import android.view.View +import android.view.ViewGroup import android.widget.FrameLayout import android.widget.LinearLayout import androidx.annotation.ColorInt @@ -115,7 +116,6 @@ class VisibleMessageView : LinearLayout { binding.root.disableClipping() binding.mainContainer.disableClipping() binding.messageInnerContainer.disableClipping() - binding.messageInnerLayout.disableClipping() binding.messageContentView.root.disableClipping() } // endregion @@ -342,46 +342,45 @@ class VisibleMessageView : LinearLayout { } private fun updateExpirationTimer(message: MessageRecord) { - val container = binding.messageInnerContainer - val layout = binding.messageInnerLayout - - if (message.isOutgoing) binding.messageContentView.root.bringToFront() - else binding.expirationTimerView.bringToFront() - - layout.layoutParams = layout.layoutParams.let { it as FrameLayout.LayoutParams } - .apply { gravity = if (message.isOutgoing) Gravity.END else Gravity.START } - - val containerParams = container.layoutParams as ConstraintLayout.LayoutParams - containerParams.horizontalBias = if (message.isOutgoing) 1f else 0f - container.layoutParams = containerParams - if (message.expiresIn > 0 && !message.isPending) { - binding.expirationTimerView.setColorFilter(context.getColorFromAttr(android.R.attr.textColorPrimary)) - binding.expirationTimerView.isInvisible = false - binding.expirationTimerView.setPercentComplete(0.0f) - if (message.expireStarted > 0) { - binding.expirationTimerView.setExpirationTime(message.expireStarted, message.expiresIn) - binding.expirationTimerView.startAnimation() - if (message.expireStarted + message.expiresIn <= SnodeAPI.nowWithOffset) { - ApplicationContext.getInstance(context).expiringMessageManager.checkSchedule() - } - } else if (!message.isMediaPending) { - binding.expirationTimerView.setPercentComplete(0.0f) - binding.expirationTimerView.stopAnimation() - ThreadUtils.queue { - val expirationManager = ApplicationContext.getInstance(context).expiringMessageManager - val id = message.getId() - val mms = message.isMms - if (mms) mmsDb.markExpireStarted(id) else smsDb.markExpireStarted(id) - expirationManager.scheduleDeletion(id, mms, message.expiresIn) - } - } else { - binding.expirationTimerView.stopAnimation() - binding.expirationTimerView.setPercentComplete(0.0f) + messageContentView.layoutParams = messageContentView.layoutParams + .apply { + this as FrameLayout.LayoutParams + this.gravity = if (message.isOutgoing) Gravity.END else Gravity.START } - } else { - binding.expirationTimerView.isInvisible = true - } - container.requestLayout() + +// val container = binding.messageInnerContainer +// container.layoutParams = (container.layoutParams as ConstraintLayout.LayoutParams) +// .apply { horizontalBias = if (message.isOutgoing) 1f else 0f } + +// container.layoutParams = containerParams +// if (message.expiresIn > 0 && !message.isPending) { +// binding.expirationTimerView.setColorFilter(context.getColorFromAttr(android.R.attr.textColorPrimary)) +// binding.expirationTimerView.isInvisible = false +// binding.expirationTimerView.setPercentComplete(0.0f) +// if (message.expireStarted > 0) { +// binding.expirationTimerView.setExpirationTime(message.expireStarted, message.expiresIn) +// binding.expirationTimerView.startAnimation() +// if (message.expireStarted + message.expiresIn <= SnodeAPI.nowWithOffset) { +// ApplicationContext.getInstance(context).expiringMessageManager.checkSchedule() +// } +// } else if (!message.isMediaPending) { +// binding.expirationTimerView.setPercentComplete(0.0f) +// binding.expirationTimerView.stopAnimation() +// ThreadUtils.queue { +// val expirationManager = ApplicationContext.getInstance(context).expiringMessageManager +// val id = message.getId() +// val mms = message.isMms +// if (mms) mmsDb.markExpireStarted(id) else smsDb.markExpireStarted(id) +// expirationManager.scheduleDeletion(id, mms, message.expiresIn) +// } +// } else { +// binding.expirationTimerView.stopAnimation() +// binding.expirationTimerView.setPercentComplete(0.0f) +// } +// } else { +// binding.expirationTimerView.isInvisible = true +// } +// container.requestLayout() } private fun handleIsSelectedChanged() { @@ -404,7 +403,7 @@ class VisibleMessageView : LinearLayout { swipeToReplyIconRect.right = right swipeToReplyIconRect.bottom = bottom - if (translationX < 0 && !binding.expirationTimerView.isVisible) { + if (translationX < 0 /*&& !binding.expirationTimerView.isVisible*/) { val threshold = swipeToReplyThreshold swipeToReplyIcon.bounds = swipeToReplyIconRect swipeToReplyIcon.alpha = (255.0f * (min(abs(translationX), threshold) / threshold)).roundToInt() diff --git a/app/src/main/res/layout/view_visible_message.xml b/app/src/main/res/layout/view_visible_message.xml index c9badb415..db0119a44 100644 --- a/app/src/main/res/layout/view_visible_message.xml +++ b/app/src/main/res/layout/view_visible_message.xml @@ -115,30 +115,10 @@ app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toBottomOf="@+id/senderNameTextView"> - - - - - - - + android:layout_height="wrap_content" />