From 20afd5bdeb3220d1c772d15477e4977da18331c7 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Wed, 5 May 2021 17:43:13 +0200 Subject: [PATCH] Hide set admin button when adding a new participant to an existing chat room, must be added first before being set as admin --- .../org/linphone/activities/main/chat/GroupChatRoomMember.kt | 4 +++- .../activities/main/chat/data/GroupInfoParticipantData.kt | 4 ++++ .../activities/main/chat/viewmodels/GroupInfoViewModel.kt | 2 +- .../main/res/layout/chat_room_group_info_participant_cell.xml | 2 +- 4 files changed, 9 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/linphone/activities/main/chat/GroupChatRoomMember.kt b/app/src/main/java/org/linphone/activities/main/chat/GroupChatRoomMember.kt index 9f8129cab..d3ff25f5d 100644 --- a/app/src/main/java/org/linphone/activities/main/chat/GroupChatRoomMember.kt +++ b/app/src/main/java/org/linphone/activities/main/chat/GroupChatRoomMember.kt @@ -26,5 +26,7 @@ data class GroupChatRoomMember( val address: Address, var isAdmin: Boolean = false, val securityLevel: ChatRoomSecurityLevel = ChatRoomSecurityLevel.ClearText, - val hasLimeX3DHCapability: Boolean = false + val hasLimeX3DHCapability: Boolean = false, + // A participant not yet added to a group can't be set admin at the same time it's added + val canBeSetAdmin: Boolean = false ) diff --git a/app/src/main/java/org/linphone/activities/main/chat/data/GroupInfoParticipantData.kt b/app/src/main/java/org/linphone/activities/main/chat/data/GroupInfoParticipantData.kt index 19bf3fbe0..c46f9b499 100644 --- a/app/src/main/java/org/linphone/activities/main/chat/data/GroupInfoParticipantData.kt +++ b/app/src/main/java/org/linphone/activities/main/chat/data/GroupInfoParticipantData.kt @@ -35,9 +35,13 @@ class GroupInfoParticipantData(private val participant: GroupChatRoomMember) : G val showAdminControls = MutableLiveData() + // A participant not yet added to a group can't be set admin at the same time it's added + val canBeSetAdmin = MutableLiveData() + init { isAdmin.value = participant.isAdmin showAdminControls.value = false + canBeSetAdmin.value = participant.canBeSetAdmin } fun setAdmin() { diff --git a/app/src/main/java/org/linphone/activities/main/chat/viewmodels/GroupInfoViewModel.kt b/app/src/main/java/org/linphone/activities/main/chat/viewmodels/GroupInfoViewModel.kt index b10e8a3d5..444ce0444 100644 --- a/app/src/main/java/org/linphone/activities/main/chat/viewmodels/GroupInfoViewModel.kt +++ b/app/src/main/java/org/linphone/activities/main/chat/viewmodels/GroupInfoViewModel.kt @@ -206,7 +206,7 @@ class GroupInfoViewModel(val chatRoom: ChatRoom?) : ErrorReportingViewModel() { if (chatRoom != null) { for (participant in chatRoom.participants) { - list.add(GroupChatRoomMember(participant.address, participant.isAdmin, participant.securityLevel)) + list.add(GroupChatRoomMember(participant.address, participant.isAdmin, participant.securityLevel, canBeSetAdmin = true)) } } diff --git a/app/src/main/res/layout/chat_room_group_info_participant_cell.xml b/app/src/main/res/layout/chat_room_group_info_participant_cell.xml index 8e6142983..287abd3b5 100644 --- a/app/src/main/res/layout/chat_room_group_info_participant_cell.xml +++ b/app/src/main/res/layout/chat_room_group_info_participant_cell.xml @@ -47,7 +47,7 @@ android:src="@drawable/chat_group_delete" />