From 6f1a04abceb5f665c3637eee957d10893e4475cf Mon Sep 17 00:00:00 2001 From: Clark Date: Wed, 2 Aug 2023 09:47:38 -0400 Subject: [PATCH] Add dialog for when you hit edit message limit. --- .../securesms/conversation/v2/ConversationFragment.kt | 7 +++++++ .../securesms/util/MessageConstraintsUtil.kt | 11 ++++++++--- app/src/main/res/values/strings.xml | 5 +++++ 3 files changed, 20 insertions(+), 3 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 d02068d4a7..f7112fd78f 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 @@ -285,6 +285,7 @@ import org.thoughtcrime.securesms.util.DrawableUtil import org.thoughtcrime.securesms.util.FeatureFlags import org.thoughtcrime.securesms.util.FullscreenHelper import org.thoughtcrime.securesms.util.MediaUtil +import org.thoughtcrime.securesms.util.MessageConstraintsUtil import org.thoughtcrime.securesms.util.MessageConstraintsUtil.getEditMessageThresholdHours import org.thoughtcrime.securesms.util.MessageConstraintsUtil.isValidEditMessageSend import org.thoughtcrime.securesms.util.PlayStoreUtil @@ -1407,6 +1408,12 @@ class ConversationFragment : return } + if (!MessageConstraintsUtil.isWithinMaxEdits(editMessage)) { + Log.i(TAG, "Too many edits to the message") + Dialogs.showAlertDialog(requireContext(), null, resources.getQuantityString(R.plurals.ConversationActivity_edit_message_too_many_edits, MessageConstraintsUtil.MAX_EDIT_COUNT, MessageConstraintsUtil.MAX_EDIT_COUNT)) + return + } + if (!isValidEditMessageSend(editMessage, System.currentTimeMillis())) { Log.i(TAG, "Edit message no longer valid") val editDurationHours = getEditMessageThresholdHours() diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/MessageConstraintsUtil.kt b/app/src/main/java/org/thoughtcrime/securesms/util/MessageConstraintsUtil.kt index 4826d45715..de39c848b2 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/MessageConstraintsUtil.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/util/MessageConstraintsUtil.kt @@ -5,7 +5,7 @@ import org.thoughtcrime.securesms.database.model.MessageRecord import org.thoughtcrime.securesms.recipients.Recipient import org.thoughtcrime.securesms.recipients.RecipientId import java.util.concurrent.TimeUnit -import kotlin.time.Duration.Companion.hours +import kotlin.time.Duration.Companion.milliseconds /** * Helpers for determining if a message send/receive is valid for those that @@ -15,7 +15,7 @@ object MessageConstraintsUtil { private val RECEIVE_THRESHOLD = TimeUnit.DAYS.toMillis(1) private val SEND_THRESHOLD = TimeUnit.HOURS.toMillis(3) - private val MAX_EDIT_COUNT = 10 + const val MAX_EDIT_COUNT = 10 @JvmStatic fun isValidRemoteDeleteReceive(targetMessage: MessageRecord, deleteSenderId: RecipientId, deleteServerTimestamp: Long): Boolean { @@ -42,9 +42,14 @@ object MessageConstraintsUtil { return targetMessages.all { isValidRemoteDeleteSend(it, currentTime) } } + @JvmStatic + fun isWithinMaxEdits(targetMessage: MessageRecord): Boolean { + return targetMessage.revisionNumber < MAX_EDIT_COUNT + } + @JvmStatic fun getEditMessageThresholdHours(): Int { - return SEND_THRESHOLD.hours.inWholeHours.toInt() + return SEND_THRESHOLD.milliseconds.inWholeHours.toInt() } /** diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ced452af68..89dedea3bc 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -343,6 +343,11 @@ Edits can only be applied within %1$d hour from the time you sent this message. Edits can only be applied within %1$d hours from the time you sent this message. + + + Only %1$d edit can be applied to this message. + Only %1$d edits can be applied to this message. + Invalid recipient! Added to home screen