check capability and permission to delete message

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
This commit is contained in:
Marcel Hibbe 2022-05-10 15:28:58 +02:00
parent d9d6af2b99
commit cc6f582ee2
No known key found for this signature in database
GPG Key ID: C793F8B59F43CE7B
3 changed files with 18 additions and 3 deletions

View File

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

View File

@ -1,10 +1,12 @@
package com.nextcloud.talk.utils 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 * see https://nextcloud-talk.readthedocs.io/en/latest/constants/#attendee-permissions
*/ */
class AttendeePermissionsUtil(flag: Int) { class AttendeePermissionsUtil(flag: Int) {
var isDefault: Boolean = false var isDefault: Boolean = false
var isCustom: Boolean = false var isCustom: Boolean = false
var canStartCall: Boolean = false var canStartCall: Boolean = false
@ -13,7 +15,7 @@ class AttendeePermissionsUtil(flag: Int) {
var canPublishAudio: Boolean = false var canPublishAudio: Boolean = false
var canPublishVideo: Boolean = false var canPublishVideo: Boolean = false
var canPublishScreen: Boolean = false var canPublishScreen: Boolean = false
var canPostChatShareItemsDoReaction: Boolean = false private var canPostChatShareItemsDoReaction: Boolean = false
init { init {
isDefault = (flag and DEFAULT) == DEFAULT 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 (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 { companion object {
val TAG = AttendeePermissionsUtil::class.simpleName
const val DEFAULT = 0 const val DEFAULT = 0
const val CUSTOM = 1 const val CUSTOM = 1
const val START_CALL = 2 const val START_CALL = 2

View File

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