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.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
}

View File

@ -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

View File

@ -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
}
}