2024-04-20 04:34:43 +08:00
|
|
|
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;
|
|
|
|
loggedOut: boolean;
|
|
|
|
away: boolean;
|
|
|
|
disconnected: boolean;
|
|
|
|
emoji: string;
|
|
|
|
role: string;
|
|
|
|
avatar: string;
|
|
|
|
color: string;
|
|
|
|
presenter: boolean;
|
|
|
|
clientType: string;
|
|
|
|
raiseHand: boolean;
|
|
|
|
isModerator: boolean
|
|
|
|
reaction: {
|
|
|
|
reactionEmoji: 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!) {
|
|
|
|
user_camera(
|
|
|
|
where: {
|
|
|
|
userId: { _eq: $userId }
|
|
|
|
},
|
|
|
|
) {
|
|
|
|
streamId
|
|
|
|
}
|
|
|
|
}
|
|
|
|
`;
|
|
|
|
|
|
|
|
export const VIEWERS_IN_WEBCAM_COUNT_SUBSCRIPTION = gql`
|
|
|
|
subscription ViewerVideoStreams {
|
|
|
|
user_camera_aggregate(where: {
|
|
|
|
user: { role: { _eq: "VIEWER" }, presenter: { _eq: false } }
|
|
|
|
}) {
|
|
|
|
aggregate {
|
|
|
|
count
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
`;
|
|
|
|
|
2024-05-03 20:58:27 +08:00
|
|
|
export const GRID_USERS_SUBSCRIPTION = gql`
|
2024-05-04 03:35:56 +08:00
|
|
|
subscription GridUsers($exceptUserIds: [String]!, $limit: Int!) {
|
2024-05-03 20:58:27 +08:00
|
|
|
user(
|
|
|
|
where: {
|
|
|
|
userId: {
|
2024-05-04 03:35:56 +08:00
|
|
|
_nin: $exceptUserIds
|
2024-05-03 20:58:27 +08:00
|
|
|
},
|
|
|
|
},
|
|
|
|
limit: $limit
|
|
|
|
) {
|
2024-04-20 04:34:43 +08:00
|
|
|
name
|
|
|
|
userId
|
|
|
|
nameSortable
|
|
|
|
pinned
|
|
|
|
loggedOut
|
|
|
|
away
|
|
|
|
disconnected
|
|
|
|
emoji
|
|
|
|
role
|
|
|
|
avatar
|
|
|
|
color
|
|
|
|
presenter
|
|
|
|
clientType
|
|
|
|
userId
|
|
|
|
raiseHand
|
|
|
|
isModerator
|
|
|
|
reaction {
|
|
|
|
reactionEmoji
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
`;
|
|
|
|
|
2024-05-02 20:17:58 +08:00
|
|
|
export const VIDEO_STREAMS_USERS_FILTERED_SUBSCRIPTION = gql`
|
|
|
|
subscription FilteredVideoStreamsUsers($userIds: [String]!) {
|
|
|
|
user(
|
|
|
|
where: {
|
|
|
|
userId: {
|
|
|
|
_in: $userIds
|
|
|
|
}
|
|
|
|
}
|
|
|
|
) {
|
|
|
|
name
|
|
|
|
userId
|
|
|
|
nameSortable
|
|
|
|
pinned
|
|
|
|
loggedOut
|
|
|
|
away
|
|
|
|
disconnected
|
|
|
|
emoji
|
|
|
|
role
|
|
|
|
avatar
|
|
|
|
color
|
|
|
|
presenter
|
|
|
|
clientType
|
|
|
|
userId
|
|
|
|
raiseHand
|
|
|
|
isModerator
|
|
|
|
reaction {
|
|
|
|
reactionEmoji
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
`;
|
|
|
|
|
2024-04-20 04:34:43 +08:00
|
|
|
export default {
|
|
|
|
VIDEO_STREAMS_SUBSCRIPTION,
|
|
|
|
VIEWERS_IN_WEBCAM_COUNT_SUBSCRIPTION,
|
2024-05-03 20:58:27 +08:00
|
|
|
GRID_USERS_SUBSCRIPTION,
|
2024-04-20 04:34:43 +08:00
|
|
|
};
|