bigbluebutton-Github/bigbluebutton-html5/imports/ui/components/video-provider/video-provider-graphql/queries.ts
2024-05-07 18:05:36 -03:00

166 lines
2.9 KiB
TypeScript

import { gql } from '@apollo/client';
export interface VideoStreamsResponse {
user_camera: {
streamId: string;
user: {
userId: string;
pinned: boolean;
nameSortable: string;
name: string;
isModerator: boolean;
};
voice?: {
floor: boolean;
lastFloorTime: string;
};
}[];
}
export interface VideoStreamsUsersResponse {
user: {
userId: string;
pinned: boolean;
nameSortable: string;
name: string;
away: boolean;
disconnected: boolean;
emoji: string;
role: string;
avatar: string;
color: string;
presenter: boolean;
clientType: string;
raiseHand: boolean;
isModerator: boolean;
reaction: {
reactionEmoji: string;
};
}[];
}
export interface OwnVideoStreamsResponse {
user_camera: {
streamId: string;
}[];
}
export const VIDEO_STREAMS_SUBSCRIPTION = gql`
subscription VideoStreams {
user_camera {
streamId
user {
userId
pinned
nameSortable
name
isModerator
}
voice {
floor
lastFloorTime
}
}
}
`;
export const OWN_VIDEO_STREAMS_QUERY = gql`
query OwnVideoStreams($userId: String!, $streamIdPrefix: String!) {
user_camera(
where: {
userId: { _eq: $userId },
streamId: { _like: $streamIdPrefix }
},
) {
streamId
}
}
`;
export const VIEWERS_IN_WEBCAM_COUNT_SUBSCRIPTION = gql`
subscription ViewerVideoStreams {
user_camera_aggregate(where: {
user: { role: { _eq: "VIEWER" }, presenter: { _eq: false } }
}) {
aggregate {
count
}
}
}
`;
export const GRID_USERS_SUBSCRIPTION = gql`
subscription GridUsers($exceptUserIds: [String]!, $limit: Int!) {
user(
where: {
userId: {
_nin: $exceptUserIds,
},
},
limit: $limit,
order_by: {
nameSortable: asc,
userId: asc,
},
) {
name
userId
nameSortable
pinned
away
disconnected
emoji
role
avatar
color
presenter
clientType
userId
raiseHand
isModerator
reaction {
reactionEmoji
}
}
}
`;
export const VIDEO_STREAMS_USERS_FILTERED_SUBSCRIPTION = gql`
subscription FilteredVideoStreamsUsers($userIds: [String]!) {
user(
where: {
userId: {
_in: $userIds
}
}
) {
name
userId
nameSortable
pinned
away
disconnected
emoji
role
avatar
color
presenter
clientType
userId
raiseHand
isModerator
reaction {
reactionEmoji
}
}
}
`;
export default {
OWN_VIDEO_STREAMS_QUERY,
VIDEO_STREAMS_SUBSCRIPTION,
VIEWERS_IN_WEBCAM_COUNT_SUBSCRIPTION,
GRID_USERS_SUBSCRIPTION,
VIDEO_STREAMS_USERS_FILTERED_SUBSCRIPTION,
};