From 5469f232a0463efc284f20acc51b3e38ee96e81e Mon Sep 17 00:00:00 2001 From: Harris Date: Wed, 17 Aug 2022 11:06:02 +1000 Subject: [PATCH] feat: add hidden moderator and admin roles, separated as they may be used independently in future (#942) --- .../org/thoughtcrime/securesms/groups/OpenGroupManager.kt | 8 ++++++-- .../libsession/messaging/open_groups/GroupMember.kt | 2 +- .../sending_receiving/pollers/OpenGroupPoller.kt | 6 ++++++ 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/groups/OpenGroupManager.kt b/app/src/main/java/org/thoughtcrime/securesms/groups/OpenGroupManager.kt index 82ba43ab15..b61a23ce7d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/groups/OpenGroupManager.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/groups/OpenGroupManager.kt @@ -148,8 +148,12 @@ object OpenGroupManager { val standardRoles = memberDatabase.getGroupMemberRoles(groupId, standardPublicKey) val blindedRoles = blindedPublicKey?.let { memberDatabase.getGroupMemberRoles(groupId, it) } ?: emptyList() - return GroupMemberRole.ADMIN in standardRoles || GroupMemberRole.MODERATOR in standardRoles || - GroupMemberRole.ADMIN in blindedRoles || GroupMemberRole.MODERATOR in blindedRoles + // roles to check against + val moderatorRoles = listOf( + GroupMemberRole.MODERATOR, GroupMemberRole.ADMIN, + GroupMemberRole.HIDDEN_MODERATOR, GroupMemberRole.HIDDEN_ADMIN + ) + return standardRoles.any { it in moderatorRoles } || blindedRoles.any { it in moderatorRoles } } } \ No newline at end of file diff --git a/libsession/src/main/java/org/session/libsession/messaging/open_groups/GroupMember.kt b/libsession/src/main/java/org/session/libsession/messaging/open_groups/GroupMember.kt index 0559a12d5d..8335e0a2da 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/open_groups/GroupMember.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/open_groups/GroupMember.kt @@ -7,5 +7,5 @@ data class GroupMember( ) enum class GroupMemberRole { - STANDARD, ZOOMBIE, MODERATOR, ADMIN + STANDARD, ZOOMBIE, MODERATOR, ADMIN, HIDDEN_MODERATOR, HIDDEN_ADMIN } diff --git a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/pollers/OpenGroupPoller.kt b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/pollers/OpenGroupPoller.kt index ced4cbbba2..6c07450dbd 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/pollers/OpenGroupPoller.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/pollers/OpenGroupPoller.kt @@ -136,10 +136,16 @@ class OpenGroupPoller(private val server: String, private val executorService: S pollInfo.details?.moderators?.forEach { storage.addGroupMember(GroupMember(groupId, it, GroupMemberRole.MODERATOR)) } + pollInfo.details?.hiddenModerators?.forEach { + storage.addGroupMember(GroupMember(groupId, it, GroupMemberRole.HIDDEN_MODERATOR)) + } // - Admins pollInfo.details?.admins?.forEach { storage.addGroupMember(GroupMember(groupId, it, GroupMemberRole.ADMIN)) } + pollInfo.details?.hiddenAdmins?.forEach { + storage.addGroupMember(GroupMember(groupId, it, GroupMemberRole.HIDDEN_ADMIN)) + } } private fun handleMessages(