mirror of
https://github.com/nextcloud/talk-android
synced 2025-03-06 06:15:12 +00:00
Adjust logic for one2one rooms
Signed-off-by: Mario Danic <mario@lovelyhq.com>
This commit is contained in:
parent
20c6b7fc4a
commit
0454d13085
@ -364,13 +364,13 @@ public class ConversationInfoController extends BaseController {
|
||||
|
||||
ownOptionsCategory.setVisibility(View.VISIBLE);
|
||||
|
||||
if (!conversation.canLeave()) {
|
||||
if (!conversation.canLeave(conversationUser)) {
|
||||
leaveConversationAction.setVisibility(View.GONE);
|
||||
} else {
|
||||
leaveConversationAction.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
||||
if (!conversation.canModerate()) {
|
||||
if (!conversation.canModerate(conversationUser)) {
|
||||
deleteConversationAction.setVisibility(View.GONE);
|
||||
} else {
|
||||
deleteConversationAction.setVisibility(View.VISIBLE);
|
||||
|
@ -157,12 +157,12 @@ public class CallMenuController extends BaseController implements FlexibleAdapte
|
||||
, 98, DisplayUtils.getTintedDrawable(getResources(), R.drawable.ic_star_black_24dp, R.color.grey_600)));
|
||||
}
|
||||
|
||||
if (conversation.isNameEditable()) {
|
||||
if (conversation.isNameEditable(currentUser)) {
|
||||
menuItems.add(new MenuItem(getResources().getString(R.string.nc_rename), 2, getResources().getDrawable(R.drawable
|
||||
.ic_pencil_grey600_24dp)));
|
||||
}
|
||||
|
||||
if (conversation.canModerate() && !currentUser.hasSpreedCapabilityWithName("locked-one-to-one-rooms")) {
|
||||
if (conversation.canModerate(currentUser)) {
|
||||
if (!conversation.isPublic()) {
|
||||
menuItems.add(new MenuItem(getResources().getString(R.string.nc_make_call_public), 3, getResources().getDrawable(R.drawable
|
||||
.ic_link_grey600_24px)));
|
||||
@ -185,14 +185,14 @@ public class CallMenuController extends BaseController implements FlexibleAdapte
|
||||
if (conversation.isPublic()) {
|
||||
menuItems.add(new MenuItem(getResources().getString(R.string.nc_share_link), 7, getResources().getDrawable(R.drawable
|
||||
.ic_link_grey600_24px)));
|
||||
if (conversation.canModerate()) {
|
||||
if (conversation.canModerate(currentUser)) {
|
||||
menuItems.add(new MenuItem(getResources().getString(R.string.nc_make_call_private), 8, getResources().getDrawable(R.drawable
|
||||
.ic_group_grey600_24px)));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (conversation.canLeave()) {
|
||||
if (conversation.canLeave(currentUser)) {
|
||||
menuItems.add(new MenuItem(getResources().getString(R.string.nc_leave), 1, getResources().getDrawable(R.drawable
|
||||
.ic_close_grey600_24dp)));
|
||||
}
|
||||
|
@ -25,6 +25,7 @@ import com.bluelinelabs.logansquare.annotation.JsonField;
|
||||
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
||||
import com.nextcloud.talk.R;
|
||||
import com.nextcloud.talk.application.NextcloudTalkApplication;
|
||||
import com.nextcloud.talk.models.database.UserEntity;
|
||||
import com.nextcloud.talk.models.json.chat.ChatMessage;
|
||||
import com.nextcloud.talk.models.json.converters.EnumNotificationLevelConverter;
|
||||
import com.nextcloud.talk.models.json.converters.EnumParticipantTypeConverter;
|
||||
@ -90,17 +91,22 @@ public class Conversation {
|
||||
Participant.ParticipantType.USER_FOLLOWING_LINK.equals(participantType));
|
||||
}
|
||||
|
||||
public boolean canModerate() {
|
||||
|
||||
private boolean isLockedOneToOne(UserEntity conversationUser) {
|
||||
return (getType() == ConversationType.ROOM_TYPE_ONE_TO_ONE_CALL && conversationUser.hasSpreedCapabilityWithName("locked-one-to-one-rooms"));
|
||||
}
|
||||
|
||||
public boolean canModerate(UserEntity conversationUser) {
|
||||
return (Participant.ParticipantType.OWNER.equals(participantType)
|
||||
|| Participant.ParticipantType.MODERATOR.equals(participantType));
|
||||
|| Participant.ParticipantType.MODERATOR.equals(participantType) && !isLockedOneToOne(conversationUser));
|
||||
}
|
||||
|
||||
public boolean isNameEditable() {
|
||||
return (canModerate() && !ConversationType.ROOM_TYPE_ONE_TO_ONE_CALL.equals(type));
|
||||
public boolean isNameEditable(UserEntity conversationUser) {
|
||||
return (canModerate(conversationUser) && !ConversationType.ROOM_TYPE_ONE_TO_ONE_CALL.equals(type));
|
||||
}
|
||||
|
||||
public boolean canLeave() {
|
||||
return !canModerate() || (getType() != ConversationType.ROOM_TYPE_ONE_TO_ONE_CALL && getParticipants().size() > 1);
|
||||
public boolean canLeave(UserEntity conversationUser) {
|
||||
return !canModerate(conversationUser) || (getType() != ConversationType.ROOM_TYPE_ONE_TO_ONE_CALL && getParticipants().size() > 1);
|
||||
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user