@100mslive/roomkit-react 0.1.5 → 0.1.6-alpha.1
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/{HLSView-P57IRMAR.js → HLSView-HNVYG5VE.js} +309 -151
- package/dist/HLSView-HNVYG5VE.js.map +7 -0
- package/dist/Prebuilt/App.d.ts +3 -0
- package/dist/Prebuilt/AppContext.d.ts +13 -0
- package/dist/Prebuilt/common/PeersSorter.d.ts +21 -0
- package/dist/Prebuilt/components/Chat/ChatFooter.d.ts +7 -0
- package/dist/Prebuilt/components/Connection/ConnectionIndicator.d.ts +6 -0
- package/dist/Prebuilt/components/Connection/TileConnection.d.ts +10 -0
- package/dist/Prebuilt/components/Footer/ChatToggle.d.ts +4 -0
- package/dist/Prebuilt/components/Footer/Footer.d.ts +6 -0
- package/dist/Prebuilt/components/Footer/RoleAccordion.d.ts +14 -0
- package/dist/Prebuilt/components/Footer/RoleOptions.d.ts +6 -0
- package/dist/Prebuilt/components/Header/Header.d.ts +2 -0
- package/dist/Prebuilt/components/Header/StreamActions.d.ts +11 -0
- package/dist/Prebuilt/components/InsetTile.d.ts +2 -0
- package/dist/Prebuilt/components/Leave/DesktopLeaveRoom.d.ts +8 -0
- package/dist/Prebuilt/components/Leave/EndSessionContent.d.ts +9 -0
- package/dist/Prebuilt/components/Leave/LeaveAtoms.d.ts +2196 -0
- package/dist/Prebuilt/components/Leave/LeaveCard.d.ts +11 -0
- package/dist/Prebuilt/components/Leave/LeaveRoom.d.ts +5 -0
- package/dist/Prebuilt/components/Leave/LeaveSessionContent.d.ts +8 -0
- package/dist/Prebuilt/components/Leave/MwebLeaveRoom.d.ts +8 -0
- package/dist/Prebuilt/components/MoreSettings/MoreSettings.d.ts +6 -0
- package/dist/Prebuilt/components/MoreSettings/SplitComponents/DesktopOptions.d.ts +6 -0
- package/dist/Prebuilt/components/MoreSettings/SplitComponents/MwebOptions.d.ts +6 -0
- package/dist/Prebuilt/components/Pagination.d.ts +6 -0
- package/dist/Prebuilt/components/Preview/PreviewContainer.d.ts +3 -0
- package/dist/Prebuilt/components/Preview/PreviewForm.d.ts +10 -0
- package/dist/Prebuilt/components/Preview/PreviewJoin.d.ts +16 -0
- package/dist/Prebuilt/components/RoleChangeRequestModal.d.ts +2 -0
- package/dist/Prebuilt/components/SecondaryTiles.d.ts +3 -0
- package/dist/Prebuilt/components/VideoLayouts/EqualProminence.d.ts +3 -0
- package/dist/Prebuilt/components/VideoLayouts/Grid.d.ts +6 -0
- package/dist/Prebuilt/components/VideoLayouts/GridLayout.d.ts +12 -0
- package/dist/Prebuilt/components/VideoLayouts/ProminenceLayout.d.ts +15 -0
- package/dist/Prebuilt/components/VideoLayouts/RoleProminence.d.ts +3 -0
- package/dist/Prebuilt/components/VideoLayouts/ScreenshareLayout.d.ts +3 -0
- package/dist/Prebuilt/components/VideoLayouts/interface.d.ts +9 -0
- package/dist/Prebuilt/components/hooks/useAutoStartStreaming.d.ts +1 -0
- package/dist/Prebuilt/components/hooks/useRedirectToLeave.d.ts +3 -0
- package/dist/Prebuilt/components/hooks/useRoleProminencePeers.d.ts +5 -0
- package/dist/Prebuilt/components/hooks/useTileLayout.d.ts +13 -0
- package/dist/Prebuilt/components/hooks/useVideoTileLayout.d.ts +13 -0
- package/dist/Prebuilt/layouts/SidePane.d.ts +9 -0
- package/dist/Prebuilt/layouts/VideoStreamingSection.d.ts +7 -0
- package/dist/Prebuilt/plugins/whiteboard/ToggleWhiteboard.d.ts +5 -0
- package/dist/Prebuilt/provider/roomLayoutProvider/hooks/useFetchRoomLayout.d.ts +1 -0
- package/dist/Prebuilt/provider/roomLayoutProvider/hooks/useInsetEnabled.d.ts +1 -0
- package/dist/Prebuilt/provider/roomLayoutProvider/hooks/useRoomLayoutScreen.d.ts +17 -0
- package/dist/Prebuilt/provider/roomLayoutProvider/index.d.ts +6 -1
- package/dist/{VirtualBackground-GGCQJ5JM.js → VirtualBackground-UM2FOUHQ.js} +5 -11
- package/dist/VirtualBackground-UM2FOUHQ.js.map +7 -0
- package/dist/{chunk-P5X32KOD.js → chunk-364HP22I.js} +8 -5
- package/dist/chunk-364HP22I.js.map +7 -0
- package/dist/{chunk-OSM4QEQG.js → chunk-LYSAET4G.js} +3742 -5462
- package/dist/chunk-LYSAET4G.js.map +7 -0
- package/dist/chunk-POE7H4IE.js +898 -0
- package/dist/chunk-POE7H4IE.js.map +7 -0
- package/dist/conference-UWLJHMB2.js +5727 -0
- package/dist/conference-UWLJHMB2.js.map +7 -0
- package/dist/index.cjs.js +9655 -15326
- package/dist/index.cjs.js.map +4 -4
- package/dist/index.js +2 -2
- package/dist/meta.cjs.json +2513 -3456
- package/dist/meta.esbuild.json +2807 -3838
- package/package.json +8 -7
- package/src/Button/Button.tsx +2 -2
- package/src/Prebuilt/App.tsx +58 -53
- package/src/Prebuilt/{AppContext.jsx → AppContext.tsx} +11 -3
- package/src/Prebuilt/IconButton.jsx +11 -0
- package/src/Prebuilt/Prebuilt.stories.tsx +1 -0
- package/src/Prebuilt/common/{PeersSorter.js → PeersSorter.ts} +16 -11
- package/src/Prebuilt/common/constants.js +4 -114
- package/src/Prebuilt/common/hooks.js +34 -1
- package/src/Prebuilt/common/utils.js +1 -9
- package/src/Prebuilt/components/AppData/AppData.jsx +11 -15
- package/src/Prebuilt/components/AppData/useUISettings.js +6 -10
- package/src/Prebuilt/components/AudioVideoToggle.jsx +10 -2
- package/src/Prebuilt/components/AuthToken.jsx +11 -42
- package/src/Prebuilt/components/Chat/Chat.jsx +75 -27
- package/src/Prebuilt/components/Chat/ChatBody.jsx +95 -36
- package/src/Prebuilt/components/Chat/ChatFooter.tsx +199 -0
- package/src/Prebuilt/components/Chat/ChatParticipantHeader.jsx +84 -0
- package/src/Prebuilt/components/Chat/ChatSelector.jsx +16 -17
- package/src/Prebuilt/components/Chat/ChatSelectorContainer.jsx +81 -0
- package/src/Prebuilt/components/Chat/useEmojiPickerStyles.js +5 -4
- package/src/Prebuilt/components/Connection/{ConnectionIndicator.jsx → ConnectionIndicator.tsx} +12 -4
- package/src/Prebuilt/components/Connection/TileConnection.tsx +71 -0
- package/src/Prebuilt/components/EmojiReaction.jsx +19 -22
- package/src/Prebuilt/components/Footer/{ChatToggle.jsx → ChatToggle.tsx} +13 -9
- package/src/Prebuilt/components/Footer/Footer.tsx +98 -0
- package/src/Prebuilt/components/Footer/ParticipantList.jsx +187 -179
- package/src/Prebuilt/components/Footer/RoleAccordion.tsx +94 -0
- package/src/Prebuilt/components/Footer/RoleOptions.tsx +155 -0
- package/src/Prebuilt/components/FullPageProgress.jsx +3 -3
- package/src/Prebuilt/components/HMSVideo/Controls.jsx +3 -2
- package/src/Prebuilt/components/HMSVideo/HLSQualitySelector.jsx +63 -18
- package/src/Prebuilt/components/HMSVideo/HMSVideo.jsx +2 -2
- package/src/Prebuilt/components/HMSVideo/PlayButton.jsx +1 -1
- package/src/Prebuilt/components/HMSVideo/VideoProgress.jsx +5 -6
- package/src/Prebuilt/components/HMSVideo/VideoTime.jsx +3 -3
- package/src/Prebuilt/components/HMSVideo/VolumeControl.jsx +38 -9
- package/src/Prebuilt/components/Header/{ConferencingHeader.jsx → Header.tsx} +9 -7
- package/src/Prebuilt/components/Header/HeaderComponents.jsx +13 -4
- package/src/Prebuilt/components/Header/{StreamActions.jsx → StreamActions.tsx} +54 -67
- package/src/Prebuilt/components/Header/common.jsx +5 -2
- package/src/Prebuilt/components/Header/index.tsx +1 -0
- package/src/Prebuilt/components/IconButtonWithOptions/IconButtonWithOptions.jsx +23 -4
- package/src/Prebuilt/components/InsetTile.tsx +128 -0
- package/src/Prebuilt/components/{MoreSettings/SplitComponents/DesktopLeaveRoom.jsx → Leave/DesktopLeaveRoom.tsx} +67 -25
- package/src/Prebuilt/components/{EndSessionContent.jsx → Leave/EndSessionContent.tsx} +18 -11
- package/src/Prebuilt/components/Leave/LeaveAtoms.tsx +26 -0
- package/src/Prebuilt/components/Leave/LeaveCard.tsx +36 -0
- package/src/Prebuilt/components/Leave/LeaveRoom.tsx +66 -0
- package/src/Prebuilt/components/{LeaveSessionContent.jsx → Leave/LeaveSessionContent.tsx} +20 -6
- package/src/Prebuilt/components/{MoreSettings/SplitComponents/MwebLeaveRoom.jsx → Leave/MwebLeaveRoom.tsx} +43 -18
- package/src/Prebuilt/components/MetaActions.jsx +15 -23
- package/src/Prebuilt/components/MoreSettings/ActionTile.jsx +5 -0
- package/src/Prebuilt/components/MoreSettings/ChangeNameContent.jsx +16 -7
- package/src/Prebuilt/components/MoreSettings/ChangeNameModal.jsx +1 -1
- package/src/Prebuilt/components/MoreSettings/FullScreenItem.jsx +1 -4
- package/src/Prebuilt/components/MoreSettings/MoreSettings.tsx +27 -0
- package/src/Prebuilt/components/MoreSettings/SplitComponents/DesktopOptions.tsx +216 -0
- package/src/Prebuilt/components/MoreSettings/SplitComponents/{MwebOptions.jsx → MwebOptions.tsx} +107 -45
- package/src/Prebuilt/components/Notifications/HLSFailureModal.jsx +3 -1
- package/src/Prebuilt/components/Notifications/Notifications.jsx +46 -30
- package/src/Prebuilt/components/Notifications/PeerNotifications.jsx +14 -2
- package/src/Prebuilt/components/Notifications/PermissionErrorModal.jsx +10 -4
- package/src/Prebuilt/components/Notifications/ReconnectNotifications.jsx +5 -11
- package/src/Prebuilt/components/PIP/PIPComponent.jsx +7 -16
- package/src/Prebuilt/components/PIP/PIPManager.js +1 -0
- package/src/Prebuilt/components/Pagination.tsx +60 -0
- package/src/Prebuilt/components/Playlist/Playlist.jsx +1 -6
- package/src/Prebuilt/components/PostLeave.jsx +7 -7
- package/src/Prebuilt/components/Preview/{PreviewContainer.jsx → PreviewContainer.tsx} +16 -15
- package/src/Prebuilt/components/Preview/{PreviewForm.jsx → PreviewForm.tsx} +16 -8
- package/src/Prebuilt/components/Preview/{PreviewJoin.jsx → PreviewJoin.tsx} +48 -22
- package/src/Prebuilt/components/RaiseHand.jsx +0 -7
- package/src/Prebuilt/components/RoleChangeRequestModal.tsx +119 -0
- package/src/Prebuilt/components/ScreenshareDisplay.jsx +4 -10
- package/src/Prebuilt/components/ScreenshareTile.jsx +43 -36
- package/src/Prebuilt/components/SecondaryTiles.tsx +36 -0
- package/src/Prebuilt/components/Settings/LayoutSettings.jsx +2 -12
- package/src/Prebuilt/components/Settings/NotificationSettings.jsx +3 -9
- package/src/Prebuilt/components/Settings/SettingsModal.jsx +3 -9
- package/src/Prebuilt/components/StatsForNerds.jsx +3 -1
- package/src/Prebuilt/components/TileMenu/TileMenu.jsx +16 -17
- package/src/Prebuilt/components/TileMenu/TileMenuContent.jsx +33 -27
- package/src/Prebuilt/components/Toast/ToastConfig.jsx +58 -15
- package/src/Prebuilt/components/VideoLayouts/EqualProminence.tsx +65 -0
- package/src/Prebuilt/components/VideoLayouts/Grid.tsx +43 -0
- package/src/Prebuilt/components/VideoLayouts/GridLayout.tsx +110 -0
- package/src/Prebuilt/components/VideoLayouts/ProminenceLayout.tsx +74 -0
- package/src/Prebuilt/components/VideoLayouts/RoleProminence.tsx +59 -0
- package/src/Prebuilt/components/VideoLayouts/ScreenshareLayout.tsx +52 -0
- package/src/Prebuilt/components/VideoLayouts/interface.ts +10 -0
- package/src/Prebuilt/components/VideoTile.jsx +116 -74
- package/src/Prebuilt/components/conference.jsx +86 -85
- package/src/Prebuilt/components/hooks/useAutoStartStreaming.tsx +57 -0
- package/src/Prebuilt/components/hooks/useMetadata.jsx +19 -3
- package/src/Prebuilt/components/hooks/useRedirectToLeave.tsx +34 -0
- package/src/Prebuilt/components/hooks/useRoleProminencePeers.tsx +38 -0
- package/src/Prebuilt/components/hooks/useTileLayout.tsx +127 -0
- package/src/Prebuilt/components/hooks/useVideoTileLayout.ts +26 -0
- package/src/Prebuilt/components/pdfAnnotator/pdfFileOptions.jsx +5 -72
- package/src/Prebuilt/components/pdfAnnotator/submitPdf.jsx +4 -45
- package/src/Prebuilt/components/pdfAnnotator/uploadedFile.jsx +2 -17
- package/src/Prebuilt/components/peerTileUtils.jsx +1 -1
- package/src/Prebuilt/images/empty-chat.svg +12 -0
- package/src/Prebuilt/layouts/EmbedView.jsx +17 -50
- package/src/Prebuilt/layouts/HLSView.jsx +138 -51
- package/src/Prebuilt/layouts/PDFView.jsx +1 -11
- package/src/Prebuilt/layouts/SidePane.tsx +108 -0
- package/src/Prebuilt/layouts/VideoStreamingSection.tsx +96 -0
- package/src/Prebuilt/layouts/WhiteboardView.jsx +10 -34
- package/src/Prebuilt/plugins/FlyingEmoji.jsx +14 -2
- package/src/Prebuilt/plugins/VirtualBackground/VirtualBackground.jsx +1 -4
- package/src/Prebuilt/plugins/whiteboard/{ToggleWhiteboard.jsx → ToggleWhiteboard.tsx} +5 -9
- package/src/Prebuilt/primitives/DialogContent.jsx +15 -11
- package/src/Prebuilt/provider/roomLayoutProvider/constants/index.ts +17 -2
- package/src/Prebuilt/provider/roomLayoutProvider/hooks/useFetchRoomLayout.ts +36 -13
- package/src/Prebuilt/provider/roomLayoutProvider/hooks/useInsetEnabled.ts +10 -0
- package/src/Prebuilt/provider/roomLayoutProvider/hooks/useRoomLayoutScreen.ts +65 -0
- package/src/Prebuilt/provider/roomLayoutProvider/index.tsx +17 -6
- package/src/Prebuilt/services/FeatureFlags.jsx +0 -1
- package/src/VideoTile/StyledVideoTile.tsx +1 -0
- package/dist/HLSView-P57IRMAR.js.map +0 -7
- package/dist/PinnedTrackView-4FYJEBTB.js +0 -102
- package/dist/PinnedTrackView-4FYJEBTB.js.map +0 -7
- package/dist/VirtualBackground-GGCQJ5JM.js.map +0 -7
- package/dist/chunk-IVTWKQI3.js +0 -827
- package/dist/chunk-IVTWKQI3.js.map +0 -7
- package/dist/chunk-OSM4QEQG.js.map +0 -7
- package/dist/chunk-P5X32KOD.js.map +0 -7
- package/dist/chunk-RVCZPPTL.js +0 -1100
- package/dist/chunk-RVCZPPTL.js.map +0 -7
- package/dist/conference-P6I6ESVF.js +0 -8995
- package/dist/conference-P6I6ESVF.js.map +0 -7
- package/src/Prebuilt/components/AudioLevel/BeamSpeakerLabelsLogging.jsx +0 -16
- package/src/Prebuilt/components/Chat/ChatFooter.jsx +0 -150
- package/src/Prebuilt/components/Chat/ChatHeader.jsx +0 -67
- package/src/Prebuilt/components/Connection/TileConnection.jsx +0 -39
- package/src/Prebuilt/components/EqualProminence.jsx +0 -180
- package/src/Prebuilt/components/FirstPersonDisplay.jsx +0 -50
- package/src/Prebuilt/components/Footer/Footer.jsx +0 -73
- package/src/Prebuilt/components/Header/Header.jsx +0 -8
- package/src/Prebuilt/components/Header/StreamingHeader.jsx +0 -54
- package/src/Prebuilt/components/LeaveCard.jsx +0 -19
- package/src/Prebuilt/components/LeaveRoom.jsx +0 -94
- package/src/Prebuilt/components/MoreSettings/MoreSettings.jsx +0 -10
- package/src/Prebuilt/components/MoreSettings/SplitComponents/DesktopOptions.jsx +0 -219
- package/src/Prebuilt/components/Notifications/MessageNotifications.jsx +0 -25
- package/src/Prebuilt/components/Pagination.jsx +0 -29
- package/src/Prebuilt/components/RoleChangeRequestModal.jsx +0 -26
- package/src/Prebuilt/components/VideoList.jsx +0 -73
- package/src/Prebuilt/components/gridView.jsx +0 -85
- package/src/Prebuilt/components/hooks/useFeatures.js +0 -22
- package/src/Prebuilt/components/hooks/useNavigation.js +0 -19
- package/src/Prebuilt/components/hooks/useSkipPreview.jsx +0 -20
- package/src/Prebuilt/components/pdfAnnotator/pdfErrorView.jsx +0 -29
- package/src/Prebuilt/images/Logo.svg +0 -8
- package/src/Prebuilt/layouts/ActiveSpeakerView.jsx +0 -34
- package/src/Prebuilt/layouts/InsetView.jsx +0 -260
- package/src/Prebuilt/layouts/PinnedTrackView.jsx +0 -59
- package/src/Prebuilt/layouts/SidePane.jsx +0 -52
- package/src/Prebuilt/layouts/mainGridView.jsx +0 -98
- package/src/Prebuilt/layouts/mainView.jsx +0 -141
- package/src/Prebuilt/layouts/screenShareView.jsx +0 -183
- /package/{src/Prebuilt/components/Header/index.jsx → dist/Prebuilt/components/Header/index.d.ts} +0 -0
- /package/src/Prebuilt/components/{ScreenShare.jsx → ScreenShareToggle.jsx} +0 -0
- /package/src/{assets → Prebuilt/images}/android-perm-1.png +0 -0
- /package/src/{assets → Prebuilt/images}/ios-perm-0.png +0 -0
package/package.json
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"prebuilt",
|
|
11
11
|
"roomkit"
|
|
12
12
|
],
|
|
13
|
-
"version": "0.1.
|
|
13
|
+
"version": "0.1.6-alpha.1",
|
|
14
14
|
"author": "100ms",
|
|
15
15
|
"license": "MIT",
|
|
16
16
|
"files": [
|
|
@@ -62,6 +62,7 @@
|
|
|
62
62
|
"@types/lodash.merge": "^4.6.6",
|
|
63
63
|
"@types/mdx": "2.0.2",
|
|
64
64
|
"@types/react": "^18.1.0",
|
|
65
|
+
"@types/react-window": "^1.8.5",
|
|
65
66
|
"babel-loader": "^8.2.5",
|
|
66
67
|
"babel-plugin-react-require": "3.1.3",
|
|
67
68
|
"react": "^18.1.0",
|
|
@@ -75,11 +76,11 @@
|
|
|
75
76
|
"react": ">=17.0.2 <19.0.0"
|
|
76
77
|
},
|
|
77
78
|
"dependencies": {
|
|
78
|
-
"@100mslive/hls-player": "0.1.
|
|
79
|
-
"@100mslive/hms-virtual-background": "1.11.
|
|
80
|
-
"@100mslive/react-icons": "0.8.
|
|
81
|
-
"@100mslive/react-sdk": "0.8.
|
|
82
|
-
"@100mslive/types-prebuilt": "0.
|
|
79
|
+
"@100mslive/hls-player": "0.1.15-alpha.1",
|
|
80
|
+
"@100mslive/hms-virtual-background": "1.11.15-alpha.1",
|
|
81
|
+
"@100mslive/react-icons": "0.8.15-alpha.1",
|
|
82
|
+
"@100mslive/react-sdk": "0.8.15-alpha.1",
|
|
83
|
+
"@100mslive/types-prebuilt": "0.12.0",
|
|
83
84
|
"@emoji-mart/data": "^1.0.6",
|
|
84
85
|
"@emoji-mart/react": "^1.0.1",
|
|
85
86
|
"@radix-ui/react-accordion": "1.0.0",
|
|
@@ -114,5 +115,5 @@
|
|
|
114
115
|
"uuid": "^8.3.2",
|
|
115
116
|
"worker-timers": "^7.0.40"
|
|
116
117
|
},
|
|
117
|
-
"gitHead": "
|
|
118
|
+
"gitHead": "d3f042d48bb30f16c6c63f2a75c406611c0f2831"
|
|
118
119
|
}
|
package/src/Button/Button.tsx
CHANGED
|
@@ -151,8 +151,8 @@ const StyledButton = styled('button', {
|
|
|
151
151
|
'$alert_error_bright',
|
|
152
152
|
'$alert_error_dim',
|
|
153
153
|
'$alert_error_dim',
|
|
154
|
-
'$
|
|
155
|
-
'$
|
|
154
|
+
'$alert_error_brighter',
|
|
155
|
+
'$on_primary_low',
|
|
156
156
|
),
|
|
157
157
|
primary: getButtonVariants(
|
|
158
158
|
'$primary_default',
|
package/src/Prebuilt/App.tsx
CHANGED
|
@@ -13,8 +13,6 @@ import {
|
|
|
13
13
|
// @ts-ignore: No implicit Any
|
|
14
14
|
import { AppData } from './components/AppData/AppData';
|
|
15
15
|
// @ts-ignore: No implicit Any
|
|
16
|
-
import { BeamSpeakerLabelsLogging } from './components/AudioLevel/BeamSpeakerLabelsLogging';
|
|
17
|
-
// @ts-ignore: No implicit Any
|
|
18
16
|
import AuthToken from './components/AuthToken';
|
|
19
17
|
// @ts-ignore: No implicit Any
|
|
20
18
|
import { ErrorBoundary } from './components/ErrorBoundary';
|
|
@@ -32,17 +30,21 @@ import PostLeave from './components/PostLeave';
|
|
|
32
30
|
import PreviewContainer from './components/Preview/PreviewContainer';
|
|
33
31
|
// @ts-ignore: No implicit Any
|
|
34
32
|
import { ToastContainer } from './components/Toast/ToastContainer';
|
|
35
|
-
import { RoomLayoutContext, RoomLayoutProvider } from './provider/roomLayoutProvider';
|
|
33
|
+
import { RoomLayoutContext, RoomLayoutProvider, useRoomLayout } from './provider/roomLayoutProvider';
|
|
36
34
|
import { Box } from '../Layout';
|
|
37
35
|
import { globalStyles, HMSThemeProvider } from '../Theme';
|
|
38
|
-
// @ts-ignore: No implicit Any
|
|
39
36
|
import { HMSPrebuiltContext, useHMSPrebuiltContext } from './AppContext';
|
|
40
37
|
// @ts-ignore: No implicit Any
|
|
41
38
|
import { FlyingEmoji } from './plugins/FlyingEmoji';
|
|
42
39
|
// @ts-ignore: No implicit Any
|
|
43
40
|
import { RemoteStopScreenshare } from './plugins/RemoteStopScreenshare';
|
|
44
41
|
// @ts-ignore: No implicit Any
|
|
45
|
-
import {
|
|
42
|
+
import { useIsNotificationDisabled } from './components/AppData/useUISettings';
|
|
43
|
+
import { useAutoStartStreaming } from './components/hooks/useAutoStartStreaming';
|
|
44
|
+
import {
|
|
45
|
+
useRoomLayoutLeaveScreen,
|
|
46
|
+
useRoomLayoutPreviewScreen,
|
|
47
|
+
} from './provider/roomLayoutProvider/hooks/useRoomLayoutScreen';
|
|
46
48
|
// @ts-ignore: No implicit Any
|
|
47
49
|
import { FeatureFlags } from './services/FeatureFlags';
|
|
48
50
|
|
|
@@ -62,6 +64,9 @@ export type HMSPrebuiltProps = {
|
|
|
62
64
|
themes?: Theme[];
|
|
63
65
|
options?: HMSPrebuiltOptions;
|
|
64
66
|
screens?: Screens;
|
|
67
|
+
authToken?: string;
|
|
68
|
+
roomId?: string;
|
|
69
|
+
role?: string;
|
|
65
70
|
onLeave?: () => void;
|
|
66
71
|
};
|
|
67
72
|
|
|
@@ -72,20 +77,13 @@ export type HMSPrebuiltRefType = {
|
|
|
72
77
|
hmsNotifications: IHMSNotifications;
|
|
73
78
|
};
|
|
74
79
|
|
|
75
|
-
// TODO: remove now that there are options to change to portrait
|
|
76
|
-
const getAspectRatio = ({ width, height }: { width: number; height: number }) => {
|
|
77
|
-
const host = process.env.REACT_APP_HOST_NAME || '';
|
|
78
|
-
const portraitDomains = (process.env.REACT_APP_PORTRAIT_MODE_DOMAINS || '').split(',');
|
|
79
|
-
if (portraitDomains.includes(host) && width > height) {
|
|
80
|
-
return { width: height, height: width };
|
|
81
|
-
}
|
|
82
|
-
return { width, height };
|
|
83
|
-
};
|
|
84
|
-
|
|
85
80
|
export const HMSPrebuilt = React.forwardRef<HMSPrebuiltRefType, HMSPrebuiltProps>(
|
|
86
81
|
(
|
|
87
82
|
{
|
|
88
83
|
roomCode = '',
|
|
84
|
+
authToken = '',
|
|
85
|
+
roomId = '',
|
|
86
|
+
role = '',
|
|
89
87
|
logo,
|
|
90
88
|
typography,
|
|
91
89
|
themes,
|
|
@@ -95,9 +93,7 @@ export const HMSPrebuilt = React.forwardRef<HMSPrebuiltRefType, HMSPrebuiltProps
|
|
|
95
93
|
},
|
|
96
94
|
ref,
|
|
97
95
|
) => {
|
|
98
|
-
const aspectRatio = '1-1';
|
|
99
96
|
const metadata = '';
|
|
100
|
-
const { 0: width, 1: height } = aspectRatio.split('-').map(el => parseInt(el));
|
|
101
97
|
const reactiveStore = useRef<HMSPrebuiltRefType>();
|
|
102
98
|
|
|
103
99
|
const [hydrated, setHydrated] = React.useState(false);
|
|
@@ -108,6 +104,7 @@ export const HMSPrebuilt = React.forwardRef<HMSPrebuiltRefType, HMSPrebuiltProps
|
|
|
108
104
|
const hmsActions = hms.getActions();
|
|
109
105
|
const hmsNotifications = hms.getNotifications();
|
|
110
106
|
const hmsStats = hms.getStats();
|
|
107
|
+
hms.triggerOnSubscribe();
|
|
111
108
|
|
|
112
109
|
reactiveStore.current = {
|
|
113
110
|
hmsActions,
|
|
@@ -152,6 +149,15 @@ export const HMSPrebuilt = React.forwardRef<HMSPrebuiltRefType, HMSPrebuiltProps
|
|
|
152
149
|
screens,
|
|
153
150
|
};
|
|
154
151
|
|
|
152
|
+
if (!roomCode && !(authToken && roomId && role)) {
|
|
153
|
+
console.error(`
|
|
154
|
+
HMSPrebuilt can be initialised by providing:
|
|
155
|
+
either just "roomCode" or "authToken" and "roomId" and "role".
|
|
156
|
+
Please check if you are providing the above values for initialising prebuilt.
|
|
157
|
+
`);
|
|
158
|
+
throw Error('Incorrect initializing params for HMSPrebuilt component');
|
|
159
|
+
}
|
|
160
|
+
|
|
155
161
|
if (!hydrated) {
|
|
156
162
|
return null;
|
|
157
163
|
}
|
|
@@ -163,8 +169,8 @@ export const HMSPrebuilt = React.forwardRef<HMSPrebuiltRefType, HMSPrebuiltProps
|
|
|
163
169
|
<HMSPrebuiltContext.Provider
|
|
164
170
|
value={{
|
|
165
171
|
roomCode,
|
|
166
|
-
|
|
167
|
-
|
|
172
|
+
roomId,
|
|
173
|
+
role,
|
|
168
174
|
onLeave,
|
|
169
175
|
userName,
|
|
170
176
|
userId,
|
|
@@ -185,7 +191,8 @@ export const HMSPrebuilt = React.forwardRef<HMSPrebuiltRefType, HMSPrebuiltProps
|
|
|
185
191
|
>
|
|
186
192
|
<RoomLayoutProvider roomLayoutEndpoint={roomLayoutEndpoint} overrideLayout={overrideLayout}>
|
|
187
193
|
<RoomLayoutContext.Consumer>
|
|
188
|
-
{
|
|
194
|
+
{data => {
|
|
195
|
+
const layout = data?.layout;
|
|
189
196
|
const theme: Theme = layout?.themes?.[0] || ({} as Theme);
|
|
190
197
|
const { typography } = layout || {};
|
|
191
198
|
let fontFamily = ['sans-serif'];
|
|
@@ -199,7 +206,6 @@ export const HMSPrebuilt = React.forwardRef<HMSPrebuiltRefType, HMSPrebuiltProps
|
|
|
199
206
|
// no updates to the themes are fired if the name is same.
|
|
200
207
|
// TODO: cache the theme and do deep check to trigger name change in the theme
|
|
201
208
|
themeType={`${theme.name}-${Date.now()}`}
|
|
202
|
-
aspectRatio={getAspectRatio({ width, height })}
|
|
203
209
|
theme={{
|
|
204
210
|
//@ts-ignore: Prebuilt theme to match stiches theme
|
|
205
211
|
colors: theme.palette,
|
|
@@ -219,7 +225,7 @@ export const HMSPrebuilt = React.forwardRef<HMSPrebuiltRefType, HMSPrebuiltProps
|
|
|
219
225
|
'-webkit-text-size-adjust': '100%',
|
|
220
226
|
}}
|
|
221
227
|
>
|
|
222
|
-
<AppRoutes authTokenByRoomCodeEndpoint={tokenByRoomCodeEndpoint} />
|
|
228
|
+
<AppRoutes authTokenByRoomCodeEndpoint={tokenByRoomCodeEndpoint} defaultAuthToken={authToken} />
|
|
223
229
|
</Box>
|
|
224
230
|
</HMSThemeProvider>
|
|
225
231
|
);
|
|
@@ -237,31 +243,21 @@ HMSPrebuilt.displayName = 'HMSPrebuilt';
|
|
|
237
243
|
|
|
238
244
|
const Redirector = ({ showPreview }: { showPreview: boolean }) => {
|
|
239
245
|
const { roomId, role } = useParams();
|
|
240
|
-
|
|
241
|
-
if (!roomId && !role) {
|
|
242
|
-
return <Navigate to="/" />;
|
|
243
|
-
}
|
|
244
|
-
if (!roomId) {
|
|
245
|
-
return <Navigate to="/" />;
|
|
246
|
-
}
|
|
247
|
-
if (['streaming', 'preview', 'meeting', 'leave'].includes(roomId) && !role) {
|
|
248
|
-
return <Navigate to="/" />;
|
|
249
|
-
}
|
|
250
|
-
|
|
251
|
-
return <Navigate to={`${getRoutePrefix()}/${showPreview ? 'preview' : 'meeting'}/${roomId}/${role || ''}`} />;
|
|
246
|
+
return <Navigate to={`/${showPreview ? 'preview' : 'meeting'}/${roomId}/${role || ''}`} />;
|
|
252
247
|
};
|
|
253
248
|
|
|
254
249
|
const RouteList = () => {
|
|
255
|
-
const {
|
|
256
|
-
|
|
250
|
+
const { isPreviewScreenEnabled } = useRoomLayoutPreviewScreen();
|
|
251
|
+
const { isLeaveScreenEnabled } = useRoomLayoutLeaveScreen();
|
|
252
|
+
useAutoStartStreaming();
|
|
257
253
|
return (
|
|
258
254
|
<Routes>
|
|
259
|
-
{
|
|
255
|
+
{isPreviewScreenEnabled ? (
|
|
260
256
|
<Route path="preview">
|
|
261
257
|
<Route
|
|
262
258
|
path=":roomId/:role"
|
|
263
259
|
element={
|
|
264
|
-
<Suspense fallback={<FullPageProgress
|
|
260
|
+
<Suspense fallback={<FullPageProgress text="Loading preview..." />}>
|
|
265
261
|
<PreviewContainer />
|
|
266
262
|
</Suspense>
|
|
267
263
|
}
|
|
@@ -269,18 +265,18 @@ const RouteList = () => {
|
|
|
269
265
|
<Route
|
|
270
266
|
path=":roomId"
|
|
271
267
|
element={
|
|
272
|
-
<Suspense fallback={<FullPageProgress
|
|
268
|
+
<Suspense fallback={<FullPageProgress text="Loading preview..." />}>
|
|
273
269
|
<PreviewContainer />
|
|
274
270
|
</Suspense>
|
|
275
271
|
}
|
|
276
272
|
/>
|
|
277
273
|
</Route>
|
|
278
|
-
)}
|
|
274
|
+
) : null}
|
|
279
275
|
<Route path="meeting">
|
|
280
276
|
<Route
|
|
281
277
|
path=":roomId/:role"
|
|
282
278
|
element={
|
|
283
|
-
<Suspense fallback={<FullPageProgress
|
|
279
|
+
<Suspense fallback={<FullPageProgress text="Joining..." />}>
|
|
284
280
|
<Conference />
|
|
285
281
|
</Suspense>
|
|
286
282
|
}
|
|
@@ -288,21 +284,21 @@ const RouteList = () => {
|
|
|
288
284
|
<Route
|
|
289
285
|
path=":roomId"
|
|
290
286
|
element={
|
|
291
|
-
<Suspense fallback={<FullPageProgress
|
|
287
|
+
<Suspense fallback={<FullPageProgress text="Joining..." />}>
|
|
292
288
|
<Conference />
|
|
293
289
|
</Suspense>
|
|
294
290
|
}
|
|
295
291
|
/>
|
|
296
292
|
</Route>
|
|
297
|
-
{
|
|
293
|
+
{isLeaveScreenEnabled ? (
|
|
298
294
|
<Route path="leave">
|
|
299
295
|
<Route path=":roomId/:role" element={<PostLeave />} />
|
|
300
296
|
<Route path=":roomId" element={<PostLeave />} />
|
|
301
297
|
</Route>
|
|
302
|
-
)}
|
|
298
|
+
) : null}
|
|
303
299
|
|
|
304
|
-
<Route path="/:roomId/:role" element={<Redirector showPreview={
|
|
305
|
-
<Route path="/:roomId/" element={<Redirector showPreview={
|
|
300
|
+
<Route path="/:roomId/:role" element={<Redirector showPreview={isPreviewScreenEnabled} />} />
|
|
301
|
+
<Route path="/:roomId/" element={<Redirector showPreview={isPreviewScreenEnabled} />} />
|
|
306
302
|
</Routes>
|
|
307
303
|
);
|
|
308
304
|
};
|
|
@@ -335,21 +331,30 @@ const Router = ({ children }: { children: ReactElement }) => {
|
|
|
335
331
|
);
|
|
336
332
|
};
|
|
337
333
|
|
|
338
|
-
function AppRoutes({
|
|
334
|
+
function AppRoutes({
|
|
335
|
+
authTokenByRoomCodeEndpoint,
|
|
336
|
+
defaultAuthToken,
|
|
337
|
+
}: {
|
|
338
|
+
authTokenByRoomCodeEndpoint: string;
|
|
339
|
+
defaultAuthToken?: string;
|
|
340
|
+
}) {
|
|
341
|
+
const roomLayout = useRoomLayout();
|
|
342
|
+
const isNotificationsDisabled = useIsNotificationDisabled();
|
|
339
343
|
return (
|
|
340
344
|
<Router>
|
|
341
345
|
<>
|
|
342
346
|
<ToastContainer />
|
|
343
347
|
<Notifications />
|
|
344
348
|
<BackSwipe />
|
|
345
|
-
<FlyingEmoji />
|
|
349
|
+
{!isNotificationsDisabled && <FlyingEmoji />}
|
|
346
350
|
<RemoteStopScreenshare />
|
|
347
351
|
<KeyboardHandler />
|
|
348
|
-
<
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
352
|
+
<AuthToken authTokenByRoomCodeEndpoint={authTokenByRoomCodeEndpoint} defaultAuthToken={defaultAuthToken} />
|
|
353
|
+
{roomLayout && (
|
|
354
|
+
<Routes>
|
|
355
|
+
<Route path="/*" element={<RouteList />} />
|
|
356
|
+
</Routes>
|
|
357
|
+
)}
|
|
353
358
|
</>
|
|
354
359
|
</Router>
|
|
355
360
|
);
|
|
@@ -1,8 +1,16 @@
|
|
|
1
1
|
import React, { useContext } from 'react';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
type HMSPrebuiltContextType = {
|
|
4
|
+
roomCode: string;
|
|
5
|
+
roomId?: string;
|
|
6
|
+
role?: string;
|
|
7
|
+
userName?: string;
|
|
8
|
+
userId?: string;
|
|
9
|
+
endpoints?: Record<string, string>;
|
|
10
|
+
onLeave?: () => void;
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
export const HMSPrebuiltContext = React.createContext<HMSPrebuiltContextType>({
|
|
6
14
|
roomCode: '',
|
|
7
15
|
userName: '',
|
|
8
16
|
userId: '',
|
|
@@ -5,14 +5,25 @@ const IconButton = styled(BaseIconButton, {
|
|
|
5
5
|
width: '$14',
|
|
6
6
|
height: '$14',
|
|
7
7
|
border: '1px solid $border_bright',
|
|
8
|
+
bg: '$background_dim',
|
|
8
9
|
r: '$1',
|
|
9
10
|
variants: {
|
|
10
11
|
active: {
|
|
12
|
+
true: {
|
|
13
|
+
color: '$on_surface_high',
|
|
14
|
+
backgroundColor: '$transparent',
|
|
15
|
+
},
|
|
11
16
|
false: {
|
|
12
17
|
border: '1px solid transparent',
|
|
13
18
|
color: '$on_primary_high',
|
|
14
19
|
},
|
|
15
20
|
},
|
|
21
|
+
disabled: {
|
|
22
|
+
true: {
|
|
23
|
+
backgroundColor: '$surface_brighter',
|
|
24
|
+
color: '$on_surface_low',
|
|
25
|
+
},
|
|
26
|
+
},
|
|
16
27
|
},
|
|
17
28
|
});
|
|
18
29
|
|
|
@@ -9,6 +9,7 @@ export default {
|
|
|
9
9
|
roomCode: { control: { type: 'text' }, defaultValue: '' },
|
|
10
10
|
logo: { control: { type: 'object' }, defaultValue: null },
|
|
11
11
|
typography: { control: { type: 'object' }, defaultValue: 'Roboto' },
|
|
12
|
+
options: { control: { type: 'object' }, defaultValue: {} },
|
|
12
13
|
},
|
|
13
14
|
} as Meta<typeof HMSPrebuilt>;
|
|
14
15
|
|
|
@@ -1,17 +1,22 @@
|
|
|
1
|
-
import { selectDominantSpeaker } from '@100mslive/
|
|
1
|
+
import { HMSPeer, HMSPeerID, IStoreReadOnly, selectDominantSpeaker } from '@100mslive/react-sdk';
|
|
2
2
|
|
|
3
3
|
class PeersSorter {
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
storeUnsubscribe: undefined | (() => void) = undefined;
|
|
5
|
+
store: IStoreReadOnly<any>;
|
|
6
|
+
peers: Map<string, HMSPeer>;
|
|
7
|
+
lruPeers: Set<HMSPeerID>;
|
|
8
|
+
tilesPerPage!: number;
|
|
9
|
+
speaker?: HMSPeer;
|
|
10
|
+
listeners: Set<(peers: HMSPeer[]) => void> = new Set();
|
|
6
11
|
|
|
7
|
-
constructor(store) {
|
|
12
|
+
constructor(store: IStoreReadOnly<any>) {
|
|
8
13
|
this.store = store;
|
|
9
14
|
this.peers = new Map();
|
|
10
15
|
this.lruPeers = new Set();
|
|
11
16
|
this.speaker = undefined;
|
|
12
17
|
}
|
|
13
18
|
|
|
14
|
-
setPeersAndTilesPerPage = ({ peers, tilesPerPage }) => {
|
|
19
|
+
setPeersAndTilesPerPage = ({ peers, tilesPerPage }: { peers: HMSPeer[]; tilesPerPage: number }) => {
|
|
15
20
|
this.tilesPerPage = tilesPerPage;
|
|
16
21
|
const peerIds = new Set(peers.map(peer => peer.id));
|
|
17
22
|
// remove existing peers which are no longer provided
|
|
@@ -33,7 +38,7 @@ class PeersSorter {
|
|
|
33
38
|
this.moveSpeakerToFront(this.speaker);
|
|
34
39
|
};
|
|
35
40
|
|
|
36
|
-
onUpdate = cb => {
|
|
41
|
+
onUpdate = (cb: (peers: HMSPeer[]) => void) => {
|
|
37
42
|
this.listeners.add(cb);
|
|
38
43
|
};
|
|
39
44
|
|
|
@@ -43,7 +48,7 @@ class PeersSorter {
|
|
|
43
48
|
this.storeUnsubscribe?.();
|
|
44
49
|
};
|
|
45
50
|
|
|
46
|
-
moveSpeakerToFront = speaker => {
|
|
51
|
+
moveSpeakerToFront = (speaker?: HMSPeer) => {
|
|
47
52
|
if (!speaker) {
|
|
48
53
|
this.updateListeners();
|
|
49
54
|
return;
|
|
@@ -54,15 +59,15 @@ class PeersSorter {
|
|
|
54
59
|
}
|
|
55
60
|
// delete to insert at beginning
|
|
56
61
|
this.lruPeers.delete(speaker.id);
|
|
57
|
-
|
|
58
|
-
while (lruPeerArray.length >= this.tilesPerPage) {
|
|
62
|
+
const lruPeerArray = Array.from(this.lruPeers);
|
|
63
|
+
while (lruPeerArray.length >= this.tilesPerPage && lruPeerArray.length) {
|
|
59
64
|
lruPeerArray.pop();
|
|
60
65
|
}
|
|
61
66
|
this.lruPeers = new Set([speaker.id, ...lruPeerArray]);
|
|
62
67
|
this.updateListeners();
|
|
63
68
|
};
|
|
64
69
|
|
|
65
|
-
onDominantSpeakerChange = speaker => {
|
|
70
|
+
onDominantSpeakerChange = (speaker: HMSPeer | null) => {
|
|
66
71
|
if (speaker && speaker.id !== this?.speaker?.id) {
|
|
67
72
|
this.speaker = speaker;
|
|
68
73
|
this.moveSpeakerToFront(speaker);
|
|
@@ -70,7 +75,7 @@ class PeersSorter {
|
|
|
70
75
|
};
|
|
71
76
|
|
|
72
77
|
updateListeners = () => {
|
|
73
|
-
const orderedPeers = [];
|
|
78
|
+
const orderedPeers: HMSPeer[] = [];
|
|
74
79
|
this.lruPeers.forEach(key => {
|
|
75
80
|
const peer = this.peers.get(key);
|
|
76
81
|
if (peer) {
|
|
@@ -1,102 +1,11 @@
|
|
|
1
1
|
import { parsedUserAgent } from '@100mslive/react-sdk';
|
|
2
2
|
|
|
3
|
-
export const defaultAudioList = [
|
|
4
|
-
{
|
|
5
|
-
name: 'Audio1',
|
|
6
|
-
id: 'audio1',
|
|
7
|
-
metadata: {
|
|
8
|
-
description: 'Artist1',
|
|
9
|
-
},
|
|
10
|
-
url: 'https://bc-public-static-assets.s3.ap-south-1.amazonaws.com/webapp/playlist/audio1.mp3',
|
|
11
|
-
type: 'audio',
|
|
12
|
-
},
|
|
13
|
-
{
|
|
14
|
-
name: 'Audio2',
|
|
15
|
-
id: 'audio2',
|
|
16
|
-
metadata: {
|
|
17
|
-
description: 'Artist2',
|
|
18
|
-
},
|
|
19
|
-
url: 'https://bc-public-static-assets.s3.ap-south-1.amazonaws.com/webapp/playlist/audio2.mp3',
|
|
20
|
-
type: 'audio',
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
name: 'Audio3',
|
|
24
|
-
id: 'audio3',
|
|
25
|
-
metadata: {
|
|
26
|
-
description: 'Artist3',
|
|
27
|
-
},
|
|
28
|
-
url: 'https://bc-public-static-assets.s3.ap-south-1.amazonaws.com/webapp/playlist/audio3.mp3',
|
|
29
|
-
type: 'audio',
|
|
30
|
-
},
|
|
31
|
-
{
|
|
32
|
-
name: 'Audio4',
|
|
33
|
-
id: 'audio4',
|
|
34
|
-
metadata: {
|
|
35
|
-
description: 'Artist4',
|
|
36
|
-
},
|
|
37
|
-
url: 'https://bc-public-static-assets.s3.ap-south-1.amazonaws.com/webapp/playlist/audio4.mp3',
|
|
38
|
-
type: 'audio',
|
|
39
|
-
},
|
|
40
|
-
{
|
|
41
|
-
name: 'Audio5',
|
|
42
|
-
id: 'audio5',
|
|
43
|
-
metadata: {
|
|
44
|
-
description: 'Artist5',
|
|
45
|
-
},
|
|
46
|
-
url: 'https://bc-public-static-assets.s3.ap-south-1.amazonaws.com/webapp/playlist/audio5.mp3',
|
|
47
|
-
type: 'audio',
|
|
48
|
-
},
|
|
49
|
-
{
|
|
50
|
-
name: 'Audio6',
|
|
51
|
-
id: 'audio6',
|
|
52
|
-
metadata: {
|
|
53
|
-
description: 'Artist6',
|
|
54
|
-
},
|
|
55
|
-
url: 'https://bc-public-static-assets.s3.ap-south-1.amazonaws.com/webapp/playlist/audio6.mp3',
|
|
56
|
-
type: 'audio',
|
|
57
|
-
},
|
|
58
|
-
];
|
|
59
|
-
|
|
60
|
-
export const defaultVideoList = [
|
|
61
|
-
{
|
|
62
|
-
name: 'Video1',
|
|
63
|
-
id: 'video1',
|
|
64
|
-
metadata: {
|
|
65
|
-
description: 'Artist1',
|
|
66
|
-
},
|
|
67
|
-
url: 'https://bc-public-static-assets.s3.ap-south-1.amazonaws.com/webapp/playlist/video1.mp4',
|
|
68
|
-
type: 'video',
|
|
69
|
-
},
|
|
70
|
-
{
|
|
71
|
-
name: 'Video2',
|
|
72
|
-
id: 'video2',
|
|
73
|
-
metadata: {
|
|
74
|
-
description: 'Artist2',
|
|
75
|
-
},
|
|
76
|
-
url: 'https://bc-public-static-assets.s3.ap-south-1.amazonaws.com/webapp/playlist/video2.mp4',
|
|
77
|
-
type: 'video',
|
|
78
|
-
},
|
|
79
|
-
{
|
|
80
|
-
name: 'Video3',
|
|
81
|
-
id: 'video3',
|
|
82
|
-
metadata: {
|
|
83
|
-
description: 'Artist2',
|
|
84
|
-
},
|
|
85
|
-
url: 'https://bc-public-static-assets.s3.ap-south-1.amazonaws.com/webapp/playlist/video3.mp4',
|
|
86
|
-
type: 'video',
|
|
87
|
-
},
|
|
88
|
-
];
|
|
89
|
-
|
|
90
|
-
export const DEFAULT_HLS_ROLE_KEY = 'HLS_VIEWER_ROLE';
|
|
91
|
-
export const DEFAULT_HLS_VIEWER_ROLE = 'hls-viewer';
|
|
92
3
|
export const DEFAULT_WAITING_VIEWER_ROLE = 'waiting-room';
|
|
93
4
|
export const QUERY_PARAM_SKIP_PREVIEW = 'skip_preview';
|
|
94
5
|
export const QUERY_PARAM_SKIP_PREVIEW_HEADFUL = 'skip_preview_headful';
|
|
95
6
|
export const QUERY_PARAM_NAME = 'name';
|
|
96
7
|
export const QUERY_PARAM_VIEW_MODE = 'ui_mode';
|
|
97
|
-
export const QUERY_PARAM_AUTH_TOKEN = 'auth_token';
|
|
98
8
|
export const QUERY_PARAM_PREVIEW_AS_ROLE = 'preview_as_role';
|
|
99
|
-
export const UI_MODE_ACTIVE_SPEAKER = 'activespeaker';
|
|
100
9
|
export const UI_MODE_GRID = 'grid';
|
|
101
10
|
export const MAX_TOASTS = 5;
|
|
102
11
|
export const RTMP_RECORD_RESOLUTION_MIN = 480;
|
|
@@ -120,7 +29,6 @@ export const APP_DATA = {
|
|
|
120
29
|
appConfig: 'appConfig',
|
|
121
30
|
sidePane: 'sidePane',
|
|
122
31
|
hlsStats: 'hlsStats',
|
|
123
|
-
hlsViewerRole: 'hlsViewerRole',
|
|
124
32
|
waitingViewerRole: 'waitingViewerRole',
|
|
125
33
|
subscribedNotifications: 'subscribedNotifications',
|
|
126
34
|
logo: 'logo',
|
|
@@ -135,10 +43,11 @@ export const APP_DATA = {
|
|
|
135
43
|
authToken: 'authToken',
|
|
136
44
|
pdfConfig: 'pdfConfig',
|
|
137
45
|
minimiseInset: 'minimiseInset',
|
|
46
|
+
activeScreensharePeerId: 'activeScreensharePeerId',
|
|
47
|
+
disableNotificiations: 'disableNotificiations',
|
|
138
48
|
};
|
|
139
49
|
export const UI_SETTINGS = {
|
|
140
50
|
isAudioOnly: 'isAudioOnly',
|
|
141
|
-
isHeadless: 'isHeadless',
|
|
142
51
|
maxTileCount: 'maxTileCount',
|
|
143
52
|
uiViewMode: 'uiViewMode',
|
|
144
53
|
showStatsOnTiles: 'showStatsOnTiles',
|
|
@@ -150,8 +59,6 @@ export const SIDE_PANE_OPTIONS = {
|
|
|
150
59
|
PARTICIPANTS: 'Participants',
|
|
151
60
|
CHAT: 'Chat',
|
|
152
61
|
STREAMING: 'STREAMING',
|
|
153
|
-
TILES: 'TILES',
|
|
154
|
-
SCREEN_TILES: 'SCREEN_TILES',
|
|
155
62
|
};
|
|
156
63
|
|
|
157
64
|
export const SUBSCRIBED_NOTIFICATIONS = {
|
|
@@ -180,27 +87,10 @@ export const isIPadOS = false;
|
|
|
180
87
|
// navigator?.maxTouchPoints > 2 &&
|
|
181
88
|
// navigator?.userAgent?.match(/Mac/);
|
|
182
89
|
|
|
183
|
-
export const FEATURE_LIST = {
|
|
184
|
-
AUDIO_ONLY_SCREENSHARE: 'audioscreenshare',
|
|
185
|
-
AUDIO_PLAYLIST: 'audioplaylist',
|
|
186
|
-
VIDEO_PLAYLIST: 'videoplaylist',
|
|
187
|
-
EMOJI_REACTION: 'emojireaction',
|
|
188
|
-
AUDIO_PLUGINS: 'audioplugins',
|
|
189
|
-
VIDEO_PLUGINS: 'videoplugins',
|
|
190
|
-
WHITEBOARD: 'whiteboard',
|
|
191
|
-
CHANGE_NAME: 'changename',
|
|
192
|
-
FULLSCREEN: 'fullscreen',
|
|
193
|
-
PICTURE_IN_PICTURE: 'pip',
|
|
194
|
-
STARTS_FOR_NERDS: 'statsfornerds',
|
|
195
|
-
EMBED_URL: 'embedurl',
|
|
196
|
-
BRB: 'brb',
|
|
197
|
-
HAND_RAISE: 'handraise',
|
|
198
|
-
CHAT: 'chat',
|
|
199
|
-
PIN_TILE: 'pintile',
|
|
200
|
-
};
|
|
201
|
-
|
|
202
90
|
export const SESSION_STORE_KEY = {
|
|
203
91
|
TRANSCRIPTION_STATE: 'transcriptionState',
|
|
204
92
|
PINNED_MESSAGE: 'pinnedMessage',
|
|
205
93
|
SPOTLIGHT: 'spotlight',
|
|
206
94
|
};
|
|
95
|
+
|
|
96
|
+
export const ROLE_CHANGE_DECLINED = 'role_change_declined';
|
|
@@ -1,7 +1,16 @@
|
|
|
1
1
|
// @ts-check
|
|
2
2
|
import { useEffect, useRef, useState } from 'react';
|
|
3
3
|
import { JoinForm_JoinBtnType } from '@100mslive/types-prebuilt/elements/join_form';
|
|
4
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
selectAvailableRoleNames,
|
|
6
|
+
selectIsConnectedToRoom,
|
|
7
|
+
selectPeerCount,
|
|
8
|
+
selectPeerMetadata,
|
|
9
|
+
selectPeers,
|
|
10
|
+
selectRemotePeers,
|
|
11
|
+
useHMSStore,
|
|
12
|
+
useHMSVanillaStore,
|
|
13
|
+
} from '@100mslive/react-sdk';
|
|
5
14
|
import { useRoomLayout } from '../provider/roomLayoutProvider';
|
|
6
15
|
import { isInternalRole } from './utils';
|
|
7
16
|
|
|
@@ -53,3 +62,27 @@ export const useShowStreamingUI = () => {
|
|
|
53
62
|
const { join_form } = layout?.screens?.preview?.default?.elements || {};
|
|
54
63
|
return join_form?.join_btn_type === JoinForm_JoinBtnType.JOIN_BTN_TYPE_JOIN_AND_GO_LIVE;
|
|
55
64
|
};
|
|
65
|
+
|
|
66
|
+
// The search results should not have role name matches
|
|
67
|
+
export const useParticipants = params => {
|
|
68
|
+
const isConnected = useHMSStore(selectIsConnectedToRoom);
|
|
69
|
+
const peerCount = useHMSStore(selectPeerCount);
|
|
70
|
+
const availableRoles = useHMSStore(selectAvailableRoleNames);
|
|
71
|
+
let participantList = useHMSStore(isConnected ? selectPeers : selectRemotePeers);
|
|
72
|
+
const rolesWithParticipants = Array.from(new Set(participantList.map(peer => peer.roleName)));
|
|
73
|
+
const vanillaStore = useHMSVanillaStore();
|
|
74
|
+
if (params?.metadata?.isHandRaised) {
|
|
75
|
+
participantList = participantList.filter(peer => {
|
|
76
|
+
return vanillaStore.getState(selectPeerMetadata(peer.id)).isHandRaised;
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
if (params?.role && availableRoles.includes(params.role)) {
|
|
80
|
+
participantList = participantList.filter(peer => peer.roleName === params.role);
|
|
81
|
+
}
|
|
82
|
+
if (params?.search) {
|
|
83
|
+
const search = params.search;
|
|
84
|
+
// Removed peer.roleName?.toLowerCase().includes(search)
|
|
85
|
+
participantList = participantList.filter(peer => peer.name.toLowerCase().includes(search));
|
|
86
|
+
}
|
|
87
|
+
return { participants: participantList, isConnected, peerCount, rolesWithParticipants };
|
|
88
|
+
};
|
|
@@ -40,7 +40,7 @@ export const arrayIntersection = (a, b) => {
|
|
|
40
40
|
|
|
41
41
|
export const getMetadata = metadataString => {
|
|
42
42
|
try {
|
|
43
|
-
return metadataString
|
|
43
|
+
return !metadataString ? {} : JSON.parse(metadataString);
|
|
44
44
|
} catch (error) {
|
|
45
45
|
return {};
|
|
46
46
|
}
|
|
@@ -56,14 +56,6 @@ export const isScreenshareSupported = () => {
|
|
|
56
56
|
return typeof navigator.mediaDevices.getDisplayMedia !== 'undefined';
|
|
57
57
|
};
|
|
58
58
|
|
|
59
|
-
export const getRoutePrefix = () => {
|
|
60
|
-
return window.location.pathname.startsWith('/streaming') ? '/streaming' : '';
|
|
61
|
-
};
|
|
62
|
-
|
|
63
|
-
export const isStreamingKit = () => {
|
|
64
|
-
return window.location.pathname.startsWith('/streaming');
|
|
65
|
-
};
|
|
66
|
-
|
|
67
59
|
export const isInternalRole = role => role && role.startsWith('__internal');
|
|
68
60
|
|
|
69
61
|
export const metadataPayloadParser = payload => {
|