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