@100mslive/react-native-room-kit 0.0.1 → 0.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.
Files changed (46) hide show
  1. package/lib/commonjs/components/DisplayTrack.js +1 -1
  2. package/lib/commonjs/components/DisplayTrack.js.map +1 -1
  3. package/lib/commonjs/components/HMSPreviewJoinButton.js +1 -1
  4. package/lib/commonjs/components/HMSPreviewJoinButton.js.map +1 -1
  5. package/lib/commonjs/components/Header.js +2 -1
  6. package/lib/commonjs/components/Header.js.map +1 -1
  7. package/lib/commonjs/components/Participants/ParticipantsList.js +1 -1
  8. package/lib/commonjs/components/Participants/ParticipantsList.js.map +1 -1
  9. package/lib/commonjs/components/PeerSettingsModalContent.js +4 -3
  10. package/lib/commonjs/components/PeerSettingsModalContent.js.map +1 -1
  11. package/lib/commonjs/components/RoomSettingsModalContent.js +5 -5
  12. package/lib/commonjs/components/RoomSettingsModalContent.js.map +1 -1
  13. package/lib/commonjs/hooks-util.js +153 -92
  14. package/lib/commonjs/hooks-util.js.map +1 -1
  15. package/lib/commonjs/redux/reducers/userState.js +1 -1
  16. package/lib/commonjs/redux/reducers/userState.js.map +1 -1
  17. package/lib/module/components/DisplayTrack.js +1 -1
  18. package/lib/module/components/DisplayTrack.js.map +1 -1
  19. package/lib/module/components/HMSPreviewJoinButton.js +1 -1
  20. package/lib/module/components/HMSPreviewJoinButton.js.map +1 -1
  21. package/lib/module/components/Header.js +2 -1
  22. package/lib/module/components/Header.js.map +1 -1
  23. package/lib/module/components/Participants/ParticipantsList.js +1 -1
  24. package/lib/module/components/Participants/ParticipantsList.js.map +1 -1
  25. package/lib/module/components/PeerSettingsModalContent.js +4 -3
  26. package/lib/module/components/PeerSettingsModalContent.js.map +1 -1
  27. package/lib/module/components/RoomSettingsModalContent.js +5 -5
  28. package/lib/module/components/RoomSettingsModalContent.js.map +1 -1
  29. package/lib/module/hooks-util.js +155 -101
  30. package/lib/module/hooks-util.js.map +1 -1
  31. package/lib/module/redux/reducers/userState.js +1 -1
  32. package/lib/module/redux/reducers/userState.js.map +1 -1
  33. package/lib/typescript/components/Header.d.ts.map +1 -1
  34. package/lib/typescript/components/Participants/ParticipantsList.d.ts.map +1 -1
  35. package/lib/typescript/components/PeerSettingsModalContent.d.ts.map +1 -1
  36. package/lib/typescript/components/RoomSettingsModalContent.d.ts.map +1 -1
  37. package/lib/typescript/hooks-util.d.ts.map +1 -1
  38. package/package.json +1 -1
  39. package/src/components/DisplayTrack.tsx +1 -1
  40. package/src/components/HMSPreviewJoinButton.tsx +1 -1
  41. package/src/components/Header.tsx +4 -1
  42. package/src/components/Participants/ParticipantsList.tsx +0 -1
  43. package/src/components/PeerSettingsModalContent.tsx +7 -5
  44. package/src/components/RoomSettingsModalContent.tsx +7 -6
  45. package/src/hooks-util.ts +167 -103
  46. package/src/redux/reducers/userState.ts +1 -1
@@ -41,6 +41,7 @@ export const PeerSettingsModalContent: React.FC<
41
41
  const spotlightTrackId = useSelector(
42
42
  (state: RootState) => state.user.spotlightTrackId
43
43
  );
44
+ const debugMode = useSelector((state: RootState) => state.user.debugMode);
44
45
  const { handleModalVisibleType: setModalVisible } = useModalType();
45
46
 
46
47
  const removePeer = () => {
@@ -241,9 +242,10 @@ export const PeerSettingsModalContent: React.FC<
241
242
  ) : null}
242
243
 
243
244
  {/* Don't show Capture Screenshot option, if track is screenshare of local peer */}
