AttendeePermissionsUtil.kt 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package com.nextcloud.talk.utils
  2. import com.nextcloud.talk.models.database.CapabilitiesUtil
  3. import com.nextcloud.talk.models.database.UserEntity
  4. /**
  5. * see https://nextcloud-talk.readthedocs.io/en/latest/constants/#attendee-permissions
  6. */
  7. class AttendeePermissionsUtil(flag: Int) {
  8. var isDefault: Boolean = false
  9. var isCustom: Boolean = false
  10. var canStartCall: Boolean = false
  11. var canJoinCall: Boolean = false
  12. var canIgnoreLobby: Boolean = false
  13. var canPublishAudio: Boolean = false
  14. var canPublishVideo: Boolean = false
  15. var canPublishScreen: Boolean = false
  16. private var canPostChatShareItemsDoReaction: Boolean = false
  17. init {
  18. isDefault = (flag and DEFAULT) == DEFAULT
  19. isCustom = (flag and CUSTOM) == CUSTOM
  20. canStartCall = (flag and START_CALL) == START_CALL
  21. canJoinCall = (flag and JOIN_CALL) == JOIN_CALL
  22. canIgnoreLobby = (flag and CAN_IGNORE_LOBBY) == CAN_IGNORE_LOBBY
  23. canPublishAudio = (flag and PUBLISH_AUDIO) == PUBLISH_AUDIO
  24. canPublishVideo = (flag and PUBLISH_VIDEO) == PUBLISH_VIDEO
  25. canPublishScreen = (flag and PUBLISH_SCREEN) == PUBLISH_SCREEN
  26. canPostChatShareItemsDoReaction =
  27. (flag and POST_CHAT_SHARE_ITEMS_DO_REACTIONS) == POST_CHAT_SHARE_ITEMS_DO_REACTIONS
  28. }
  29. fun canPostChatShareItemsDoReaction(user: UserEntity): Boolean {
  30. if (CapabilitiesUtil.hasSpreedFeatureCapability(user, "chat-permission")) {
  31. return canPostChatShareItemsDoReaction
  32. }
  33. // if capability is not available the spreed version doesn't support to restrict this
  34. return true
  35. }
  36. companion object {
  37. val TAG = AttendeePermissionsUtil::class.simpleName
  38. const val DEFAULT = 0
  39. const val CUSTOM = 1
  40. const val START_CALL = 2
  41. const val JOIN_CALL = 4
  42. const val CAN_IGNORE_LOBBY = 8
  43. const val PUBLISH_AUDIO = 16
  44. const val PUBLISH_VIDEO = 32
  45. const val PUBLISH_SCREEN = 64
  46. const val POST_CHAT_SHARE_ITEMS_DO_REACTIONS = 128
  47. }
  48. }