fix to support older conversationApi versions for canLeave and canDelete

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
This commit is contained in:
Marcel Hibbe 2022-03-03 17:36:58 +01:00
parent 86caa48636
commit 0079107461
No known key found for this signature in database
GPG Key ID: C793F8B59F43CE7B
3 changed files with 18 additions and 7 deletions

View File

@ -613,13 +613,13 @@ class ConversationInfoController(args: Bundle) :
setupWebinaryView() setupWebinaryView()
if (!conversation!!.canLeave()) { if (!conversation!!.canLeave(conversationUser)) {
binding.leaveConversationAction.visibility = View.GONE binding.leaveConversationAction.visibility = View.GONE
} else { } else {
binding.leaveConversationAction.visibility = View.VISIBLE binding.leaveConversationAction.visibility = View.VISIBLE
} }
if (!conversation!!.canDelete()) { if (!conversation!!.canDelete(conversationUser)) {
binding.deleteConversationAction.visibility = View.GONE binding.deleteConversationAction.visibility = View.GONE
} else { } else {
binding.deleteConversationAction.visibility = View.VISIBLE binding.deleteConversationAction.visibility = View.VISIBLE

View File

@ -148,13 +148,24 @@ public class Conversation {
return (canModerate(conversationUser) && !ConversationType.ROOM_TYPE_ONE_TO_ONE_CALL.equals(type)); return (canModerate(conversationUser) && !ConversationType.ROOM_TYPE_ONE_TO_ONE_CALL.equals(type));
} }
public boolean canLeave() { public boolean canLeave(UserEntity conversationUser) {
if (canLeaveConversation != null) {
// Available since APIv2
return canLeaveConversation; return canLeaveConversation;
} }
// Fallback for APIv1
return !canModerate(conversationUser) ||
(getType() != ConversationType.ROOM_TYPE_ONE_TO_ONE_CALL && this.participants.size() > 1);
}
public boolean canDelete() { public boolean canDelete(UserEntity conversationUser) {
if (canDeleteConversation != null) {
// Available since APIv2
return canDeleteConversation; return canDeleteConversation;
} }
// Fallback for APIv1
return canModerate(conversationUser);
}
public String getRoomId() { public String getRoomId() {
return this.roomId; return this.roomId;

View File

@ -157,7 +157,7 @@ class ConversationsListBottomDialog(
) )
binding.conversationOperationLeave.visibility = setVisibleIf( binding.conversationOperationLeave.visibility = setVisibleIf(
conversation.canLeave() && conversation.canLeave(currentUser) &&
// leaving is by api not possible for the last user with moderator permissions. // leaving is by api not possible for the last user with moderator permissions.
// for now, hide this option for all moderators. // for now, hide this option for all moderators.
!conversation.canModerate(currentUser) !conversation.canModerate(currentUser)