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()
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
@ -662,7 +662,7 @@ class ConversationInfoController(args: Bundle) :
}
override fun onError(e: Throwable) {
// unused atm
Log.e(TAG, "failed to fetch room info", e)
}
override fun onComplete() {

View File

@ -148,13 +148,24 @@ public class Conversation {
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;
}
// 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;
}
// Fallback for APIv1
return canModerate(conversationUser);
}
public String getRoomId() {
return this.roomId;

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)