public async ValueTask <IEnumerable <PermissionLayer> > FetchPermissionsForParticipant(Participant participant) { var permissions = await _temporaryPermissionRepository.FetchTemporaryPermissions(participant); return(new List <PermissionLayer> { CommonPermissionLayers.Temporary(permissions) }); }
public async ValueTask <IEnumerable <PermissionLayer> > FetchPermissionsForParticipant(IScene scene, Participant participant, IReadOnlyList <IScene> sceneStack) { if (scene is PresenterScene presenterScene && presenterScene.PresenterParticipantId == participant.Id) { return(new List <PermissionLayer> { CommonPermissionLayers.ScenePresenter(PresenterPermissions) }); } return(Enumerable.Empty <PermissionLayer>()); }
public async ValueTask <IEnumerable <PermissionLayer> > FetchPermissionsForParticipant(IScene scene, Participant participant, IReadOnlyList <IScene> sceneStack) { if (scene is TalkingStickScene talkingStickScene) { var presenterScene = sceneStack.SkipWhile(x => x is not TalkingStickScene).Skip(1) .OfType <PresenterScene>().LastOrDefault(); var permissions = GetPermissions(participant, presenterScene, talkingStickScene); return(CommonPermissionLayers.ScenePassTheStone(permissions).Yield()); } return(Enumerable.Empty <PermissionLayer>()); }
public async ValueTask <IEnumerable <PermissionLayer> > FetchPermissionsForParticipant(Participant participant) { var(conferenceId, participantId) = participant; var result = new List <PermissionLayer> { CommonPermissionLayers.ConferenceDefault(_options.Default[PermissionType.Conference]), }; var conference = await _mediator.Send(new FindConferenceByIdRequest(conferenceId)); if (conference.Configuration.Moderators.Contains(participantId)) { result.Add(CommonPermissionLayers.ModeratorDefault(_options.Default[PermissionType.Moderator])); } return(result); }
public async ValueTask <IEnumerable <PermissionLayer> > FetchPermissionsForParticipant(Participant participant) { var(conferenceId, participantId) = participant; var conference = await _mediator.Send(new FindConferenceByIdRequest(conferenceId)); var result = new List <PermissionLayer>(); if (conference.Permissions.TryGetValue(PermissionType.Conference, out var conferencePermissions)) { result.Add(CommonPermissionLayers.Conference(conferencePermissions)); } if (conference.Configuration.Moderators.Contains(participantId) && conference.Permissions.TryGetValue(PermissionType.Moderator, out var moderatorPermissions)) { result.Add(CommonPermissionLayers.Moderator(moderatorPermissions)); } return(result); }
public async ValueTask <IEnumerable <PermissionLayer> > FetchPermissionsForParticipant(Participant participant) { var synchronizedRooms = await _mediator.FetchSynchronizedObject <SynchronizedRooms>(participant.ConferenceId, SynchronizedRooms.SyncObjId); if (!synchronizedRooms.Participants.TryGetValue(participant.Id, out var roomId)) { return(Enumerable.Empty <PermissionLayer>()); } if (roomId == synchronizedRooms.DefaultRoomId) { return(Enumerable.Empty <PermissionLayer>()); } var breakoutRoomState = await _fetchBreakoutRoomInternalState(participant.ConferenceId); if (breakoutRoomState?.OpenedRooms.Contains(roomId) != true) { return(Enumerable.Empty <PermissionLayer>()); } var result = new List <PermissionLayer>(); if (_options.Default.TryGetValue(PermissionType.BreakoutRoom, out var breakoutRoomPermissions)) { result.Add(CommonPermissionLayers.BreakoutRoomDefault(breakoutRoomPermissions)); } var conference = await _mediator.Send(new FindConferenceByIdRequest(participant.ConferenceId)); if (conference.Permissions.TryGetValue(PermissionType.BreakoutRoom, out var permissions)) { result.Add(CommonPermissionLayers.BreakoutRoom(permissions)); } return(result); }