Adjust logic for one2one rooms

Signed-off-by: Mario Danic <mario@lovelyhq.com>
This commit is contained in:
Mario Danic 2019-03-26 12:04:14 +01:00
parent 20c6b7fc4a
commit 0454d13085
3 changed files with 18 additions and 12 deletions

View File

@ -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);

View File

@ -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)));
}

View File

@ -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);
}