diff --git a/app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt b/app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt index 9b7b457ff..10d395472 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt +++ b/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 } diff --git a/app/src/main/java/com/nextcloud/talk/utils/AttendeePermissionsUtil.kt b/app/src/main/java/com/nextcloud/talk/utils/AttendeePermissionsUtil.kt index b21da74fe..61f8a5491 100644 --- a/app/src/main/java/com/nextcloud/talk/utils/AttendeePermissionsUtil.kt +++ b/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 diff --git a/app/src/test/java/com/nextcloud/talk/utils/AttendeePermissionsUtilTest.kt b/app/src/test/java/com/nextcloud/talk/utils/AttendeePermissionsUtilTest.kt index c3dfe268f..9ac9e23ab 100644 --- a/app/src/test/java/com/nextcloud/talk/utils/AttendeePermissionsUtilTest.kt +++ b/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 } } \ No newline at end of file