244
- {peerTrackNode.peer.isLocal &&
245
- peerTrackNode.track &&
246
- peerTrackNode.track.source === HMSTrackSource.SCREEN ? null : (
245
+ {!debugMode ||
246
+ (peerTrackNode.peer.isLocal &&
247
+ peerTrackNode.track &&
248
+ peerTrackNode.track.source === HMSTrackSource.SCREEN) ? null : (
247
249
  <SettingItem
248
250
  text="Capture Screenshot"
249
251
  IconType={MaterialCommunityIcons}
@@ -254,7 +256,7 @@ export const PeerSettingsModalContent: React.FC<
254
256
  )}
255
257
 
256
258
  {/* Local Image Capture is only available for local peer */}
257
- {peerTrackNode.peer.isLocal ? (
259
+ {debugMode && peerTrackNode.peer.isLocal ? (
258
260
  <SettingItem
259
261
  text="Local Image Capture"
260
262
  IconType={MaterialCommunityIcons}
@@ -267,7 +269,7 @@ export const PeerSettingsModalContent: React.FC<
267
269
  ) : null}
268
270
 
269
271
  {/* Don't show Streaming Quality option for local peer */}
270
- {!peer.isLocal ? (
272
+ {debugMode && !peer.isLocal ? (
271
273
  <SettingItem
272
274
  text="Streaming Quality"
273
275
  IconType={Ionicons}
@@ -435,7 +435,7 @@ export const RoomSettingsModalContent: React.FC<
435
435
  />
436
436
  ) : null}
437
437
 
438
- {localPeerRole?.permissions?.hlsStreaming ? (
438
+ {debugMode && localPeerRole?.permissions?.hlsStreaming ? (
439
439
  <SettingItem
440
440
  onPress={handleHLSStreaming}
441
441
  text={`${isHLSStreaming === true ? 'Stop' : 'Start'} HLS Streaming`}
@@ -444,7 +444,7 @@ export const RoomSettingsModalContent: React.FC<
444
444
  />
445
445
  ) : null}
446
446
 
447
- {localPeerRole?.permissions?.rtmpStreaming ? (
447
+ {debugMode && localPeerRole?.permissions?.rtmpStreaming ? (
448
448
  <SettingItem
449
449
  onPress={handleRTMPAndRecording}
450
450
  text={
@@ -457,7 +457,7 @@ export const RoomSettingsModalContent: React.FC<
457
457
  />
458
458
  ) : null}
459
459
 
460
- {localPeerRole?.permissions?.changeRole ? (
460
+ {debugMode && localPeerRole?.permissions?.changeRole ? (
461
461
  <SettingItem
462
462
  onPress={changeBulkRole}
463
463
  text="Bulk Role Change"
@@ -466,7 +466,7 @@ export const RoomSettingsModalContent: React.FC<
466
466
  />
467
467
  ) : null}
468
468
 
469
- {localPeerRole?.permissions?.mute ? (
469
+ {debugMode && localPeerRole?.permissions?.mute ? (
470
470
  <SettingItem
471
471
  onPress={handleRemoteAudiosMute}
472
472
  text="Remote Mute All Audio Tracks"
@@ -475,8 +475,9 @@ export const RoomSettingsModalContent: React.FC<
475
475
  />
476
476
  ) : null}
477
477
 
478
- {localPeerRole?.permissions?.mute ||
479
- localPeerRole?.permissions?.unmute ? (
478
+ {debugMode &&
479
+ (localPeerRole?.permissions?.mute ||
480
+ localPeerRole?.permissions?.unmute) ? (
480
481
  <SettingItem
481
482
  onPress={changeTrackState}
482
483
  text="Change Track State For Role"
package/src/hooks-util.ts CHANGED
@@ -5,7 +5,7 @@ import {
5
5
  HMSMessage,
6
6
  HMSPIPListenerActions,
7
7
  HMSPeer,
8
- // HMSPeerUpdate,
8
+ HMSPeerUpdate,
9
9
  HMSRemotePeer,
10
10
  HMSRoleChangeRequest,
11
11
  HMSRoom,
@@ -45,9 +45,9 @@ import {
45
45
  } from './redux/actions';
46
46
  import {
47
47
  degradeOrRestorePeerTrackNodes,
48
- // peerTrackNodeExistForPeer,
48
+ peerTrackNodeExistForPeer,
49
49
  peerTrackNodeExistForPeerAndTrack,
50
- // removePeerTrackNodes,
50
+ removePeerTrackNodes,
51
51
  removePeerTrackNodesWithTrack,
52
52
  replacePeerTrackNodes,
53
53
  replacePeerTrackNodesWithTrack,
@@ -79,7 +79,7 @@ export const useHMSListeners = (
79
79
 
80
80
  useHMSRoomUpdate(hmsInstance, setMeetingState);
81
81
 
82
- // useHMSPeersUpdate(hmsInstance, updateLocalPeer, setPeerTrackNodes);
82
+ useHMSPeersUpdate(hmsInstance, updateLocalPeer, setPeerTrackNodes);
83
83
 
84
84
  useHMSTrackUpdate(hmsInstance, updateLocalPeer, setPeerTrackNodes);
85
85
  };
@@ -198,72 +198,136 @@ const useHMSRoomUpdate = (
198
198
  }, [hmsInstance]);
199
199
  };
200
200
 
201
- // type PeerUpdate = {
202
- // peer: HMSPeer;
203
- // type: HMSPeerUpdate;
204
- // };
205
-
206
- // const useHMSPeersUpdate = (
207
- // hmsInstance: HMSSDK,
208
- // updateLocalPeer: () => void,
209
- // setPeerTrackNodes: React.Dispatch<React.SetStateAction<PeerTrackNode[]>>
210
- // ) => {
211
- // useHMSPeerUpdates(
212
- // ({ peer, type }: PeerUpdate) => {
213
- // if (type === HMSPeerUpdate.PEER_JOINED) {
214
- // return;
215
- // }
216
- // if (type === HMSPeerUpdate.PEER_LEFT) {
217
- // setPeerTrackNodes((prevPeerTrackNodes) =>
218
- // removePeerTrackNodes(prevPeerTrackNodes, peer)
219
- // );
220
- // return;
221
- // }
222
- // if (peer.isLocal) {
223
- // setPeerTrackNodes((prevPeerTrackNodes) => {
224
- // if (peerTrackNodeExistForPeer(prevPeerTrackNodes, peer)) {
225
- // return replacePeerTrackNodes(prevPeerTrackNodes, peer);
226
- // }
227
- // return prevPeerTrackNodes;
228
- // });
229
-
230
- // // - TODO: update local localPeer state
231
- // // - Pass this updated data to Meeting component -> DisplayView component
232
- // updateLocalPeer();
233
- // return;
234
- // }
235
- // if (type === HMSPeerUpdate.ROLE_CHANGED) {
236
- // if (
237
- // peer.role?.publishSettings?.allowed === undefined ||
238
- // (peer.role?.publishSettings?.allowed &&
239
- // peer.role?.publishSettings?.allowed.length < 1)
240
- // ) {
241
- // setPeerTrackNodes((prevPeerTrackNodes) => {
242
- // if (peerTrackNodeExistForPeer(prevPeerTrackNodes, peer)) {
243
- // return removePeerTrackNodes(prevPeerTrackNodes, peer);
244
- // }
245
- // return prevPeerTrackNodes;
246
- // });
247
- // }
248
- // return;
249
- // }
250
- // if (
251
- // type === HMSPeerUpdate.METADATA_CHANGED ||
252
- // type === HMSPeerUpdate.NAME_CHANGED ||
253
- // type === HMSPeerUpdate.NETWORK_QUALITY_UPDATED
254
- // ) {
255
- // setPeerTrackNodes((prevPeerTrackNodes) => {
256
- // if (peerTrackNodeExistForPeer(prevPeerTrackNodes, peer)) {
257
- // return replacePeerTrackNodes(prevPeerTrackNodes, peer);
258
- // }
259
- // return prevPeerTrackNodes;
260
- // });
261
- // return;
262
- // }
263
- // },
264
- // [hmsInstance]
265
- // );
266
- // };
201
+ type PeerUpdate = {
202
+ peer: HMSPeer;
203
+ type: HMSPeerUpdate;
204
+ };
205
+
206
+ const useHMSPeersUpdate = (
207
+ hmsInstance: HMSSDK,
208
+ updateLocalPeer: () => void,
209
+ setPeerTrackNodes: React.Dispatch<React.SetStateAction<PeerTrackNode[]>>
210
+ ) => {
211
+ // useHMSPeerUpdates(
212
+ // ({ peer, type }: PeerUpdate) => {
213
+ // if (type === HMSPeerUpdate.PEER_JOINED) {
214
+ // return;
215
+ // }
216
+ // if (type === HMSPeerUpdate.PEER_LEFT) {
217
+ // setPeerTrackNodes((prevPeerTrackNodes) =>
218
+ // removePeerTrackNodes(prevPeerTrackNodes, peer)
219
+ // );
220
+ // return;
221
+ // }
222
+ // if (peer.isLocal) {
223
+ // setPeerTrackNodes((prevPeerTrackNodes) => {
224
+ // if (peerTrackNodeExistForPeer(prevPeerTrackNodes, peer)) {
225
+ // return replacePeerTrackNodes(prevPeerTrackNodes, peer);
226
+ // }
227
+ // return prevPeerTrackNodes;
228
+ // });
229
+
230
+ // // - TODO: update local localPeer state
231
+ // // - Pass this updated data to Meeting component -> DisplayView component
232
+ // updateLocalPeer();
233
+ // return;
234
+ // }
235
+ // if (type === HMSPeerUpdate.ROLE_CHANGED) {
236
+ // if (
237
+ // peer.role?.publishSettings?.allowed === undefined ||
238
+ // (peer.role?.publishSettings?.allowed &&
239
+ // peer.role?.publishSettings?.allowed.length < 1)
240
+ // ) {
241
+ // setPeerTrackNodes((prevPeerTrackNodes) => {
242
+ // if (peerTrackNodeExistForPeer(prevPeerTrackNodes, peer)) {
243
+ // return removePeerTrackNodes(prevPeerTrackNodes, peer);
244
+ // }
245
+ // return prevPeerTrackNodes;
246
+ // });
247
+ // }
248
+ // return;
249
+ // }
250
+ // if (
251
+ // type === HMSPeerUpdate.METADATA_CHANGED ||
252
+ // type === HMSPeerUpdate.NAME_CHANGED ||
253
+ // type === HMSPeerUpdate.NETWORK_QUALITY_UPDATED
254
+ // ) {
255
+ // setPeerTrackNodes((prevPeerTrackNodes) => {
256
+ // if (peerTrackNodeExistForPeer(prevPeerTrackNodes, peer)) {
257
+ // return replacePeerTrackNodes(prevPeerTrackNodes, peer);
258
+ // }
259
+ // return prevPeerTrackNodes;
260
+ // });
261
+ // return;
262
+ // }
263
+ // },
264
+ // [hmsInstance]
265
+ // );
266
+
267
+ useEffect(() => {
268
+ const peerUpdateHandler = ({ peer, type }: PeerUpdate) => {
269
+ if (type === HMSPeerUpdate.PEER_JOINED) {
270
+ return;
271
+ }
272
+ if (type === HMSPeerUpdate.PEER_LEFT) {
273
+ setPeerTrackNodes((prevPeerTrackNodes) =>
274
+ removePeerTrackNodes(prevPeerTrackNodes, peer)
275
+ );
276
+ return;
277
+ }
278
+ if (peer.isLocal) {
279
+ setPeerTrackNodes((prevPeerTrackNodes) => {
280
+ if (peerTrackNodeExistForPeer(prevPeerTrackNodes, peer)) {
281
+ return replacePeerTrackNodes(prevPeerTrackNodes, peer);
282
+ }
283
+ return prevPeerTrackNodes;
284
+ });
285
+
286
+ // - TODO: update local localPeer state
287
+ // - Pass this updated data to Meeting component -> DisplayView component
288
+ updateLocalPeer();
289
+ return;
290
+ }
291
+ if (type === HMSPeerUpdate.ROLE_CHANGED) {
292
+ if (
293
+ peer.role?.publishSettings?.allowed === undefined ||
294
+ (peer.role?.publishSettings?.allowed &&
295
+ peer.role?.publishSettings?.allowed.length < 1)
296
+ ) {
297
+ setPeerTrackNodes((prevPeerTrackNodes) => {
298
+ if (peerTrackNodeExistForPeer(prevPeerTrackNodes, peer)) {
299
+ return removePeerTrackNodes(prevPeerTrackNodes, peer);
300
+ }
301
+ return prevPeerTrackNodes;
302
+ });
303
+ }
304
+ return;
305
+ }
306
+ if (
307
+ type === HMSPeerUpdate.METADATA_CHANGED ||
308
+ type === HMSPeerUpdate.NAME_CHANGED ||
309
+ type === HMSPeerUpdate.NETWORK_QUALITY_UPDATED
310
+ ) {
311
+ setPeerTrackNodes((prevPeerTrackNodes) => {
312
+ if (peerTrackNodeExistForPeer(prevPeerTrackNodes, peer)) {
313
+ return replacePeerTrackNodes(prevPeerTrackNodes, peer);
314
+ }
315
+ return prevPeerTrackNodes;
316
+ });
317
+ return;
318
+ }
319
+ };
320
+
321
+ hmsInstance.addEventListener(
322
+ HMSUpdateListenerActions.ON_PEER_UPDATE,
323
+ peerUpdateHandler
324
+ );
325
+
326
+ return () => {
327
+ hmsInstance.removeEventListener(HMSUpdateListenerActions.ON_PEER_UPDATE);
328
+ };
329
+ }, [hmsInstance]);
330
+ };
267
331
 
268
332
  type TrackUpdate = {
269
333
  peer: HMSPeer;
@@ -527,7 +591,7 @@ export const useHMSSessionStoreListeners = () => {
527
591
  useEffect(() => {
528
592
  // Check if instance of HMSSessionStore is available
529
593
  if (hmsSessionStore) {
530
- let toastTimeoutId: NodeJS.Timeout | null = null;
594
+ // let toastTimeoutId: NodeJS.Timeout | null = null;
531
595
 
532
596
  const addSessionStoreListeners = () => {
533
597
  // Handle 'spotlight' key values
@@ -575,8 +639,8 @@ export const useHMSSessionStoreListeners = () => {
575
639
  )
576
640
  );
577
641
 
578
- let lastSpotlightValue: HMSSessionStoreValue = null;
579
- let lastPinnedMessageValue: HMSSessionStoreValue = null;
642
+ // let lastSpotlightValue: HMSSessionStoreValue = null;
643
+ // let lastPinnedMessageValue: HMSSessionStoreValue = null;
580
644
 
581
645
  // Add subscription for `spotlight` & `pinnedMessage` keys updates on Session Store
582
646
  const subscription = hmsSessionStore.addKeyChangeListener<
@@ -598,41 +662,41 @@ export const useHMSSessionStoreListeners = () => {
598
662
  handleSpotlightIdChange(data.value);
599
663
 
600
664
  // Showing Toast message if value has actually changed
601
- if (
602
- data.value !== lastSpotlightValue &&
603
- (data.value || lastSpotlightValue)
604
- ) {
605
- Toast.showWithGravity(
606
- `SessionStore: \`spotlight\` key's value changed to ${data.value}`,
607
- Toast.LONG,
608
- Toast.TOP
609
- );
610
- }
611
-
612
- lastSpotlightValue = data.value;
665
+ // if (
666
+ // data.value !== lastSpotlightValue &&
667
+ // (data.value || lastSpotlightValue)
668
+ // ) {
669
+ // Toast.showWithGravity(
670
+ // `SessionStore: \`spotlight\` key's value changed to ${data.value}`,
671
+ // Toast.LONG,
672
+ // Toast.TOP
673
+ // );
674
+ // }
675
+
676
+ // lastSpotlightValue = data.value;
613
677
  break;
614
678
  }
615
679
  case 'pinnedMessage': {
616
680
  handlePinnedMessageChange(data.value);
617
681
 
618
682
  // Showing Toast message if value has actually changed
619
- if (
620
- data.value !== lastPinnedMessageValue &&
621
- (data.value || lastPinnedMessageValue)
622
- ) {
623
- if (toastTimeoutId !== null) {
624
- clearTimeout(toastTimeoutId);
625
- }
626
- toastTimeoutId = setTimeout(() => {
627
- Toast.showWithGravity(
628
- `SessionStore: \`pinnedMessage\` key's value changed to ${data.value}`,
629
- Toast.LONG,
630
- Toast.TOP
631
- );
632
- }, 1500);
633
- }
634
-
635
- lastPinnedMessageValue = data.value;
683
+ // if (
684
+ // data.value !== lastPinnedMessageValue &&
685
+ // (data.value || lastPinnedMessageValue)
686
+ // ) {
687
+ // if (toastTimeoutId !== null) {
688
+ // clearTimeout(toastTimeoutId);
689
+ // }
690
+ // toastTimeoutId = setTimeout(() => {
691
+ // Toast.showWithGravity(
692
+ // `SessionStore: \`pinnedMessage\` key's value changed to ${data.value}`,
693
+ // Toast.LONG,
694
+ // Toast.TOP
695
+ // );
696
+ // }, 1500);
697
+ // }
698
+
699
+ // lastPinnedMessageValue = data.value;
636
700
  break;
637
701
  }
638
702
  }
@@ -651,7 +715,7 @@ export const useHMSSessionStoreListeners = () => {
651
715
  listener.remove()
652
716
  );
653
717
 
654
- if (toastTimeoutId !== null) clearTimeout(toastTimeoutId);
718
+ // if (toastTimeoutId !== null) clearTimeout(toastTimeoutId);
655
719
  };
656
720
  }
657
721
  }, [hmsSessionStore]);
@@ -75,7 +75,7 @@ const userReducer = (
75
75
  state.userId = action.payload.options.userId;
76
76
  state.endPoints = action.payload.options.endPoints;
77
77
  state.debugMode = action.payload.options.debugMode ?? false;
78
- state.iosBuildConfig = action.payload.options.iosBuildConfig ?? null;
78
+ state.iosBuildConfig = action.payload.options.ios ?? null;
79
79
 
80
80
  return state;
81
81
  case HmsStateActionTypes.CLEAR_STATES: