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()
if (!conversation!!.canLeave()) {
if (!conversation!!.canLeave(conversationUser)) {
binding.leaveConversationAction.visibility = View.GONE
} else {
binding.leaveConversationAction.visibility = View.VISIBLE
}
if (!conversation!!.canDelete()) {
if (!conversation!!.canDelete(conversationUser)) {
binding.deleteConversationAction.visibility = View.GONE
} else {
binding.deleteConversationAction.visibility = View.VISIBLE

View File

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

View File

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