@@ -984,6 +984,9 @@ class ChatActivity :
984984
985985 lifecycleScope.launch {
986986 val message = chatViewModel.getMessageById(messageId.toLong()).first()
987+ if (! canEditMarkdownTaskMessage(message)) {
988+ return @launch
989+ }
987990 if (message.isTemporary) {
988991 messageInputViewModel.editTempChatMessage(message, updatedMessage)
989992 } else {
@@ -1002,6 +1005,26 @@ class ChatActivity :
10021005 }
10031006 }
10041007
1008+ private fun canEditMarkdownTaskMessage (message : ChatMessage ): Boolean {
1009+ if (message.isTemporary) {
1010+ return true
1011+ }
1012+ val isOlderThanTwentyFourHours = message.createdAt
1013+ .before(Date (System .currentTimeMillis() - AGE_THRESHOLD_FOR_EDIT_MESSAGE ))
1014+ if (isOlderThanTwentyFourHours || message.isDeleted) {
1015+ return false
1016+ }
1017+ if (! hasSpreedFeatureCapability(spreedCapabilities, SpreedFeatures .EDIT_MESSAGES )) {
1018+ return false
1019+ }
1020+ if (message.getCalculateMessageType() != ChatMessage .MessageType .REGULAR_TEXT_MESSAGE ) {
1021+ return false
1022+ }
1023+
1024+ return message.actorId == conversationUser?.userId ||
1025+ currentConversation?.let { ConversationUtils .canModerate(it, spreedCapabilities) } == true
1026+ }
1027+
10051028 private fun getMarkdownTaskEditText (message : ChatMessage , updatedMessage : String ): String {
10061029 val messageParameters = message.messageParameters ? : return updatedMessage
10071030 var result = updatedMessage
@@ -4061,5 +4084,6 @@ class ChatActivity :
40614084 private const val SEARCH_CENTER_TOLERANCE_PX = 2f
40624085 private const val SEARCH_CENTER_STABILIZE_ATTEMPTS = 8
40634086 private const val SEARCH_CENTER_STABILIZE_DELAY_MS = 200L
4087+ private const val AGE_THRESHOLD_FOR_EDIT_MESSAGE : Long = 86400000
40644088 }
40654089}
0 commit comments