@videosdk.live/react-sdk 0.1.12 → 0.1.13

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/dist/index.js CHANGED
@@ -5,7 +5,7 @@ var React__default = _interopDefault(React);
5
5
  var EventEmitter = _interopDefault(require('events'));
6
6
  var jsSdk = require('@videosdk.live/js-sdk');
7
7
 
8
- var eventPrifix = 'zn-meeting-react-sdk';
8
+ var eventPrifix = 'videosdk-live-react-sdk';
9
9
  var events = {
10
10
  'participant-joined': eventPrifix + "-participant-joined",
11
11
  'participant-left': eventPrifix + "-participant-left",
@@ -25,7 +25,10 @@ var events = {
25
25
  'video-seeked': eventPrifix + "-video-seeked",
26
26
  'webcam-requested': eventPrifix + "-webcam-requested",
27
27
  'mic-requested': eventPrifix + "-mic-requested",
28
- 'pin-state-changed': eventPrifix + "-pin-state-changed"
28
+ 'pin-state-changed': eventPrifix + "-pin-state-changed",
29
+ 'connection-open': eventPrifix + "-connection-open",
30
+ 'connection-close': eventPrifix + "-connection-close",
31
+ 'switch-meeting': eventPrifix + "-switch-meeting"
29
32
  };
30
33
  var eventEmitter = new EventEmitter();
31
34
  eventEmitter.setMaxListeners(9999);
@@ -70,7 +73,13 @@ var useMeeting = function useMeeting(_temp) {
70
73
  _ref$onMicRequested = _ref.onMicRequested,
71
74
  onMicRequested = _ref$onMicRequested === void 0 ? function () {} : _ref$onMicRequested,
72
75
  _ref$onPinStateChange = _ref.onPinStateChanged,
73
- onPinStateChanged = _ref$onPinStateChange === void 0 ? function () {} : _ref$onPinStateChange;
76
+ onPinStateChanged = _ref$onPinStateChange === void 0 ? function () {} : _ref$onPinStateChange,
77
+ _ref$onConnectionOpen = _ref.onConnectionOpen,
78
+ onConnectionOpen = _ref$onConnectionOpen === void 0 ? function () {} : _ref$onConnectionOpen,
79
+ _ref$onConnetionClose = _ref.onConnetionClose,
80
+ onConnetionClose = _ref$onConnetionClose === void 0 ? function () {} : _ref$onConnetionClose,
81
+ _ref$onSwitchMeeting = _ref.onSwitchMeeting,
82
+ onSwitchMeeting = _ref$onSwitchMeeting === void 0 ? function () {} : _ref$onSwitchMeeting;
74
83
 
75
84
  React.useEffect(function () {
76
85
  eventEmitter.on(events['participant-joined'], onParticipantJoined);
@@ -92,6 +101,9 @@ var useMeeting = function useMeeting(_temp) {
92
101
  eventEmitter.on(events['webcam-requested'], onWebcamRequested);
93
102
  eventEmitter.on(events['mic-requested'], onMicRequested);
94
103
  eventEmitter.on(events['pin-state-changed'], onPinStateChanged);
104
+ eventEmitter.on(events['connection-open'], onConnectionOpen);
105
+ eventEmitter.on(events['connection-close'], onConnetionClose);
106
+ eventEmitter.on(events['switch-meeting'], onSwitchMeeting);
95
107
  return function () {
96
108
  eventEmitter.off(events['participant-joined'], onParticipantJoined);
97
109
  eventEmitter.off(events['participant-left'], onParticipantLeft);
@@ -112,6 +124,9 @@ var useMeeting = function useMeeting(_temp) {
112
124
  eventEmitter.off(events['webcam-requested'], onWebcamRequested);
113
125
  eventEmitter.off(events['mic-requested'], onMicRequested);
114
126
  eventEmitter.off(events['pin-state-changed'], onPinStateChanged);
127
+ eventEmitter.off(events['connection-open'], onConnectionOpen);
128
+ eventEmitter.off(events['connection-close'], onConnetionClose);
129
+ eventEmitter.off(events['switch-meeting'], onSwitchMeeting);
115
130
  };
116
131
  }, []);
117
132
  return React.useContext(MeetingProviderContex);
@@ -155,7 +170,13 @@ var MeetingConsumer = function MeetingConsumer(_ref2) {
155
170
  _ref2$onMicRequested = _ref2.onMicRequested,
156
171
  onMicRequested = _ref2$onMicRequested === void 0 ? function () {} : _ref2$onMicRequested,
157
172
  _ref2$onPinStateChang = _ref2.onPinStateChanged,
158
- onPinStateChanged = _ref2$onPinStateChang === void 0 ? function () {} : _ref2$onPinStateChang;
173
+ onPinStateChanged = _ref2$onPinStateChang === void 0 ? function () {} : _ref2$onPinStateChang,
174
+ _ref2$onConnectionOpe = _ref2.onConnectionOpen,
175
+ onConnectionOpen = _ref2$onConnectionOpe === void 0 ? function () {} : _ref2$onConnectionOpe,
176
+ _ref2$onConnetionClos = _ref2.onConnetionClose,
177
+ onConnetionClose = _ref2$onConnetionClos === void 0 ? function () {} : _ref2$onConnetionClos,
178
+ _ref2$onSwitchMeeting = _ref2.onSwitchMeeting,
179
+ onSwitchMeeting = _ref2$onSwitchMeeting === void 0 ? function () {} : _ref2$onSwitchMeeting;
159
180
  React.useEffect(function () {
160
181
  eventEmitter.on(events['participant-joined'], onParticipantJoined);
161
182
  eventEmitter.on(events['participant-left'], onParticipantLeft);
@@ -176,6 +197,9 @@ var MeetingConsumer = function MeetingConsumer(_ref2) {
176
197
  eventEmitter.on(events['webcam-requested'], onWebcamRequested);
177
198
  eventEmitter.on(events['mic-requested'], onMicRequested);
178
199
  eventEmitter.on(events['pin-state-changed'], onPinStateChanged);
200
+ eventEmitter.on(events['connection-open'], onConnectionOpen);
201
+ eventEmitter.on(events['connection-close'], onConnetionClose);
202
+ eventEmitter.on(events['switch-meeting'], onSwitchMeeting);
179
203
  return function () {
180
204
  eventEmitter.off(events['participant-joined'], onParticipantJoined);
181
205
  eventEmitter.off(events['participant-left'], onParticipantLeft);
@@ -196,6 +220,9 @@ var MeetingConsumer = function MeetingConsumer(_ref2) {
196
220
  eventEmitter.off(events['webcam-requested'], onWebcamRequested);
197
221
  eventEmitter.off(events['mic-requested'], onMicRequested);
198
222
  eventEmitter.off(events['pin-state-changed'], onPinStateChanged);
223
+ eventEmitter.off(events['connection-open'], onConnectionOpen);
224
+ eventEmitter.off(events['connection-close'], onConnetionClose);
225
+ eventEmitter.off(events['switch-meeting'], onSwitchMeeting);
199
226
  };
200
227
  }, []);
201
228
  return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(MeetingProviderContex.Consumer, null, children));
@@ -205,7 +232,8 @@ var MeetingProvider = function MeetingProvider(_ref) {
205
232
  var children = _ref.children,
206
233
  config = _ref.config,
207
234
  token = _ref.token,
208
- joinWithoutUserInteraction = _ref.joinWithoutUserInteraction;
235
+ joinWithoutUserInteraction = _ref.joinWithoutUserInteraction,
236
+ _reinitialiseMeetingOnConfigChange = _ref.reinitialiseMeetingOnConfigChange;
209
237
 
210
238
  var _useState = React.useState(null),
211
239
  meeting = _useState[0],
@@ -259,11 +287,21 @@ var MeetingProvider = function MeetingProvider(_ref) {
259
287
  isLiveStreaming = _useState13[0],
260
288
  setIsLiveStreaming = _useState13[1];
261
289
 
290
+ var _useState14 = React.useState(new Map()),
291
+ connections = _useState14[0],
292
+ setConnections = _useState14[1];
293
+
262
294
  var meetingRef = React.useRef();
263
295
  var localMicOnRef = React.useRef();
264
296
  var localWebcamOnRef = React.useRef();
265
297
  var localScreenShareOnRef = React.useRef();
266
298
  var isRecordingRef = React.useRef();
299
+ var configRef = React.useRef(config);
300
+ var tokenRef = React.useRef(token);
301
+ var joinedOnFirstRender = React.useRef(false);
302
+ var reinitialiseMeetingOnConfigChange = React.useMemo(function () {
303
+ return _reinitialiseMeetingOnConfigChange;
304
+ }, []);
267
305
  React.useEffect(function () {
268
306
  meetingRef.current = meeting;
269
307
  }, [meeting]);
@@ -279,6 +317,12 @@ var MeetingProvider = function MeetingProvider(_ref) {
279
317
  React.useEffect(function () {
280
318
  isRecordingRef.current = isRecording;
281
319
  }, [isRecording]);
320
+ React.useEffect(function () {
321
+ configRef.current = config;
322
+ }, [config]);
323
+ React.useEffect(function () {
324
+ tokenRef.current = token;
325
+ }, [token]);
282
326
 
283
327
  var resetStates = function resetStates() {
284
328
  setMeeting(null);
@@ -294,6 +338,7 @@ var MeetingProvider = function MeetingProvider(_ref) {
294
338
  setIsLiveStreaming(false);
295
339
  setParticipants(new Map());
296
340
  setPinnedParticipants(new Map());
341
+ setConnections(new Map());
297
342
  };
298
343
 
299
344
  var _handle_participant_joined = function _handle_participant_joined(participant) {
@@ -404,6 +449,7 @@ var MeetingProvider = function MeetingProvider(_ref) {
404
449
  };
405
450
 
406
451
  var _handle_meeting_joined = function _handle_meeting_joined(data) {
452
+ joinedOnFirstRender.current = true;
407
453
  setMessages(function (s) {
408
454
  return [].concat(s, data.messages);
409
455
  });
@@ -436,6 +482,10 @@ var MeetingProvider = function MeetingProvider(_ref) {
436
482
  meeting.off('video-seeked', _handle_video_seeked);
437
483
  meeting.off('webcam-requested', _handle_webcam_requested);
438
484
  meeting.off('mic-requested', _handle_mic_requested);
485
+ meeting.off('pin-state-changed', _handle_pin_state_changed);
486
+ meeting.off('connection-open', _handle_connection_open);
487
+ meeting.off('connection-close', _handle_connection_close);
488
+ meeting.off('switch-meeting', _handle_switch_meeting);
439
489
  }
440
490
 
441
491
  if (typeof (meeting === null || meeting === void 0 ? void 0 : (_meeting$localPartici = meeting.localParticipant) === null || _meeting$localPartici === void 0 ? void 0 : _meeting$localPartici.off) === 'function') {
@@ -468,8 +518,30 @@ var MeetingProvider = function MeetingProvider(_ref) {
468
518
  });
469
519
  };
470
520
 
521
+ var _handle_connection_open = function _handle_connection_open(connection) {
522
+ setConnections(function (s) {
523
+ s.set(connection.id, connection);
524
+ var connectionsToSet = new Map(s);
525
+ return connectionsToSet;
526
+ });
527
+ eventEmitter.emit(events['connection-open'], connection);
528
+ };
529
+
530
+ var _handle_connection_close = function _handle_connection_close(connectionId) {
531
+ setConnections(function (s) {
532
+ s["delete"](connectionId);
533
+ var newConnections = new Map(s);
534
+ return newConnections;
535
+ });
536
+ eventEmitter.emit(events['connection-close'], connectionId);
537
+ };
538
+
539
+ var _handle_switch_meeting = function _handle_switch_meeting(d) {
540
+ eventEmitter.emit(events['switch-meeting'], d);
541
+ };
542
+
471
543
  var join = function join() {
472
- var meeting = jsSdk.ZujoSDK && jsSdk.ZujoSDK.initMeeting(config);
544
+ var meeting = jsSdk.VideoSDK && jsSdk.VideoSDK.initMeeting(configRef.current);
473
545
  setMeeting(meeting);
474
546
  var localParticipant = meeting.localParticipant,
475
547
  participants = meeting.participants;
@@ -495,6 +567,9 @@ var MeetingProvider = function MeetingProvider(_ref) {
495
567
  meeting.on('webcam-requested', _handle_webcam_requested);
496
568
  meeting.on('mic-requested', _handle_mic_requested);
497
569
  meeting.on('pin-state-changed', _handle_pin_state_changed);
570
+ meeting.on('connection-open', _handle_connection_open);
571
+ meeting.on('connection-close', _handle_connection_close);
572
+ meeting.on('switch-meeting', _handle_switch_meeting);
498
573
  meeting.localParticipant.on('stream-enabled', _handle_localParticipant_stream_enabled);
499
574
  meeting.localParticipant.on('stream-disabled', _handle_localParticipant_stream_disabled);
500
575
  meeting.join();
@@ -737,8 +812,30 @@ var MeetingProvider = function MeetingProvider(_ref) {
737
812
  }
738
813
  };
739
814
 
815
+ var connectTo = function connectTo(_ref6) {
816
+ var meetingId = _ref6.meetingId,
817
+ payload = _ref6.payload;
818
+
819
+ try {
820
+ var _meeting3 = meetingRef.current;
821
+
822
+ var _temp2 = function () {
823
+ if (_meeting3) {
824
+ return Promise.resolve(_meeting3.connectTo({
825
+ meetingId: meetingId,
826
+ payload: payload
827
+ })).then(function () {});
828
+ }
829
+ }();
830
+
831
+ return Promise.resolve(_temp2 && _temp2.then ? _temp2.then(function () {}) : void 0);
832
+ } catch (e) {
833
+ return Promise.reject(e);
834
+ }
835
+ };
836
+
740
837
  var initSDK = function initSDK() {
741
- jsSdk.ZujoSDK.config(token);
838
+ jsSdk.VideoSDK.config(tokenRef.current);
742
839
 
743
840
  if (joinWithoutUserInteraction) {
744
841
  join();
@@ -748,9 +845,16 @@ var MeetingProvider = function MeetingProvider(_ref) {
748
845
  React.useEffect(function () {
749
846
  initSDK();
750
847
  }, []);
848
+ React.useEffect(function () {
849
+ if (reinitialiseMeetingOnConfigChange && joinedOnFirstRender.current) {
850
+ leave();
851
+ initSDK();
852
+ !joinWithoutUserInteraction && join();
853
+ }
854
+ }, [config.meetingId, token, reinitialiseMeetingOnConfigChange]);
751
855
  return /*#__PURE__*/React__default.createElement(MeetingProviderContex.Provider, {
752
856
  value: {
753
- meetingId: config.meetingId,
857
+ meetingId: meeting === null || meeting === void 0 ? void 0 : meeting.id,
754
858
  meeting: meeting,
755
859
  localParticipant: localParticipant,
756
860
  mainParticipant: mainParticipant,
@@ -764,6 +868,7 @@ var MeetingProvider = function MeetingProvider(_ref) {
764
868
  isRecording: isRecording,
765
869
  isLiveStreaming: isLiveStreaming,
766
870
  pinnedParticipants: pinnedParticipants,
871
+ connections: connections,
767
872
  join: join,
768
873
  leave: leave,
769
874
  end: end,
@@ -790,7 +895,8 @@ var MeetingProvider = function MeetingProvider(_ref) {
790
895
  pauseVideo: pauseVideo,
791
896
  seekVideo: seekVideo,
792
897
  startLivestream: startLivestream,
793
- stopLivestream: stopLivestream
898
+ stopLivestream: stopLivestream,
899
+ connectTo: connectTo
794
900
  }
795
901
  }, children);
796
902
  };
@@ -917,6 +1023,10 @@ var useParticipant = function useParticipant(participantId, _temp) {
917
1023
  participant === null || participant === void 0 ? void 0 : participant.unpin(data);
918
1024
  };
919
1025
 
1026
+ var switchTo = function switchTo(data) {
1027
+ return Promise.resolve(participant === null || participant === void 0 ? void 0 : participant.switchTo(data)).then(function () {});
1028
+ };
1029
+
920
1030
  React.useEffect(function () {
921
1031
  var streams = participant === null || participant === void 0 ? void 0 : participant.streams;
922
1032
 
@@ -952,12 +1062,96 @@ var useParticipant = function useParticipant(participantId, _temp) {
952
1062
  enableWebcam: enableWebcam,
953
1063
  disableWebcam: disableWebcam,
954
1064
  pin: pin,
955
- unpin: unpin
1065
+ unpin: unpin,
1066
+ switchTo: switchTo
1067
+ };
1068
+ };
1069
+
1070
+ var useConnection = function useConnection(connectionId, _temp) {
1071
+ var _ref = _temp === void 0 ? {
1072
+ onMeeting: {
1073
+ onParticipantJoined: function onParticipantJoined() {},
1074
+ onParticipantLeft: function onParticipantLeft() {},
1075
+ onChatMessage: function onChatMessage() {}
1076
+ }
1077
+ } : _temp,
1078
+ onMeeting = _ref.onMeeting;
1079
+
1080
+ var onParticipantJoined = onMeeting === null || onMeeting === void 0 ? void 0 : onMeeting.onParticipantJoined;
1081
+ var onParticipantLeft = onMeeting === null || onMeeting === void 0 ? void 0 : onMeeting.onParticipantLeft;
1082
+ var onChatMessage = onMeeting === null || onMeeting === void 0 ? void 0 : onMeeting.onChatMessage;
1083
+ var meeting = useMeeting();
1084
+
1085
+ var _useMemo = React.useMemo(function () {
1086
+ var connection = meeting === null || meeting === void 0 ? void 0 : meeting.connections.get(connectionId);
1087
+
1088
+ if (!connection) {
1089
+ throw new Error('connectionId not found');
1090
+ }
1091
+
1092
+ var connectionParticipants = new Map(connection.meeting.participants);
1093
+ return {
1094
+ connection: connection,
1095
+ connectionParticipants: connectionParticipants
1096
+ };
1097
+ }, [meeting]),
1098
+ connection = _useMemo.connection,
1099
+ connectionParticipants = _useMemo.connectionParticipants;
1100
+
1101
+ var _useState = React.useState(new Map(connectionParticipants)),
1102
+ _connectionParticipants = _useState[0],
1103
+ setConnectionParticipants = _useState[1];
1104
+
1105
+ var _handleParticipantJoined = function _handleParticipantJoined(participant) {
1106
+ setConnectionParticipants(function (s) {
1107
+ s.set(participant.id, participant);
1108
+ var participantsToSet = new Map(s);
1109
+ return participantsToSet;
1110
+ });
1111
+ onParticipantJoined(participant);
1112
+ };
1113
+
1114
+ var _handleParticipantLeft = function _handleParticipantLeft(participantId) {
1115
+ setConnectionParticipants(function (s) {
1116
+ s["delete"](participantId);
1117
+ var newParticipants = new Map(s);
1118
+ return newParticipants;
1119
+ });
1120
+ onParticipantLeft(participantId);
1121
+ };
1122
+
1123
+ var _handleChatMessage = function _handleChatMessage(data) {
1124
+ onChatMessage(data);
1125
+ };
1126
+
1127
+ React.useEffect(function () {
1128
+ connection === null || connection === void 0 ? void 0 : connection.meeting.on('participant-joined', _handleParticipantJoined);
1129
+ connection === null || connection === void 0 ? void 0 : connection.meeting.on('participant-left', _handleParticipantLeft);
1130
+ connection === null || connection === void 0 ? void 0 : connection.meeting.on('chat-message', _handleChatMessage);
1131
+ return function () {
1132
+ connection === null || connection === void 0 ? void 0 : connection.meeting.off('participant-joined', _handleParticipantJoined);
1133
+ connection === null || connection === void 0 ? void 0 : connection.meeting.off('participant-left', _handleParticipantLeft);
1134
+ connection === null || connection === void 0 ? void 0 : connection.meeting.off('chat-message', _handleChatMessage);
1135
+ };
1136
+ }, [connection]);
1137
+ return {
1138
+ connection: {
1139
+ id: connection.id,
1140
+ close: connection.close,
1141
+ payload: connection.payload,
1142
+ meeting: {
1143
+ id: connection.meeting.id,
1144
+ sendChatMessage: connection.meeting.sendChatMessage,
1145
+ end: connection.meeting.end,
1146
+ participants: _connectionParticipants
1147
+ }
1148
+ }
956
1149
  };
957
1150
  };
958
1151
 
959
1152
  exports.MeetingConsumer = MeetingConsumer;
960
1153
  exports.MeetingProvider = MeetingProvider;
1154
+ exports.useConnection = useConnection;
961
1155
  exports.useMeeting = useMeeting;
962
1156
  exports.useParticipant = useParticipant;
963
1157
  //# sourceMappingURL=index.js.map