Эх сурвалжийг харах

check capability and permission to delete message

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
Marcel Hibbe 3 жил өмнө
parent
commit
cc6f582ee2

+ 3 - 0
app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt

@@ -147,6 +147,7 @@ import com.nextcloud.talk.ui.dialog.ShowReactionsDialog
 import com.nextcloud.talk.ui.recyclerview.MessageSwipeActions
 import com.nextcloud.talk.ui.recyclerview.MessageSwipeCallback
 import com.nextcloud.talk.utils.ApiUtils
+import com.nextcloud.talk.utils.AttendeePermissionsUtil
 import com.nextcloud.talk.utils.ConductorRemapping
 import com.nextcloud.talk.utils.ConductorRemapping.remapChatController
 import com.nextcloud.talk.utils.ContactUtils
@@ -2831,6 +2832,8 @@ class ChatController(args: Bundle) :
 
         if (!CapabilitiesUtil.hasSpreedFeatureCapability(conversationUser, "delete-messages")) return false
 
+        if (AttendeePermissionsUtil(currentConversation!!.permissions).canPostChatShareItemsDoReaction(conversationUser)) return true
+
         return true
     }
 

+ 13 - 2
app/src/main/java/com/nextcloud/talk/utils/AttendeePermissionsUtil.kt

@@ -1,10 +1,12 @@
 package com.nextcloud.talk.utils
 
+import com.nextcloud.talk.models.database.CapabilitiesUtil
+import com.nextcloud.talk.models.database.UserEntity
+
 /**
  * see https://nextcloud-talk.readthedocs.io/en/latest/constants/#attendee-permissions
  */
 class AttendeePermissionsUtil(flag: Int) {
-
     var isDefault: Boolean = false
     var isCustom: Boolean = false
     var canStartCall: Boolean = false
@@ -13,7 +15,7 @@ class AttendeePermissionsUtil(flag: Int) {
     var canPublishAudio: Boolean = false
     var canPublishVideo: Boolean = false
     var canPublishScreen: Boolean = false
-    var canPostChatShareItemsDoReaction: Boolean = false
+    private var canPostChatShareItemsDoReaction: Boolean = false
 
     init {
         isDefault = (flag and DEFAULT) == DEFAULT
@@ -28,7 +30,16 @@ class AttendeePermissionsUtil(flag: Int) {
             (flag and POST_CHAT_SHARE_ITEMS_DO_REACTIONS) == POST_CHAT_SHARE_ITEMS_DO_REACTIONS
     }
 
+    fun canPostChatShareItemsDoReaction(user: UserEntity): Boolean {
+        if (CapabilitiesUtil.hasSpreedFeatureCapability(user, "chat-permission")) {
+            return canPostChatShareItemsDoReaction
+        }
+        // if capability is not available the spreed version doesn't support to restrict this
+        return true
+    }
+
     companion object {
+        val TAG = AttendeePermissionsUtil::class.simpleName
         const val DEFAULT = 0
         const val CUSTOM = 1
         const val START_CALL = 2

+ 2 - 1
app/src/test/java/com/nextcloud/talk/utils/AttendeePermissionsUtilTest.kt

@@ -22,6 +22,7 @@ class AttendeePermissionsUtilTest : TestCase() {
         assertFalse(attendeePermissionsUtil.canIgnoreLobby)
         assertFalse(attendeePermissionsUtil.canPublishAudio)
         assertFalse(attendeePermissionsUtil.canPublishVideo)
-        assertFalse(attendeePermissionsUtil.canPostChatShareItemsDoReaction)
+
+        // canPostChatShareItemsDoReaction() is not possible to test because userEntity is necessary
     }
 }