mirror of
https://github.com/nextcloud/talk-android
synced 2025-06-21 20:49:36 +01: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);
|
ownOptionsCategory.setVisibility(View.VISIBLE);
|
||||||
|
|
||||||
if (!conversation.canLeave()) {
|
if (!conversation.canLeave(conversationUser)) {
|
||||||
leaveConversationAction.setVisibility(View.GONE);
|
leaveConversationAction.setVisibility(View.GONE);
|
||||||
} else {
|
} else {
|
||||||
leaveConversationAction.setVisibility(View.VISIBLE);
|
leaveConversationAction.setVisibility(View.VISIBLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!conversation.canModerate()) {
|
if (!conversation.canModerate(conversationUser)) {
|
||||||
deleteConversationAction.setVisibility(View.GONE);
|
deleteConversationAction.setVisibility(View.GONE);
|
||||||
} else {
|
} else {
|
||||||
deleteConversationAction.setVisibility(View.VISIBLE);
|
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)));
|
, 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
|
menuItems.add(new MenuItem(getResources().getString(R.string.nc_rename), 2, getResources().getDrawable(R.drawable
|
||||||
.ic_pencil_grey600_24dp)));
|
.ic_pencil_grey600_24dp)));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (conversation.canModerate() && !currentUser.hasSpreedCapabilityWithName("locked-one-to-one-rooms")) {
|
if (conversation.canModerate(currentUser)) {
|
||||||
if (!conversation.isPublic()) {
|
if (!conversation.isPublic()) {
|
||||||
menuItems.add(new MenuItem(getResources().getString(R.string.nc_make_call_public), 3, getResources().getDrawable(R.drawable
|
menuItems.add(new MenuItem(getResources().getString(R.string.nc_make_call_public), 3, getResources().getDrawable(R.drawable
|
||||||
.ic_link_grey600_24px)));
|
.ic_link_grey600_24px)));
|
||||||
@ -185,14 +185,14 @@ public class CallMenuController extends BaseController implements FlexibleAdapte
|
|||||||
if (conversation.isPublic()) {
|
if (conversation.isPublic()) {
|
||||||
menuItems.add(new MenuItem(getResources().getString(R.string.nc_share_link), 7, getResources().getDrawable(R.drawable
|
menuItems.add(new MenuItem(getResources().getString(R.string.nc_share_link), 7, getResources().getDrawable(R.drawable
|
||||||
.ic_link_grey600_24px)));
|
.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
|
menuItems.add(new MenuItem(getResources().getString(R.string.nc_make_call_private), 8, getResources().getDrawable(R.drawable
|
||||||
.ic_group_grey600_24px)));
|
.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
|
menuItems.add(new MenuItem(getResources().getString(R.string.nc_leave), 1, getResources().getDrawable(R.drawable
|
||||||
.ic_close_grey600_24dp)));
|
.ic_close_grey600_24dp)));
|
||||||
}
|
}
|
||||||
|
@ -25,6 +25,7 @@ import com.bluelinelabs.logansquare.annotation.JsonField;
|
|||||||
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
||||||
import com.nextcloud.talk.R;
|
import com.nextcloud.talk.R;
|
||||||
import com.nextcloud.talk.application.NextcloudTalkApplication;
|
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.chat.ChatMessage;
|
||||||
import com.nextcloud.talk.models.json.converters.EnumNotificationLevelConverter;
|
import com.nextcloud.talk.models.json.converters.EnumNotificationLevelConverter;
|
||||||
import com.nextcloud.talk.models.json.converters.EnumParticipantTypeConverter;
|
import com.nextcloud.talk.models.json.converters.EnumParticipantTypeConverter;
|
||||||
@ -90,17 +91,22 @@ public class Conversation {
|
|||||||
Participant.ParticipantType.USER_FOLLOWING_LINK.equals(participantType));
|
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)
|
return (Participant.ParticipantType.OWNER.equals(participantType)
|
||||||
|| Participant.ParticipantType.MODERATOR.equals(participantType));
|
|| Participant.ParticipantType.MODERATOR.equals(participantType) && !isLockedOneToOne(conversationUser));
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isNameEditable() {
|
public boolean isNameEditable(UserEntity conversationUser) {
|
||||||
return (canModerate() && !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) {
|
||||||
return !canModerate() || (getType() != ConversationType.ROOM_TYPE_ONE_TO_ONE_CALL && getParticipants().size() > 1);
|
return !canModerate(conversationUser) || (getType() != ConversationType.ROOM_TYPE_ONE_TO_ONE_CALL && getParticipants().size() > 1);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user