mediasfu-shared 1.0.1 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -21
- package/README.md +103 -222
- package/dist/index.cjs +7500 -2163
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +4203 -273
- package/dist/index.js +7521 -2184
- package/dist/index.js.map +1 -1
- package/package.json +85 -78
- package/src/ProducerClient/producerClientEmits/joinRoomClient.ts +57 -0
- package/src/ProducerClient/producerClientEmits/updateRoomParametersClient.ts +401 -0
- package/src/consumers/addVideosGrid.ts +3 -2
- package/src/consumers/changeVids.ts +111 -41
- package/src/consumers/checkPermission.ts +35 -1
- package/src/consumers/connectRecvTransport.ts +42 -1
- package/src/consumers/consumerResume.ts +2 -2
- package/src/consumers/dispStreams.ts +83 -37
- package/src/consumers/frameworkConsumerContract.ts +6 -0
- package/src/consumers/generatePageContent.ts +24 -10
- package/src/consumers/getPipedProducersAlt.ts +112 -16
- package/src/consumers/gridLayout/addVideosGrid.engine.ts +42 -0
- package/src/consumers/gridLayout/prepopulateUserMedia.engine.ts +444 -0
- package/src/consumers/mixStreams.ts +45 -14
- package/src/consumers/onScreenChanges.ts +25 -10
- package/src/consumers/prepopulateUserMedia.ts +3 -2
- package/src/consumers/processConsumerTransports.ts +68 -23
- package/src/consumers/processConsumerTransportsAudio.ts +53 -16
- package/src/consumers/reUpdateInter.ts +61 -21
- package/src/consumers/readjust.ts +30 -14
- package/src/consumers/reorderStreams.ts +76 -42
- package/src/consumers/resumePauseAudioStreams.ts +66 -17
- package/src/consumers/resumePauseStreams.ts +53 -10
- package/src/consumers/socketReceiveMethods/joinConsumeRoom.ts +8 -0
- package/src/consumers/socketReceiveMethods/newPipeProducer.ts +114 -0
- package/src/consumers/socketReceiveMethods/producerClosed.ts +13 -0
- package/src/consumers/streamSuccessScreen.ts +2 -2
- package/src/consumers/streamSuccessVideo.ts +5 -0
- package/src/consumers/translationConsumerSwitch.ts +299 -0
- package/src/index.ts +85 -1
- package/src/methods/coHostMethods/modifyCoHostSettings.ts +9 -9
- package/src/methods/displaySettings/modifyDisplaySettings.ts +5 -0
- package/src/methods/index.ts +66 -0
- package/src/methods/message/sendMessage.ts +12 -29
- package/src/methods/panelists/focusPanelists.ts +83 -0
- package/src/methods/panelists/index.ts +3 -0
- package/src/methods/panelists/launchPanelists.ts +13 -0
- package/src/methods/panelists/updatePanelists.ts +135 -0
- package/src/methods/permissions/index.ts +3 -0
- package/src/methods/permissions/launchPermissions.ts +13 -0
- package/src/methods/permissions/updateParticipantPermission.ts +127 -0
- package/src/methods/permissions/updatePermissionConfig.ts +52 -0
- package/src/methods/polls/pollUpdated.ts +88 -0
- package/src/methods/recording/confirmRecording.ts +15 -12
- package/src/methods/recording/recordResumeTimer.ts +2 -2
- package/src/methods/recording/recordStartTimer.ts +2 -2
- package/src/methods/recording/timeLeftRecording.ts +25 -0
- package/src/methods/requests/hostRequestResponse.ts +153 -0
- package/src/methods/settings/modifySettings.ts +17 -17
- package/src/methods/socketReceive/allMembers.ts +450 -0
- package/src/methods/socketReceive/allMembersRest.ts +480 -0
- package/src/methods/socketReceive/allWaitingRoomMembers.ts +35 -0
- package/src/methods/socketReceive/banParticipant.ts +73 -0
- package/src/methods/socketReceive/controlMediaHost.ts +280 -0
- package/src/methods/socketReceive/disconnect.ts +40 -0
- package/src/methods/socketReceive/disconnectUserSelf.ts +56 -0
- package/src/methods/socketReceive/getDomains.ts +112 -0
- package/src/methods/socketReceive/meetingEnded.ts +49 -0
- package/src/methods/socketReceive/meetingStillThere.ts +26 -0
- package/src/methods/socketReceive/panelistReceiveMethods.ts +195 -0
- package/src/methods/socketReceive/participantRequested.ts +48 -0
- package/src/methods/socketReceive/permissionReceiveMethods.ts +59 -0
- package/src/methods/socketReceive/personJoined.ts +35 -0
- package/src/methods/socketReceive/producerMediaClosed.ts +223 -0
- package/src/methods/socketReceive/producerMediaPaused.ts +267 -0
- package/src/methods/socketReceive/producerMediaResumed.ts +157 -0
- package/src/methods/socketReceive/reInitiateRecording.ts +53 -0
- package/src/methods/socketReceive/receiveMessage.ts +117 -0
- package/src/methods/socketReceive/recordingNotice.ts +286 -0
- package/src/methods/socketReceive/roomRecordParams.ts +122 -0
- package/src/methods/socketReceive/screenProducerId.ts +61 -0
- package/src/methods/socketReceive/startRecords.ts +46 -0
- package/src/methods/socketReceive/stoppedRecording.ts +44 -0
- package/src/methods/socketReceive/translationReceiveMethods.ts +581 -0
- package/src/methods/socketReceive/updateConsumingDomains.ts +128 -0
- package/src/methods/socketReceive/updateMediaSettings.ts +45 -0
- package/src/methods/socketReceive/updatedCoHost.ts +75 -0
- package/src/methods/socketReceive/userWaiting.ts +45 -0
- package/src/methods/stream/clickAudio.ts +380 -0
- package/src/methods/stream/clickChat.ts +36 -0
- package/src/methods/stream/clickScreenShare.ts +173 -0
- package/src/methods/stream/clickVideo.ts +22 -5
- package/src/methods/stream/index.ts +1 -0
- package/src/methods/utils/SoundPlayer.ts +31 -0
- package/src/methods/utils/checkLimitsAndMakeRequest.ts +156 -2
- package/src/methods/utils/createResponseJoinRoom.ts +47 -0
- package/src/methods/utils/createRoomOnMediaSFU.ts +160 -0
- package/src/methods/utils/formatNumber.ts +42 -0
- package/src/methods/utils/generateRandomMessages.ts +70 -0
- package/src/methods/utils/generateRandomParticipants.ts +100 -0
- package/src/methods/utils/generateRandomPolls.ts +43 -0
- package/src/methods/utils/generateRandomRequestList.ts +51 -0
- package/src/methods/utils/generateRandomWaitingRoomList.ts +17 -0
- package/src/methods/utils/getModalPosition.ts +23 -0
- package/src/methods/utils/getOverlayPosition.ts +37 -0
- package/src/methods/utils/initialValuesState.ts +405 -0
- package/src/methods/utils/joinRoomOnMediaSFU.ts +124 -0
- package/src/methods/utils/liveSubtitle.ts +107 -0
- package/src/methods/utils/meetingTimeRemaining.ts +33 -0
- package/src/methods/utils/meetingTimer/startMeetingProgressTimer.ts +72 -0
- package/src/methods/utils/producer/aParams.ts +10 -0
- package/src/methods/utils/producer/hParams.ts +26 -0
- package/src/methods/utils/producer/screenParams.ts +13 -0
- package/src/methods/utils/producer/vParams.ts +26 -0
- package/src/methods/utils/producer/videoCaptureConstraints.ts +65 -0
- package/src/methods/utils/resolveMediaSFURoomApi.ts +16 -0
- package/src/methods/utils/sleep.ts +24 -0
- package/src/methods/utils/translationLanguages.ts +308 -0
- package/src/methods/utils/webrtc.ts +44 -0
- package/src/methods/welcome/handleWelcomeRequest.ts +11 -2
- package/src/methods/welcome/index.ts +5 -1
- package/src/methods/whiteboard/captureCanvasStream.ts +128 -0
- package/src/producers/producerEmits/joinConRoom.ts +2 -2
- package/src/producers/producerEmits/joinLocalRoom.ts +240 -0
- package/src/producers/producerEmits/joinRoom.ts +129 -0
- package/src/types/shared-base-types.ts +14 -3
- package/src/types/types.ts +255 -0
|
@@ -0,0 +1,480 @@
|
|
|
1
|
+
import type { Socket } from 'socket.io-client';
|
|
2
|
+
import type {
|
|
3
|
+
ConnectIpsParameters,
|
|
4
|
+
ConnectLocalIpsParameters,
|
|
5
|
+
OnScreenChangesParameters,
|
|
6
|
+
ReorderStreamsParameters,
|
|
7
|
+
Settings,
|
|
8
|
+
} from '../../types/types';
|
|
9
|
+
|
|
10
|
+
export interface AllMembersRestParticipantLike {
|
|
11
|
+
id?: string | number;
|
|
12
|
+
isBanned?: boolean;
|
|
13
|
+
isSuspended?: boolean;
|
|
14
|
+
name?: string | null;
|
|
15
|
+
audioID?: string | null;
|
|
16
|
+
videoID?: string | null;
|
|
17
|
+
ScreenID?: string | null;
|
|
18
|
+
ScreenOn?: boolean;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export interface AllMembersRestRequestLike {
|
|
22
|
+
id?: string | number;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export interface AllMembersRestOnScreenChangesOptions<TParameters = unknown> {
|
|
26
|
+
parameters: TParameters;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export type AllMembersRestOnScreenChangesType<TParameters = unknown> = (
|
|
30
|
+
options: AllMembersRestOnScreenChangesOptions<TParameters>,
|
|
31
|
+
) => Promise<unknown>;
|
|
32
|
+
|
|
33
|
+
export interface AllMembersRestConnectIpsOptions<
|
|
34
|
+
TParameters = unknown,
|
|
35
|
+
TConsumeSocket = unknown,
|
|
36
|
+
> {
|
|
37
|
+
consume_sockets: TConsumeSocket[];
|
|
38
|
+
remIP: string[];
|
|
39
|
+
parameters: TParameters;
|
|
40
|
+
apiUserName: string;
|
|
41
|
+
apiKey: string;
|
|
42
|
+
apiToken: string;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export type AllMembersRestConnectIpsType<
|
|
46
|
+
TParameters = unknown,
|
|
47
|
+
TConsumeSocket = unknown,
|
|
48
|
+
> = (
|
|
49
|
+
options: AllMembersRestConnectIpsOptions<TParameters, TConsumeSocket>,
|
|
50
|
+
) => Promise<[TConsumeSocket[], string[]]>;
|
|
51
|
+
|
|
52
|
+
export interface AllMembersRestConnectLocalIpsOptions<
|
|
53
|
+
TParameters = unknown,
|
|
54
|
+
TSocket = Socket,
|
|
55
|
+
> {
|
|
56
|
+
socket: TSocket;
|
|
57
|
+
parameters: TParameters;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export type AllMembersRestConnectLocalIpsType<
|
|
61
|
+
TParameters = unknown,
|
|
62
|
+
TSocket = Socket,
|
|
63
|
+
> = (
|
|
64
|
+
options: AllMembersRestConnectLocalIpsOptions<TParameters, TSocket>,
|
|
65
|
+
) => Promise<unknown>;
|
|
66
|
+
|
|
67
|
+
export interface AllMembersRestSleepOptions {
|
|
68
|
+
ms: number;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export type AllMembersRestSleepType = (
|
|
72
|
+
options: AllMembersRestSleepOptions,
|
|
73
|
+
) => Promise<unknown>;
|
|
74
|
+
|
|
75
|
+
export interface AllMembersRestReorderStreamsOptions<TParameters = unknown> {
|
|
76
|
+
add: boolean;
|
|
77
|
+
screenChanged?: boolean;
|
|
78
|
+
parameters: TParameters;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
export type AllMembersRestReorderStreamsType<TParameters = unknown> = (
|
|
82
|
+
options: AllMembersRestReorderStreamsOptions<TParameters>,
|
|
83
|
+
) => Promise<unknown>;
|
|
84
|
+
|
|
85
|
+
export interface AllMembersRestParameters<
|
|
86
|
+
TParticipantSummary extends AllMembersRestParticipantLike = AllMembersRestParticipantLike,
|
|
87
|
+
TParticipant extends AllMembersRestParticipantLike = AllMembersRestParticipantLike,
|
|
88
|
+
TRequest extends AllMembersRestRequestLike = AllMembersRestRequestLike,
|
|
89
|
+
TCoHostResponsibility = unknown,
|
|
90
|
+
TConsumeSocket = unknown,
|
|
91
|
+
TSocket = Socket,
|
|
92
|
+
TOnScreenChangesParameters = OnScreenChangesParameters,
|
|
93
|
+
TConnectIpsParameters = ConnectIpsParameters,
|
|
94
|
+
TReorderStreamsParameters = ReorderStreamsParameters,
|
|
95
|
+
TConnectLocalIpsParameters = ConnectLocalIpsParameters,
|
|
96
|
+
TAllParameters extends TOnScreenChangesParameters &
|
|
97
|
+
TConnectIpsParameters &
|
|
98
|
+
TReorderStreamsParameters &
|
|
99
|
+
TConnectLocalIpsParameters = TOnScreenChangesParameters &
|
|
100
|
+
TConnectIpsParameters &
|
|
101
|
+
TReorderStreamsParameters &
|
|
102
|
+
TConnectLocalIpsParameters,
|
|
103
|
+
> {
|
|
104
|
+
participantsAll: TParticipantSummary[];
|
|
105
|
+
participants: TParticipant[];
|
|
106
|
+
dispActiveNames: string[];
|
|
107
|
+
requestList: TRequest[];
|
|
108
|
+
coHost: string;
|
|
109
|
+
coHostResponsibility: TCoHostResponsibility[];
|
|
110
|
+
lock_screen: boolean;
|
|
111
|
+
firstAll: boolean;
|
|
112
|
+
membersReceived: boolean;
|
|
113
|
+
roomRecvIPs: string[];
|
|
114
|
+
deferScreenReceived: boolean;
|
|
115
|
+
screenId?: string;
|
|
116
|
+
shareScreenStarted: boolean;
|
|
117
|
+
meetingDisplayType: string;
|
|
118
|
+
audioSetting: string;
|
|
119
|
+
videoSetting: string;
|
|
120
|
+
screenshareSetting: string;
|
|
121
|
+
chatSetting: string;
|
|
122
|
+
socket: TSocket;
|
|
123
|
+
updateParticipantsAll: (participantsAll: TParticipantSummary[]) => void;
|
|
124
|
+
updateParticipants: (participants: TParticipant[]) => void;
|
|
125
|
+
updateRequestList: (requestList: TRequest[]) => void;
|
|
126
|
+
updateCoHost: (coHost: string) => void;
|
|
127
|
+
updateCoHostResponsibility: (
|
|
128
|
+
coHostResponsibility: TCoHostResponsibility[],
|
|
129
|
+
) => void;
|
|
130
|
+
updateFirstAll: (firstAll: boolean) => void;
|
|
131
|
+
updateMembersReceived: (membersReceived: boolean) => void;
|
|
132
|
+
updateDeferScreenReceived: (deferScreenReceived: boolean) => void;
|
|
133
|
+
updateShareScreenStarted: (shareScreenStarted: boolean) => void;
|
|
134
|
+
updateAudioSetting: (audioSetting: string) => void;
|
|
135
|
+
updateVideoSetting: (videoSetting: string) => void;
|
|
136
|
+
updateScreenshareSetting: (screenshareSetting: string) => void;
|
|
137
|
+
updateChatSetting: (chatSetting: string) => void;
|
|
138
|
+
updateConsume_sockets: (consume_sockets: TConsumeSocket[]) => void;
|
|
139
|
+
updateRoomRecvIPs: (ips: string[]) => void;
|
|
140
|
+
updateIsLoadingModalVisible: (visible: boolean) => void;
|
|
141
|
+
onScreenChanges: AllMembersRestOnScreenChangesType<TOnScreenChangesParameters>;
|
|
142
|
+
connectIps: AllMembersRestConnectIpsType<TConnectIpsParameters, TConsumeSocket>;
|
|
143
|
+
connectLocalIps?: AllMembersRestConnectLocalIpsType<TConnectLocalIpsParameters, TSocket>;
|
|
144
|
+
sleep: AllMembersRestSleepType;
|
|
145
|
+
reorderStreams: AllMembersRestReorderStreamsType<TReorderStreamsParameters>;
|
|
146
|
+
getUpdatedAllParams: () =>
|
|
147
|
+
AllMembersRestParameters<
|
|
148
|
+
TParticipantSummary,
|
|
149
|
+
TParticipant,
|
|
150
|
+
TRequest,
|
|
151
|
+
TCoHostResponsibility,
|
|
152
|
+
TConsumeSocket,
|
|
153
|
+
TSocket,
|
|
154
|
+
TOnScreenChangesParameters,
|
|
155
|
+
TConnectIpsParameters,
|
|
156
|
+
TReorderStreamsParameters,
|
|
157
|
+
TConnectLocalIpsParameters,
|
|
158
|
+
TAllParameters
|
|
159
|
+
> & TAllParameters;
|
|
160
|
+
[key: string]: any;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
export interface AllMembersRestOptions<
|
|
164
|
+
TParticipantSummary extends AllMembersRestParticipantLike = AllMembersRestParticipantLike,
|
|
165
|
+
TParticipant extends AllMembersRestParticipantLike = AllMembersRestParticipantLike,
|
|
166
|
+
TRequest extends AllMembersRestRequestLike = AllMembersRestRequestLike,
|
|
167
|
+
TCoHostResponsibility = unknown,
|
|
168
|
+
TConsumeSocket = unknown,
|
|
169
|
+
TSocket = Socket,
|
|
170
|
+
TOnScreenChangesParameters = OnScreenChangesParameters,
|
|
171
|
+
TConnectIpsParameters = ConnectIpsParameters,
|
|
172
|
+
TReorderStreamsParameters = ReorderStreamsParameters,
|
|
173
|
+
TConnectLocalIpsParameters = ConnectLocalIpsParameters,
|
|
174
|
+
TAllParameters extends TOnScreenChangesParameters &
|
|
175
|
+
TConnectIpsParameters &
|
|
176
|
+
TReorderStreamsParameters &
|
|
177
|
+
TConnectLocalIpsParameters = TOnScreenChangesParameters &
|
|
178
|
+
TConnectIpsParameters &
|
|
179
|
+
TReorderStreamsParameters &
|
|
180
|
+
TConnectLocalIpsParameters,
|
|
181
|
+
> {
|
|
182
|
+
members: TParticipant[];
|
|
183
|
+
settings: Settings;
|
|
184
|
+
coHoste?: string;
|
|
185
|
+
coHostRes?: TCoHostResponsibility[];
|
|
186
|
+
parameters:
|
|
187
|
+
AllMembersRestParameters<
|
|
188
|
+
TParticipantSummary,
|
|
189
|
+
TParticipant,
|
|
190
|
+
TRequest,
|
|
191
|
+
TCoHostResponsibility,
|
|
192
|
+
TConsumeSocket,
|
|
193
|
+
TSocket,
|
|
194
|
+
TOnScreenChangesParameters,
|
|
195
|
+
TConnectIpsParameters,
|
|
196
|
+
TReorderStreamsParameters,
|
|
197
|
+
TConnectLocalIpsParameters,
|
|
198
|
+
TAllParameters
|
|
199
|
+
> & TAllParameters;
|
|
200
|
+
consume_sockets: TConsumeSocket[];
|
|
201
|
+
apiUserName: string;
|
|
202
|
+
apiKey: string;
|
|
203
|
+
apiToken: string;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
export type AllMembersRestType<
|
|
207
|
+
TParticipantSummary extends AllMembersRestParticipantLike = AllMembersRestParticipantLike,
|
|
208
|
+
TParticipant extends AllMembersRestParticipantLike = AllMembersRestParticipantLike,
|
|
209
|
+
TRequest extends AllMembersRestRequestLike = AllMembersRestRequestLike,
|
|
210
|
+
TCoHostResponsibility = unknown,
|
|
211
|
+
TConsumeSocket = unknown,
|
|
212
|
+
TSocket = Socket,
|
|
213
|
+
TOnScreenChangesParameters = OnScreenChangesParameters,
|
|
214
|
+
TConnectIpsParameters = ConnectIpsParameters,
|
|
215
|
+
TReorderStreamsParameters = ReorderStreamsParameters,
|
|
216
|
+
TConnectLocalIpsParameters = ConnectLocalIpsParameters,
|
|
217
|
+
TAllParameters extends TOnScreenChangesParameters &
|
|
218
|
+
TConnectIpsParameters &
|
|
219
|
+
TReorderStreamsParameters &
|
|
220
|
+
TConnectLocalIpsParameters = TOnScreenChangesParameters &
|
|
221
|
+
TConnectIpsParameters &
|
|
222
|
+
TReorderStreamsParameters &
|
|
223
|
+
TConnectLocalIpsParameters,
|
|
224
|
+
> = (
|
|
225
|
+
options: AllMembersRestOptions<
|
|
226
|
+
TParticipantSummary,
|
|
227
|
+
TParticipant,
|
|
228
|
+
TRequest,
|
|
229
|
+
TCoHostResponsibility,
|
|
230
|
+
TConsumeSocket,
|
|
231
|
+
TSocket,
|
|
232
|
+
TOnScreenChangesParameters,
|
|
233
|
+
TConnectIpsParameters,
|
|
234
|
+
TReorderStreamsParameters,
|
|
235
|
+
TConnectLocalIpsParameters,
|
|
236
|
+
TAllParameters
|
|
237
|
+
>,
|
|
238
|
+
) => Promise<void>;
|
|
239
|
+
|
|
240
|
+
/**
|
|
241
|
+
* Reconciles incremental member updates, consume-domain setup, and room media settings.
|
|
242
|
+
*
|
|
243
|
+
* @param {AllMembersRestOptions} options - Member payload, room settings, and receiver connection helpers.
|
|
244
|
+
* @returns {Promise<void>} Resolves once participant state, co-host state, and settings are synchronized.
|
|
245
|
+
*
|
|
246
|
+
* @example
|
|
247
|
+
* ```typescript
|
|
248
|
+
* await allMembersRest({
|
|
249
|
+
* members,
|
|
250
|
+
* settings,
|
|
251
|
+
* coHoste,
|
|
252
|
+
* coHostRes,
|
|
253
|
+
* parameters,
|
|
254
|
+
* consume_sockets,
|
|
255
|
+
* apiUserName: 'api-user',
|
|
256
|
+
* apiKey: 'api-key',
|
|
257
|
+
* apiToken: 'api-token',
|
|
258
|
+
* });
|
|
259
|
+
* ```
|
|
260
|
+
*/
|
|
261
|
+
export const allMembersRest = async <
|
|
262
|
+
TParticipantSummary extends AllMembersRestParticipantLike = AllMembersRestParticipantLike,
|
|
263
|
+
TParticipant extends AllMembersRestParticipantLike = AllMembersRestParticipantLike,
|
|
264
|
+
TRequest extends AllMembersRestRequestLike = AllMembersRestRequestLike,
|
|
265
|
+
TCoHostResponsibility = unknown,
|
|
266
|
+
TConsumeSocket = unknown,
|
|
267
|
+
TSocket = Socket,
|
|
268
|
+
TOnScreenChangesParameters = OnScreenChangesParameters,
|
|
269
|
+
TConnectIpsParameters = ConnectIpsParameters,
|
|
270
|
+
TReorderStreamsParameters = ReorderStreamsParameters,
|
|
271
|
+
TConnectLocalIpsParameters = ConnectLocalIpsParameters,
|
|
272
|
+
TAllParameters extends TOnScreenChangesParameters &
|
|
273
|
+
TConnectIpsParameters &
|
|
274
|
+
TReorderStreamsParameters &
|
|
275
|
+
TConnectLocalIpsParameters = TOnScreenChangesParameters &
|
|
276
|
+
TConnectIpsParameters &
|
|
277
|
+
TReorderStreamsParameters &
|
|
278
|
+
TConnectLocalIpsParameters,
|
|
279
|
+
>({
|
|
280
|
+
members,
|
|
281
|
+
settings,
|
|
282
|
+
coHoste,
|
|
283
|
+
coHostRes,
|
|
284
|
+
parameters,
|
|
285
|
+
consume_sockets,
|
|
286
|
+
apiUserName,
|
|
287
|
+
apiKey,
|
|
288
|
+
apiToken,
|
|
289
|
+
}: AllMembersRestOptions<
|
|
290
|
+
TParticipantSummary,
|
|
291
|
+
TParticipant,
|
|
292
|
+
TRequest,
|
|
293
|
+
TCoHostResponsibility,
|
|
294
|
+
TConsumeSocket,
|
|
295
|
+
TSocket,
|
|
296
|
+
TOnScreenChangesParameters,
|
|
297
|
+
TConnectIpsParameters,
|
|
298
|
+
TReorderStreamsParameters,
|
|
299
|
+
TConnectLocalIpsParameters,
|
|
300
|
+
TAllParameters
|
|
301
|
+
>): Promise<void> => {
|
|
302
|
+
let {
|
|
303
|
+
participantsAll,
|
|
304
|
+
participants,
|
|
305
|
+
dispActiveNames,
|
|
306
|
+
requestList,
|
|
307
|
+
coHost,
|
|
308
|
+
coHostResponsibility,
|
|
309
|
+
lock_screen,
|
|
310
|
+
firstAll,
|
|
311
|
+
membersReceived,
|
|
312
|
+
roomRecvIPs,
|
|
313
|
+
deferScreenReceived,
|
|
314
|
+
screenId,
|
|
315
|
+
shareScreenStarted,
|
|
316
|
+
meetingDisplayType,
|
|
317
|
+
audioSetting,
|
|
318
|
+
videoSetting,
|
|
319
|
+
screenshareSetting,
|
|
320
|
+
chatSetting,
|
|
321
|
+
socket,
|
|
322
|
+
updateParticipantsAll,
|
|
323
|
+
updateParticipants,
|
|
324
|
+
updateRequestList,
|
|
325
|
+
updateCoHost,
|
|
326
|
+
updateCoHostResponsibility,
|
|
327
|
+
updateFirstAll,
|
|
328
|
+
updateMembersReceived,
|
|
329
|
+
updateDeferScreenReceived,
|
|
330
|
+
updateShareScreenStarted,
|
|
331
|
+
updateAudioSetting,
|
|
332
|
+
updateVideoSetting,
|
|
333
|
+
updateScreenshareSetting,
|
|
334
|
+
updateChatSetting,
|
|
335
|
+
updateConsume_sockets,
|
|
336
|
+
updateRoomRecvIPs,
|
|
337
|
+
updateIsLoadingModalVisible,
|
|
338
|
+
onScreenChanges,
|
|
339
|
+
connectIps,
|
|
340
|
+
connectLocalIps,
|
|
341
|
+
sleep,
|
|
342
|
+
reorderStreams,
|
|
343
|
+
} = parameters;
|
|
344
|
+
|
|
345
|
+
participantsAll = members.map((participant) => ({
|
|
346
|
+
isBanned: participant.isBanned,
|
|
347
|
+
isSuspended: participant.isSuspended,
|
|
348
|
+
name: participant.name,
|
|
349
|
+
audioID: participant.audioID,
|
|
350
|
+
videoID: participant.videoID,
|
|
351
|
+
})) as TParticipantSummary[];
|
|
352
|
+
updateParticipantsAll(participantsAll);
|
|
353
|
+
|
|
354
|
+
participants = members.filter(
|
|
355
|
+
(participant) => !participant.isBanned && !participant.isSuspended,
|
|
356
|
+
);
|
|
357
|
+
updateParticipants(participants);
|
|
358
|
+
|
|
359
|
+
if (dispActiveNames.length > 0) {
|
|
360
|
+
const missingDisplayedParticipants = dispActiveNames.filter(
|
|
361
|
+
(name) => !participants.some((participant) => participant.name === name),
|
|
362
|
+
);
|
|
363
|
+
if (missingDisplayedParticipants.length > 0 && membersReceived) {
|
|
364
|
+
await reorderStreams({ add: false, screenChanged: true, parameters });
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
const onLocal = roomRecvIPs.length === 1 && roomRecvIPs[0] === 'none';
|
|
369
|
+
|
|
370
|
+
if (!onLocal) {
|
|
371
|
+
if (!membersReceived) {
|
|
372
|
+
if (roomRecvIPs.length < 1) {
|
|
373
|
+
const checkIPs = setInterval(async () => {
|
|
374
|
+
if (roomRecvIPs.length > 0) {
|
|
375
|
+
clearInterval(checkIPs);
|
|
376
|
+
|
|
377
|
+
if (deferScreenReceived && screenId) {
|
|
378
|
+
shareScreenStarted = true;
|
|
379
|
+
updateShareScreenStarted(shareScreenStarted);
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
const [sockets_, ips_] = await connectIps({
|
|
383
|
+
consume_sockets,
|
|
384
|
+
remIP: roomRecvIPs,
|
|
385
|
+
parameters,
|
|
386
|
+
apiUserName,
|
|
387
|
+
apiKey,
|
|
388
|
+
apiToken,
|
|
389
|
+
});
|
|
390
|
+
|
|
391
|
+
if (sockets_ && ips_) {
|
|
392
|
+
updateConsume_sockets(sockets_);
|
|
393
|
+
updateRoomRecvIPs(ips_);
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
membersReceived = true;
|
|
397
|
+
updateMembersReceived(membersReceived);
|
|
398
|
+
await sleep({ ms: 250 });
|
|
399
|
+
updateIsLoadingModalVisible(false);
|
|
400
|
+
deferScreenReceived = false;
|
|
401
|
+
updateDeferScreenReceived(deferScreenReceived);
|
|
402
|
+
}
|
|
403
|
+
}, 10);
|
|
404
|
+
} else {
|
|
405
|
+
const [sockets_, ips_] = await connectIps({
|
|
406
|
+
consume_sockets,
|
|
407
|
+
remIP: roomRecvIPs,
|
|
408
|
+
parameters,
|
|
409
|
+
apiUserName,
|
|
410
|
+
apiKey,
|
|
411
|
+
apiToken,
|
|
412
|
+
});
|
|
413
|
+
|
|
414
|
+
if (sockets_ && ips_) {
|
|
415
|
+
updateConsume_sockets(sockets_);
|
|
416
|
+
updateRoomRecvIPs(ips_);
|
|
417
|
+
}
|
|
418
|
+
membersReceived = true;
|
|
419
|
+
updateMembersReceived(membersReceived);
|
|
420
|
+
|
|
421
|
+
if (deferScreenReceived && screenId) {
|
|
422
|
+
shareScreenStarted = true;
|
|
423
|
+
updateShareScreenStarted(shareScreenStarted);
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
await sleep({ ms: 250 });
|
|
427
|
+
updateIsLoadingModalVisible(false);
|
|
428
|
+
deferScreenReceived = false;
|
|
429
|
+
updateDeferScreenReceived(deferScreenReceived);
|
|
430
|
+
}
|
|
431
|
+
} else if (screenId) {
|
|
432
|
+
const host = participants.find(
|
|
433
|
+
(participant) =>
|
|
434
|
+
participant.ScreenID === screenId && participant.ScreenOn === true,
|
|
435
|
+
);
|
|
436
|
+
if (deferScreenReceived && host) {
|
|
437
|
+
shareScreenStarted = true;
|
|
438
|
+
updateShareScreenStarted(shareScreenStarted);
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
|
|
443
|
+
if (onLocal && !membersReceived) {
|
|
444
|
+
if (connectLocalIps) {
|
|
445
|
+
await connectLocalIps({ socket, parameters });
|
|
446
|
+
}
|
|
447
|
+
await sleep({ ms: 50 });
|
|
448
|
+
updateIsLoadingModalVisible(false);
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
requestList = requestList.filter((request) =>
|
|
452
|
+
participants.some((participant) => participant.id === request.id),
|
|
453
|
+
);
|
|
454
|
+
updateRequestList(requestList);
|
|
455
|
+
|
|
456
|
+
coHost = coHoste!;
|
|
457
|
+
updateCoHost(coHost);
|
|
458
|
+
coHostResponsibility = coHostRes!;
|
|
459
|
+
updateCoHostResponsibility(coHostResponsibility);
|
|
460
|
+
|
|
461
|
+
if (!lock_screen && !firstAll) {
|
|
462
|
+
await onScreenChanges({ parameters });
|
|
463
|
+
if (meetingDisplayType !== 'all') {
|
|
464
|
+
firstAll = true;
|
|
465
|
+
updateFirstAll(firstAll);
|
|
466
|
+
}
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
try {
|
|
470
|
+
if (membersReceived) {
|
|
471
|
+
[audioSetting, videoSetting, screenshareSetting, chatSetting] = settings;
|
|
472
|
+
updateAudioSetting(audioSetting);
|
|
473
|
+
updateVideoSetting(videoSetting);
|
|
474
|
+
updateScreenshareSetting(screenshareSetting);
|
|
475
|
+
updateChatSetting(chatSetting);
|
|
476
|
+
}
|
|
477
|
+
} catch {
|
|
478
|
+
// no-op
|
|
479
|
+
}
|
|
480
|
+
};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { WaitingRoomParticipant } from '../../types/types';
|
|
2
|
+
|
|
3
|
+
export interface AllWaitingRoomMembersOptions {
|
|
4
|
+
waitingParticipants: WaitingRoomParticipant[];
|
|
5
|
+
updateWaitingRoomList: (participants: WaitingRoomParticipant[]) => void;
|
|
6
|
+
updateTotalReqWait: (totalReqs: number) => void;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export type AllWaitingRoomMembersType = (
|
|
10
|
+
options: AllWaitingRoomMembersOptions,
|
|
11
|
+
) => Promise<void>;
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Replaces the waiting-room list and recalculates the combined waiting count.
|
|
15
|
+
*
|
|
16
|
+
* @param {AllWaitingRoomMembersOptions} options - Waiting-room state setters.
|
|
17
|
+
* @returns {Promise<void>} Resolves after the state updates run.
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```typescript
|
|
21
|
+
* await allWaitingRoomMembers({
|
|
22
|
+
* waitingParticipants,
|
|
23
|
+
* updateWaitingRoomList: setWaitingRoomList,
|
|
24
|
+
* updateTotalReqWait: setTotalReqWait,
|
|
25
|
+
* });
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export const allWaitingRoomMembers = async ({
|
|
29
|
+
waitingParticipants,
|
|
30
|
+
updateWaitingRoomList,
|
|
31
|
+
updateTotalReqWait,
|
|
32
|
+
}: AllWaitingRoomMembersOptions): Promise<void> => {
|
|
33
|
+
updateWaitingRoomList(waitingParticipants);
|
|
34
|
+
updateTotalReqWait(waitingParticipants.length);
|
|
35
|
+
};
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import type { Participant } from '../../types/types';
|
|
2
|
+
|
|
3
|
+
export interface BanParticipantReorderOptions<TParameters = unknown> {
|
|
4
|
+
add?: boolean;
|
|
5
|
+
screenChanged?: boolean;
|
|
6
|
+
parameters: TParameters;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export type BanParticipantReorderType<TParameters = unknown> = (
|
|
10
|
+
options: BanParticipantReorderOptions<TParameters>,
|
|
11
|
+
) => Promise<void>;
|
|
12
|
+
|
|
13
|
+
export interface BanParticipantParameters<
|
|
14
|
+
TParameters = unknown,
|
|
15
|
+
TParticipant extends { name?: string | null } = Participant,
|
|
16
|
+
> {
|
|
17
|
+
activeNames: string[];
|
|
18
|
+
dispActiveNames: string[];
|
|
19
|
+
participants: TParticipant[];
|
|
20
|
+
updateParticipants: (participants: TParticipant[]) => void;
|
|
21
|
+
reorderStreams: BanParticipantReorderType<TParameters>;
|
|
22
|
+
[key: string]: any;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export interface BanParticipantOptions<
|
|
26
|
+
TParameters = unknown,
|
|
27
|
+
TParticipant extends { name?: string | null } = Participant,
|
|
28
|
+
> {
|
|
29
|
+
name: string;
|
|
30
|
+
parameters: BanParticipantParameters<TParameters, TParticipant> & TParameters;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export type BanParticipantType<
|
|
34
|
+
TParameters = unknown,
|
|
35
|
+
TParticipant extends { name?: string | null } = Participant,
|
|
36
|
+
> = (options: BanParticipantOptions<TParameters, TParticipant>) => Promise<void>;
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Removes a banned participant from the rendered participant list and reorders streams if needed.
|
|
40
|
+
*
|
|
41
|
+
* @param {BanParticipantOptions} options - Participant name and stream reordering helpers.
|
|
42
|
+
* @returns {Promise<void>} Resolves when participant state is updated.
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* ```typescript
|
|
46
|
+
* await banParticipant({
|
|
47
|
+
* name: 'John Doe',
|
|
48
|
+
* parameters,
|
|
49
|
+
* });
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
export const banParticipant = async <
|
|
53
|
+
TParameters = unknown,
|
|
54
|
+
TParticipant extends { name?: string | null } = Participant,
|
|
55
|
+
>({
|
|
56
|
+
name,
|
|
57
|
+
parameters,
|
|
58
|
+
}: BanParticipantOptions<TParameters, TParticipant>): Promise<void> => {
|
|
59
|
+
const {
|
|
60
|
+
activeNames,
|
|
61
|
+
dispActiveNames,
|
|
62
|
+
participants,
|
|
63
|
+
updateParticipants,
|
|
64
|
+
reorderStreams,
|
|
65
|
+
} = parameters;
|
|
66
|
+
|
|
67
|
+
if (activeNames.includes(name) || dispActiveNames.includes(name)) {
|
|
68
|
+
updateParticipants(
|
|
69
|
+
participants.filter((participant) => participant.name !== name),
|
|
70
|
+
);
|
|
71
|
+
await reorderStreams({ add: false, screenChanged: true, parameters });
|
|
72
|
+
}
|
|
73
|
+
};
|