Переглянути джерело

Merge pull request #3707 from nextcloud/support-delete-messages-unlimited-capability

Implemented delete-messages-unlimited feature
Marcel Hibbe 1 рік тому
батько
коміт
a4a04eb354

+ 11 - 0
app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt

@@ -4689,12 +4689,22 @@ class ChatActivity :
     private fun isShowMessageDeletionButton(message: ChatMessage): Boolean {
         val isUserAllowedByPrivileges = userAllowedByPrivilages(message)
 
+        val isOlderThanSixHours = message
+            .createdAt
+            .before(Date(System.currentTimeMillis() - AGE_THRESHOLD_FOR_DELETE_MESSAGE))
+        val hasDeleteMessagesUnlimitedCapability = CapabilitiesUtil.hasSpreedFeatureCapability(
+            spreedCapabilities,
+            SpreedFeatures.DELETE_MESSAGES_UNLIMITED
+        )
+
         return when {
             !isUserAllowedByPrivileges -> false
+            !hasDeleteMessagesUnlimitedCapability && isOlderThanSixHours -> false
             message.systemMessageType != ChatMessage.SystemMessageType.DUMMY -> false
             message.isDeleted -> false
             !CapabilitiesUtil.hasSpreedFeatureCapability(spreedCapabilities, SpreedFeatures.DELETE_MESSAGES) -> false
             !participantPermissions.hasChatPermission() -> false
+            hasDeleteMessagesUnlimitedCapability -> true
             else -> true
         }
     }
@@ -4902,6 +4912,7 @@ class ChatActivity :
         private const val GET_ROOM_INFO_DELAY_NORMAL: Long = 30000
         private const val GET_ROOM_INFO_DELAY_LOBBY: Long = 5000
         private const val HTTP_CODE_OK: Int = 200
+        private const val AGE_THRESHOLD_FOR_DELETE_MESSAGE: Int = 21600000 // (6 hours in millis = 6 * 3600 * 1000)
         private const val REQUEST_CODE_CHOOSE_FILE: Int = 555
         private const val REQUEST_CODE_SELECT_CONTACT: Int = 666
         private const val REQUEST_CODE_MESSAGE_SEARCH: Int = 777

+ 2 - 1
app/src/main/java/com/nextcloud/talk/utils/CapabilitiesUtil.kt

@@ -66,7 +66,8 @@ enum class SpreedFeatures(val value: String) {
     LOCKED_ONE_TO_ONE("locked-one-to-one-rooms"),
     CHAT_PERMISSION("chat-permission"),
     CONVERSATION_PERMISSION("conversation-permissions"),
-    FEDERATION_V1("federation-v1")
+    FEDERATION_V1("federation-v1"),
+    DELETE_MESSAGES_UNLIMITED("delete-messages-unlimited")
 }
 
 @Suppress("TooManyFunctions")