Merge pull request #1846 from nextcloud/bugfix/noid/fixCanLeaveApiCheck

Bugfix/noid/fix can leave api check
This commit is contained in:
Marcel Hibbe 2022-03-04 09:54:16 +01:00 committed by GitHub
commit a75cb7fa5a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 19 additions and 8 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
@ -662,7 +662,7 @@ class ConversationInfoController(args: Bundle) :
} }
override fun onError(e: Throwable) { override fun onError(e: Throwable) {
// unused atm Log.e(TAG, "failed to fetch room info", e)
} }
override fun onComplete() { override fun onComplete() {

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)