2024-02-23 23:01:53 +08:00
|
|
|
import { gql } from '@apollo/client';
|
2024-06-17 19:35:11 +08:00
|
|
|
import type { User } from './types';
|
2024-02-23 23:01:53 +08:00
|
|
|
|
2024-06-17 19:35:11 +08:00
|
|
|
interface Voice {
|
|
|
|
floor: boolean;
|
|
|
|
lastFloorTime: string;
|
2024-02-23 23:01:53 +08:00
|
|
|
}
|
2024-06-17 19:35:11 +08:00
|
|
|
|
|
|
|
export interface VideoStreamsResponse {
|
|
|
|
user_camera: {
|
|
|
|
streamId: string;
|
|
|
|
user: User;
|
|
|
|
voice?: Voice;
|
|
|
|
}[];
|
|
|
|
}
|
|
|
|
|
|
|
|
export interface GridUsersResponse {
|
|
|
|
user: User[];
|
2024-02-23 23:01:53 +08:00
|
|
|
}
|
2024-06-17 19:35:11 +08:00
|
|
|
|
|
|
|
export interface OwnVideoStreamsResponse {
|
|
|
|
user_camera: {
|
|
|
|
streamId: string;
|
|
|
|
}[];
|
|
|
|
}
|
|
|
|
|
|
|
|
export const VIDEO_STREAMS_SUBSCRIPTION = gql`
|
|
|
|
subscription VideoStreams {
|
|
|
|
user_camera {
|
|
|
|
streamId
|
|
|
|
user {
|
|
|
|
name
|
|
|
|
userId
|
|
|
|
nameSortable
|
|
|
|
pinned
|
|
|
|
away
|
|
|
|
disconnected
|
|
|
|
emoji
|
|
|
|
role
|
|
|
|
avatar
|
|
|
|
color
|
|
|
|
presenter
|
|
|
|
clientType
|
|
|
|
raiseHand
|
|
|
|
isModerator
|
|
|
|
reactionEmoji
|
|
|
|
}
|
|
|
|
voice {
|
|
|
|
floor
|
|
|
|
lastFloorTime
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2024-02-23 23:01:53 +08:00
|
|
|
`;
|
|
|
|
|
2024-06-17 19:35:11 +08:00
|
|
|
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
|
|
|
|
raiseHand
|
|
|
|
isModerator
|
|
|
|
reactionEmoji
|
|
|
|
}
|
2024-02-23 23:01:53 +08:00
|
|
|
}
|
|
|
|
`;
|
|
|
|
|
|
|
|
export default {
|
2024-06-17 19:35:11 +08:00
|
|
|
OWN_VIDEO_STREAMS_QUERY,
|
|
|
|
VIDEO_STREAMS_SUBSCRIPTION,
|
|
|
|
VIEWERS_IN_WEBCAM_COUNT_SUBSCRIPTION,
|
|
|
|
GRID_USERS_SUBSCRIPTION,
|
2024-02-23 23:01:53 +08:00
|
|
|
};
|