@100mslive/react-native-room-kit 0.0.3 → 0.0.4
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/lib/commonjs/HMSInstanceSetup.js +1 -14
- package/lib/commonjs/HMSInstanceSetup.js.map +1 -1
- package/lib/commonjs/HMSPrebuilt.js +13 -4
- package/lib/commonjs/HMSPrebuilt.js.map +1 -1
- package/lib/commonjs/HMSRoomSetup.js +38 -14
- package/lib/commonjs/HMSRoomSetup.js.map +1 -1
- package/lib/commonjs/Icons/Check/assets/check.png +0 -0
- package/lib/commonjs/Icons/Check/assets/check@2x.png +0 -0
- package/lib/commonjs/Icons/Check/assets/check@3x.png +0 -0
- package/lib/commonjs/Icons/Check/index.js +30 -0
- package/lib/commonjs/Icons/Check/index.js.map +1 -0
- package/lib/commonjs/Icons/Radio/assets/radio.png +0 -0
- package/lib/commonjs/Icons/Radio/assets/radio@2x.png +0 -0
- package/lib/commonjs/Icons/Radio/assets/radio@3x.png +0 -0
- package/lib/commonjs/Icons/Radio/index.js +30 -0
- package/lib/commonjs/Icons/Radio/index.js.map +1 -0
- package/lib/commonjs/Icons/index.js +22 -0
- package/lib/commonjs/Icons/index.js.map +1 -1
- package/lib/commonjs/components/BackButton.js +2 -2
- package/lib/commonjs/components/BackButton.js.map +1 -1
- package/lib/commonjs/components/DisplayView.js +0 -6
- package/lib/commonjs/components/DisplayView.js.map +1 -1
- package/lib/commonjs/components/HMSHLSStreamLoading.js +56 -0
- package/lib/commonjs/components/HMSHLSStreamLoading.js.map +1 -0
- package/lib/commonjs/components/HMSLocalVideoView.js +41 -0
- package/lib/commonjs/components/HMSLocalVideoView.js.map +1 -0
- package/lib/commonjs/components/{HMSSpeakerSettings.js → HMSManageAudioOutput.js} +41 -13
- package/lib/commonjs/components/HMSManageAudioOutput.js.map +1 -0
- package/lib/commonjs/components/HMSManageLeave.js +7 -60
- package/lib/commonjs/components/HMSManageLeave.js.map +1 -1
- package/lib/commonjs/components/HMSMeetingEnded.js +36 -0
- package/lib/commonjs/components/HMSMeetingEnded.js.map +1 -0
- package/lib/commonjs/components/HMSPreviewEditName.js +6 -3
- package/lib/commonjs/components/HMSPreviewEditName.js.map +1 -1
- package/lib/commonjs/components/HMSPreviewHLSLiveIndicator.js +64 -0
- package/lib/commonjs/components/HMSPreviewHLSLiveIndicator.js.map +1 -0
- package/lib/commonjs/components/HMSPreviewJoinButton.js +21 -9
- package/lib/commonjs/components/HMSPreviewJoinButton.js.map +1 -1
- package/lib/commonjs/components/HMSPreviewNetworkQuality.js +43 -0
- package/lib/commonjs/components/HMSPreviewNetworkQuality.js.map +1 -0
- package/lib/commonjs/components/HMSPreviewPeersList.js +2 -25
- package/lib/commonjs/components/HMSPreviewPeersList.js.map +1 -1
- package/lib/commonjs/components/HMSPreviewSubtitle.js +25 -2
- package/lib/commonjs/components/HMSPreviewSubtitle.js.map +1 -1
- package/lib/commonjs/components/HMSPreviewTile.js +2 -18
- package/lib/commonjs/components/HMSPreviewTile.js.map +1 -1
- package/lib/commonjs/components/HMSRoomOptions.js +2 -3
- package/lib/commonjs/components/HMSRoomOptions.js.map +1 -1
- package/lib/commonjs/components/HMSShowNetworkQuality.js +0 -2
- package/lib/commonjs/components/HMSShowNetworkQuality.js.map +1 -1
- package/lib/commonjs/components/Meeting.js +7 -0
- package/lib/commonjs/components/Meeting.js.map +1 -1
- package/lib/commonjs/components/MenuModal/Menu.js +1 -2
- package/lib/commonjs/components/MenuModal/Menu.js.map +1 -1
- package/lib/commonjs/components/Modals.js +39 -299
- package/lib/commonjs/components/Modals.js.map +1 -1
- package/lib/commonjs/components/Participants/ParticipantsList.js +1 -20
- package/lib/commonjs/components/Participants/ParticipantsList.js.map +1 -1
- package/lib/commonjs/components/PeerSettingsModalContent.js +2 -13
- package/lib/commonjs/components/PeerSettingsModalContent.js.map +1 -1
- package/lib/commonjs/components/Preview.js +79 -71
- package/lib/commonjs/components/Preview.js.map +1 -1
- package/lib/commonjs/components/RoomSettingsModalContent.js +2 -101
- package/lib/commonjs/components/RoomSettingsModalContent.js.map +1 -1
- package/lib/commonjs/components/index.js +0 -11
- package/lib/commonjs/components/index.js.map +1 -1
- package/lib/commonjs/hooks/useHmsInstance.js +0 -1
- package/lib/commonjs/hooks/useHmsInstance.js.map +1 -1
- package/lib/commonjs/hooks-util-selectors.js +8 -1
- package/lib/commonjs/hooks-util-selectors.js.map +1 -1
- package/lib/commonjs/hooks-util.js +129 -28
- package/lib/commonjs/hooks-util.js.map +1 -1
- package/lib/commonjs/redux/actionTypes.js +5 -1
- package/lib/commonjs/redux/actionTypes.js.map +1 -1
- package/lib/commonjs/redux/actions/index.js +15 -1
- package/lib/commonjs/redux/actions/index.js.map +1 -1
- package/lib/commonjs/redux/reducers/appState.js +14 -1
- package/lib/commonjs/redux/reducers/appState.js.map +1 -1
- package/lib/commonjs/utils/theme.js +1 -0
- package/lib/commonjs/utils/theme.js.map +1 -1
- package/lib/commonjs/utils/types.js +0 -1
- package/lib/commonjs/utils/types.js.map +1 -1
- package/lib/commonjs/utils.js +2 -2
- package/lib/commonjs/utils.js.map +1 -1
- package/lib/module/HMSInstanceSetup.js +1 -14
- package/lib/module/HMSInstanceSetup.js.map +1 -1
- package/lib/module/HMSPrebuilt.js +13 -3
- package/lib/module/HMSPrebuilt.js.map +1 -1
- package/lib/module/HMSRoomSetup.js +43 -19
- package/lib/module/HMSRoomSetup.js.map +1 -1
- package/lib/module/Icons/Check/assets/check.png +0 -0
- package/lib/module/Icons/Check/assets/check@2x.png +0 -0
- package/lib/module/Icons/Check/assets/check@3x.png +0 -0
- package/lib/module/Icons/Check/index.js +22 -0
- package/lib/module/Icons/Check/index.js.map +1 -0
- package/lib/module/Icons/Radio/assets/radio.png +0 -0
- package/lib/module/Icons/Radio/assets/radio@2x.png +0 -0
- package/lib/module/Icons/Radio/assets/radio@3x.png +0 -0
- package/lib/module/Icons/Radio/index.js +22 -0
- package/lib/module/Icons/Radio/index.js.map +1 -0
- package/lib/module/Icons/index.js +2 -0
- package/lib/module/Icons/index.js.map +1 -1
- package/lib/module/components/BackButton.js +3 -3
- package/lib/module/components/BackButton.js.map +1 -1
- package/lib/module/components/DisplayView.js +1 -7
- package/lib/module/components/DisplayView.js.map +1 -1
- package/lib/module/components/HMSHLSStreamLoading.js +47 -0
- package/lib/module/components/HMSHLSStreamLoading.js.map +1 -0
- package/lib/module/components/HMSLocalVideoView.js +32 -0
- package/lib/module/components/HMSLocalVideoView.js.map +1 -0
- package/lib/module/components/{HMSSpeakerSettings.js → HMSManageAudioOutput.js} +40 -12
- package/lib/module/components/HMSManageAudioOutput.js.map +1 -0
- package/lib/module/components/HMSManageLeave.js +9 -62
- package/lib/module/components/HMSManageLeave.js.map +1 -1
- package/lib/module/components/HMSMeetingEnded.js +27 -0
- package/lib/module/components/HMSMeetingEnded.js.map +1 -0
- package/lib/module/components/HMSPreviewEditName.js +7 -4
- package/lib/module/components/HMSPreviewEditName.js.map +1 -1
- package/lib/module/components/HMSPreviewHLSLiveIndicator.js +55 -0
- package/lib/module/components/HMSPreviewHLSLiveIndicator.js.map +1 -0
- package/lib/module/components/HMSPreviewJoinButton.js +21 -9
- package/lib/module/components/HMSPreviewJoinButton.js.map +1 -1
- package/lib/module/components/HMSPreviewNetworkQuality.js +34 -0
- package/lib/module/components/HMSPreviewNetworkQuality.js.map +1 -0
- package/lib/module/components/HMSPreviewPeersList.js +2 -25
- package/lib/module/components/HMSPreviewPeersList.js.map +1 -1
- package/lib/module/components/HMSPreviewSubtitle.js +25 -2
- package/lib/module/components/HMSPreviewSubtitle.js.map +1 -1
- package/lib/module/components/HMSPreviewTile.js +2 -18
- package/lib/module/components/HMSPreviewTile.js.map +1 -1
- package/lib/module/components/HMSRoomOptions.js +2 -3
- package/lib/module/components/HMSRoomOptions.js.map +1 -1
- package/lib/module/components/HMSShowNetworkQuality.js +0 -2
- package/lib/module/components/HMSShowNetworkQuality.js.map +1 -1
- package/lib/module/components/Meeting.js +7 -0
- package/lib/module/components/Meeting.js.map +1 -1
- package/lib/module/components/MenuModal/Menu.js +1 -2
- package/lib/module/components/MenuModal/Menu.js.map +1 -1
- package/lib/module/components/Modals.js +40 -298
- package/lib/module/components/Modals.js.map +1 -1
- package/lib/module/components/Participants/ParticipantsList.js +1 -20
- package/lib/module/components/Participants/ParticipantsList.js.map +1 -1
- package/lib/module/components/PeerSettingsModalContent.js +2 -13
- package/lib/module/components/PeerSettingsModalContent.js.map +1 -1
- package/lib/module/components/Preview.js +79 -71
- package/lib/module/components/Preview.js.map +1 -1
- package/lib/module/components/RoomSettingsModalContent.js +3 -100
- package/lib/module/components/RoomSettingsModalContent.js.map +1 -1
- package/lib/module/components/index.js +0 -1
- package/lib/module/components/index.js.map +1 -1
- package/lib/module/hooks/useHmsInstance.js +0 -1
- package/lib/module/hooks/useHmsInstance.js.map +1 -1
- package/lib/module/hooks-util-selectors.js +6 -0
- package/lib/module/hooks-util-selectors.js.map +1 -1
- package/lib/module/hooks-util.js +131 -32
- package/lib/module/hooks-util.js.map +1 -1
- package/lib/module/redux/actionTypes.js +5 -1
- package/lib/module/redux/actionTypes.js.map +1 -1
- package/lib/module/redux/actions/index.js +12 -0
- package/lib/module/redux/actions/index.js.map +1 -1
- package/lib/module/redux/reducers/appState.js +14 -1
- package/lib/module/redux/reducers/appState.js.map +1 -1
- package/lib/module/utils/theme.js +1 -0
- package/lib/module/utils/theme.js.map +1 -1
- package/lib/module/utils/types.js +0 -1
- package/lib/module/utils/types.js.map +1 -1
- package/lib/module/utils.js +2 -2
- package/lib/module/utils.js.map +1 -1
- package/lib/typescript/HMSInstanceSetup.d.ts.map +1 -1
- package/lib/typescript/HMSPrebuilt.d.ts +2 -3
- package/lib/typescript/HMSPrebuilt.d.ts.map +1 -1
- package/lib/typescript/HMSRoomSetup.d.ts.map +1 -1
- package/lib/typescript/Icons/Check/index.d.ts +7 -0
- package/lib/typescript/Icons/Check/index.d.ts.map +1 -0
- package/lib/typescript/Icons/Radio/index.d.ts +7 -0
- package/lib/typescript/Icons/Radio/index.d.ts.map +1 -0
- package/lib/typescript/Icons/index.d.ts +2 -0
- package/lib/typescript/Icons/index.d.ts.map +1 -1
- package/lib/typescript/components/CustomInput.d.ts +1 -1
- package/lib/typescript/components/DisplayView.d.ts.map +1 -1
- package/lib/typescript/components/HMSHLSStreamLoading.d.ts +3 -0
- package/lib/typescript/components/HMSHLSStreamLoading.d.ts.map +1 -0
- package/lib/typescript/components/HMSLocalVideoView.d.ts +3 -0
- package/lib/typescript/components/HMSLocalVideoView.d.ts.map +1 -0
- package/lib/typescript/components/HMSManageAudioOutput.d.ts +3 -0
- package/lib/typescript/components/HMSManageAudioOutput.d.ts.map +1 -0
- package/lib/typescript/components/HMSManageLeave.d.ts.map +1 -1
- package/lib/typescript/components/HMSMeetingEnded.d.ts +3 -0
- package/lib/typescript/components/HMSMeetingEnded.d.ts.map +1 -0
- package/lib/typescript/components/HMSPreviewHLSLiveIndicator.d.ts +3 -0
- package/lib/typescript/components/HMSPreviewHLSLiveIndicator.d.ts.map +1 -0
- package/lib/typescript/components/HMSPreviewJoinButton.d.ts.map +1 -1
- package/lib/typescript/components/HMSPreviewNetworkQuality.d.ts +3 -0
- package/lib/typescript/components/HMSPreviewNetworkQuality.d.ts.map +1 -0
- package/lib/typescript/components/HMSPreviewPeersList.d.ts.map +1 -1
- package/lib/typescript/components/HMSPreviewSubtitle.d.ts.map +1 -1
- package/lib/typescript/components/HMSPreviewTile.d.ts.map +1 -1
- package/lib/typescript/components/HMSRoomOptions.d.ts.map +1 -1
- package/lib/typescript/components/HMSShowNetworkQuality.d.ts.map +1 -1
- package/lib/typescript/components/Meeting.d.ts.map +1 -1
- package/lib/typescript/components/MenuModal/Menu.d.ts.map +1 -1
- package/lib/typescript/components/Modals.d.ts +1 -9
- package/lib/typescript/components/Modals.d.ts.map +1 -1
- package/lib/typescript/components/Participants/ParticipantsList.d.ts.map +1 -1
- package/lib/typescript/components/PeerSettingsModalContent.d.ts.map +1 -1
- package/lib/typescript/components/Preview.d.ts.map +1 -1
- package/lib/typescript/components/RoomSettingsModalContent.d.ts.map +1 -1
- package/lib/typescript/components/index.d.ts +0 -1
- package/lib/typescript/components/index.d.ts.map +1 -1
- package/lib/typescript/hooks-util-selectors.d.ts +2 -0
- package/lib/typescript/hooks-util-selectors.d.ts.map +1 -1
- package/lib/typescript/hooks-util.d.ts +9 -2
- package/lib/typescript/hooks-util.d.ts.map +1 -1
- package/lib/typescript/redux/actionTypes.d.ts +2 -0
- package/lib/typescript/redux/actionTypes.d.ts.map +1 -1
- package/lib/typescript/redux/actions/index.d.ts +16 -3
- package/lib/typescript/redux/actions/index.d.ts.map +1 -1
- package/lib/typescript/redux/index.d.ts +3 -1
- package/lib/typescript/redux/index.d.ts.map +1 -1
- package/lib/typescript/redux/reducers/appState.d.ts +3 -0
- package/lib/typescript/redux/reducers/appState.d.ts.map +1 -1
- package/lib/typescript/redux/reducers/index.d.ts +3 -1
- package/lib/typescript/redux/reducers/index.d.ts.map +1 -1
- package/lib/typescript/redux/reducers/userState.d.ts +2 -2
- package/lib/typescript/redux/reducers/userState.d.ts.map +1 -1
- package/lib/typescript/utils/theme.d.ts +1 -0
- package/lib/typescript/utils/theme.d.ts.map +1 -1
- package/lib/typescript/utils/types.d.ts +3 -4
- package/lib/typescript/utils/types.d.ts.map +1 -1
- package/package.json +9 -16
- package/src/HMSInstanceSetup.tsx +4 -31
- package/src/HMSPrebuilt.tsx +24 -6
- package/src/HMSRoomSetup.tsx +55 -17
- package/src/Icons/Check/assets/check.png +0 -0
- package/src/Icons/Check/assets/check@2x.png +0 -0
- package/src/Icons/Check/assets/check@3x.png +0 -0
- package/src/Icons/Check/index.tsx +27 -0
- package/src/Icons/Radio/assets/radio.png +0 -0
- package/src/Icons/Radio/assets/radio@2x.png +0 -0
- package/src/Icons/Radio/assets/radio@3x.png +0 -0
- package/src/Icons/Radio/index.tsx +27 -0
- package/src/Icons/index.ts +2 -0
- package/src/components/BackButton.tsx +3 -3
- package/src/components/DisplayView.tsx +0 -10
- package/src/components/HMSHLSStreamLoading.tsx +57 -0
- package/src/components/HMSLocalVideoView.tsx +42 -0
- package/src/components/{HMSSpeakerSettings.tsx → HMSManageAudioOutput.tsx} +69 -17
- package/src/components/HMSManageLeave.tsx +6 -77
- package/src/components/HMSMeetingEnded.tsx +29 -0
- package/src/components/HMSPreviewEditName.tsx +5 -4
- package/src/components/HMSPreviewHLSLiveIndicator.tsx +58 -0
- package/src/components/HMSPreviewJoinButton.tsx +30 -7
- package/src/components/HMSPreviewNetworkQuality.tsx +40 -0
- package/src/components/HMSPreviewPeersList.tsx +7 -46
- package/src/components/HMSPreviewSubtitle.tsx +26 -2
- package/src/components/HMSPreviewTile.tsx +2 -24
- package/src/components/HMSRoomOptions.tsx +2 -8
- package/src/components/HMSShowNetworkQuality.tsx +0 -1
- package/src/components/Meeting.tsx +11 -0
- package/src/components/MenuModal/Menu.tsx +1 -1
- package/src/components/Modals.tsx +4 -299
- package/src/components/Participants/ParticipantsList.tsx +0 -24
- package/src/components/PeerSettingsModalContent.tsx +9 -23
- package/src/components/Preview.tsx +129 -101
- package/src/components/RoomSettingsModalContent.tsx +1 -138
- package/src/components/index.ts +0 -1
- package/src/hooks/useHmsInstance.ts +0 -1
- package/src/hooks-util-selectors.tsx +10 -0
- package/src/hooks-util.ts +155 -42
- package/src/redux/actionTypes.ts +6 -0
- package/src/redux/actions/index.ts +13 -2
- package/src/redux/reducers/appState.ts +9 -0
- package/src/redux/reducers/userState.ts +2 -2
- package/src/utils/theme.ts +1 -0
- package/src/utils/types.ts +3 -4
- package/src/utils.ts +2 -2
- package/lib/commonjs/components/HMSSpeakerSettings.js.map +0 -1
- package/lib/commonjs/components/ZoomableView.js +0 -84
- package/lib/commonjs/components/ZoomableView.js.map +0 -1
- package/lib/module/components/HMSSpeakerSettings.js.map +0 -1
- package/lib/module/components/ZoomableView.js +0 -76
- package/lib/module/components/ZoomableView.js.map +0 -1
- package/lib/typescript/components/HMSSpeakerSettings.d.ts +0 -3
- package/lib/typescript/components/HMSSpeakerSettings.d.ts.map +0 -1
- package/lib/typescript/components/ZoomableView.d.ts +0 -6
- package/lib/typescript/components/ZoomableView.d.ts.map +0 -1
- package/src/components/ZoomableView.tsx +0 -91
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@100mslive/react-native-room-kit",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.4",
|
|
4
4
|
"description": "100ms Room Kit provides simple & easy to use UI components to build Live Streaming & Video Conferencing experiences in your apps.",
|
|
5
5
|
"main": "lib/commonjs/index",
|
|
6
6
|
"module": "lib/module/index",
|
|
@@ -51,23 +51,9 @@
|
|
|
51
51
|
"registry": "https://registry.npmjs.org/"
|
|
52
52
|
},
|
|
53
53
|
"dependencies": {
|
|
54
|
-
"@100mslive/react-native-hms": "1.7.0",
|
|
55
|
-
"@miblanchard/react-native-slider": "^2.0.2",
|
|
56
54
|
"@react-navigation/native": "^6.0.8",
|
|
57
|
-
"@shopify/flash-list": "^1.4.3",
|
|
58
|
-
"react-native-avoid-softinput": "^2.4.8",
|
|
59
|
-
"react-native-device-info": "^9.0.2",
|
|
60
|
-
"react-native-document-picker": "^8.1.1",
|
|
61
|
-
"react-native-fs": "^2.19.0",
|
|
62
|
-
"react-native-gesture-handler": "^1.10.3",
|
|
63
|
-
"react-native-linear-gradient": "^2.7.3",
|
|
64
|
-
"react-native-modal": "^12.1.0",
|
|
65
|
-
"react-native-safe-area-context": "^3.3.0",
|
|
66
|
-
"react-native-share": "^8.2.2",
|
|
67
|
-
"react-native-simple-toast": "^1.1.3",
|
|
68
55
|
"react-redux": "^7.2.4",
|
|
69
|
-
"redux": "^4.1.0"
|
|
70
|
-
"rn-fetch-blob": "^0.12.0"
|
|
56
|
+
"redux": "^4.1.0"
|
|
71
57
|
},
|
|
72
58
|
"devDependencies": {
|
|
73
59
|
"@commitlint/config-conventional": "^17.0.2",
|
|
@@ -93,10 +79,17 @@
|
|
|
93
79
|
"typescript": "^5.0.2"
|
|
94
80
|
},
|
|
95
81
|
"peerDependencies": {
|
|
82
|
+
"@100mslive/react-native-hms": "github:100mslive/100ms-react-native#release1.8.0",
|
|
83
|
+
"@shopify/flash-list": "^1.4.3",
|
|
96
84
|
"react": "*",
|
|
97
85
|
"react-native": "*",
|
|
86
|
+
"react-native-avoid-softinput": "^2.4.8",
|
|
87
|
+
"react-native-linear-gradient": "^2.7.3",
|
|
88
|
+
"react-native-modal": "^12.1.0",
|
|
98
89
|
"react-native-permissions": "3.4.0",
|
|
99
90
|
"react-native-reanimated": "^2.17.0",
|
|
91
|
+
"react-native-safe-area-context": "^3.3.0",
|
|
92
|
+
"react-native-simple-toast": "^1.1.3",
|
|
100
93
|
"react-native-vector-icons": "^9.1.0"
|
|
101
94
|
},
|
|
102
95
|
"resolutions": {
|
package/src/HMSInstanceSetup.tsx
CHANGED
|
@@ -12,7 +12,6 @@ import {
|
|
|
12
12
|
HMSVideoTrackSettings,
|
|
13
13
|
} from '@100mslive/react-native-hms';
|
|
14
14
|
import React, { useEffect } from 'react';
|
|
15
|
-
import { getModel } from 'react-native-device-info';
|
|
16
15
|
import { batch, useDispatch } from 'react-redux';
|
|
17
16
|
|
|
18
17
|
import { getJoinConfig } from './utils';
|
|
@@ -20,26 +19,11 @@ import { saveUserData, setHMSInstance } from './redux/actions';
|
|
|
20
19
|
import { FullScreenIndicator } from './components/FullScreenIndicator';
|
|
21
20
|
import { clearConfig } from './hooks-util';
|
|
22
21
|
import { store } from './redux';
|
|
22
|
+
import type { HMSIOSScreenShareConfig } from './utils/types';
|
|
23
23
|
|
|
24
24
|
const getTrackSettings = () => {
|
|
25
25
|
const joinConfig = getJoinConfig();
|
|
26
26
|
|
|
27
|
-
const listOfFaultyDevices = [
|
|
28
|
-
'Pixel',
|
|
29
|
-
'Pixel XL',
|
|
30
|
-
'Moto G5',
|
|
31
|
-
'Moto G (5S) Plus',
|
|
32
|
-
'Moto G4',
|
|
33
|
-
'TA-1053',
|
|
34
|
-
'Mi A1',
|
|
35
|
-
'Mi A2',
|
|
36
|
-
'E5823', // Sony z5 compact
|
|
37
|
-
'Redmi Note 5',
|
|
38
|
-
'FP2', // Fairphone FP2
|
|
39
|
-
'MI 5',
|
|
40
|
-
];
|
|
41
|
-
const deviceModal = getModel();
|
|
42
|
-
|
|
43
27
|
/**
|
|
44
28
|
* Customize local peer's Audio track settings before Joining the Room.
|
|
45
29
|
*
|
|
@@ -49,15 +33,8 @@ const getTrackSettings = () => {
|
|
|
49
33
|
initialState: joinConfig.mutedAudio
|
|
50
34
|
? HMSTrackSettingsInitState.MUTED
|
|
51
35
|
: HMSTrackSettingsInitState.UNMUTED,
|
|
52
|
-
useHardwareEchoCancellation: listOfFaultyDevices.includes(deviceModal)
|
|
53
|
-
? true
|
|
54
|
-
: false,
|
|
55
36
|
audioSource: joinConfig.audioMixer
|
|
56
|
-
? [
|
|
57
|
-
'mic_node',
|
|
58
|
-
'screen_broadcast_audio_receiver_node',
|
|
59
|
-
'audio_file_player_node',
|
|
60
|
-
]
|
|
37
|
+
? ['mic_node', 'screen_broadcast_audio_receiver_node']
|
|
61
38
|
: undefined,
|
|
62
39
|
/**
|
|
63
40
|
* `audioMode` param allows you to capture audio in its highest quality
|
|
@@ -96,7 +73,8 @@ const getLogSettings = (): HMSLogSettings => {
|
|
|
96
73
|
});
|
|
97
74
|
};
|
|
98
75
|
|
|
99
|
-
const getIOSBuildConfig = () =>
|
|
76
|
+
const getIOSBuildConfig = (): Partial<HMSIOSScreenShareConfig> =>
|
|
77
|
+
store.getState().user.iosBuildConfig || {};
|
|
100
78
|
|
|
101
79
|
/**
|
|
102
80
|
* Regular Usage:
|
|
@@ -160,19 +138,14 @@ export const HMSInstanceSetup = () => {
|
|
|
160
138
|
clearConfig();
|
|
161
139
|
getHmsInstance()
|
|
162
140
|
.then((hmssdkInstance) => {
|
|
163
|
-
console.log('$$$ hmssdkInstance id = ', hmssdkInstance.id);
|
|
164
141
|
if (!ignore) {
|
|
165
142
|
// If this component is mounted
|
|
166
143
|
// save instance in store
|
|
167
|
-
console.log('$$$ before batch');
|
|
168
144
|
batch(() => {
|
|
169
|
-
console.log('$$$ setHMSInstance call');
|
|
170
145
|
dispatch(setHMSInstance(hmssdkInstance));
|
|
171
146
|
// TODO: remove this from user reducer
|
|
172
|
-
console.log('$$$ saveUserData call');
|
|
173
147
|
dispatch(saveUserData({ hmsInstance: hmssdkInstance }));
|
|
174
148
|
});
|
|
175
|
-
console.log('$$$ after batch');
|
|
176
149
|
} else {
|
|
177
150
|
// If this component is not mounted when this response is received
|
|
178
151
|
// that means Root componnet is unmounted, we can destroy instance safely
|
package/src/HMSPrebuilt.tsx
CHANGED
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
import React, { memo } from 'react';
|
|
2
2
|
import { Provider } from 'react-redux';
|
|
3
|
+
import {
|
|
4
|
+
SafeAreaInsetsContext,
|
|
5
|
+
SafeAreaProvider,
|
|
6
|
+
} from 'react-native-safe-area-context';
|
|
3
7
|
|
|
4
8
|
import { store } from './redux/index';
|
|
5
9
|
import { HMSContainer } from './HMSContainer';
|
|
6
10
|
import { setPrebuiltData } from './redux/actions';
|
|
7
|
-
import type {
|
|
11
|
+
import type { HMSIOSScreenShareConfig } from './utils/types';
|
|
8
12
|
|
|
9
13
|
export interface HMSPrebuiltProps {
|
|
10
14
|
roomCode: string;
|
|
@@ -16,19 +20,33 @@ export interface HMSPrebuiltProps {
|
|
|
16
20
|
token: string;
|
|
17
21
|
};
|
|
18
22
|
debugMode?: boolean;
|
|
19
|
-
ios?:
|
|
23
|
+
ios?: HMSIOSScreenShareConfig;
|
|
20
24
|
};
|
|
21
25
|
}
|
|
22
26
|
|
|
23
|
-
|
|
27
|
+
const _HMSPrebuilt: React.FC<HMSPrebuiltProps> = (props) => {
|
|
24
28
|
const { roomCode, options } = props;
|
|
25
29
|
|
|
26
30
|
store.dispatch(setPrebuiltData({ roomCode, options }));
|
|
27
31
|
|
|
32
|
+
// @ts-ignore Not using `useContext` hook because we don't want to subscribe to updates
|
|
33
|
+
// We just want to check if SafeAreaProvider exists or not
|
|
34
|
+
const safeAreaProviderExists = !!SafeAreaInsetsContext.Consumer._currentValue;
|
|
35
|
+
|
|
36
|
+
if (safeAreaProviderExists) {
|
|
37
|
+
return (
|
|
38
|
+
<Provider store={store}>
|
|
39
|
+
<HMSContainer />
|
|
40
|
+
</Provider>
|
|
41
|
+
);
|
|
42
|
+
}
|
|
43
|
+
|
|
28
44
|
return (
|
|
29
|
-
<
|
|
30
|
-
<
|
|
31
|
-
|
|
45
|
+
<SafeAreaProvider>
|
|
46
|
+
<Provider store={store}>
|
|
47
|
+
<HMSContainer />
|
|
48
|
+
</Provider>
|
|
49
|
+
</SafeAreaProvider>
|
|
32
50
|
);
|
|
33
51
|
};
|
|
34
52
|
|
package/src/HMSRoomSetup.tsx
CHANGED
|
@@ -5,12 +5,21 @@ import {
|
|
|
5
5
|
HMSUpdateListenerActions,
|
|
6
6
|
} from '@100mslive/react-native-hms';
|
|
7
7
|
import React, { useCallback, useEffect, useRef, useState } from 'react';
|
|
8
|
-
import {
|
|
8
|
+
import {
|
|
9
|
+
Alert,
|
|
10
|
+
Keyboard,
|
|
11
|
+
Platform,
|
|
12
|
+
StatusBar,
|
|
13
|
+
StyleSheet,
|
|
14
|
+
View,
|
|
15
|
+
} from 'react-native';
|
|
9
16
|
import Toast from 'react-native-simple-toast';
|
|
10
|
-
import { batch, useDispatch } from 'react-redux';
|
|
17
|
+
import { batch, useDispatch, useSelector, useStore } from 'react-redux';
|
|
11
18
|
|
|
12
19
|
import { Preview } from './components';
|
|
13
20
|
import {
|
|
21
|
+
changeMeetingState,
|
|
22
|
+
changeStartingHLSStream,
|
|
14
23
|
clearStore,
|
|
15
24
|
setHMSLocalPeerState,
|
|
16
25
|
setHMSRoomState,
|
|
@@ -23,6 +32,7 @@ import {
|
|
|
23
32
|
useHMSInstance,
|
|
24
33
|
useHMSListeners,
|
|
25
34
|
useHMSSessionStore,
|
|
35
|
+
useLeaveMethods,
|
|
26
36
|
} from './hooks-util';
|
|
27
37
|
import {
|
|
28
38
|
peerTrackNodeExistForPeerAndTrack,
|
|
@@ -34,7 +44,9 @@ import { MeetingState } from './types';
|
|
|
34
44
|
import { getJoinConfig } from './utils';
|
|
35
45
|
import { COLORS } from './utils/theme';
|
|
36
46
|
import { FullScreenIndicator } from './components/FullScreenIndicator';
|
|
37
|
-
import {
|
|
47
|
+
import { HMSMeetingEnded } from './components/HMSMeetingEnded';
|
|
48
|
+
import { selectIsHLSViewer, selectShouldGoLive } from './hooks-util-selectors';
|
|
49
|
+
import type { RootState } from './redux';
|
|
38
50
|
|
|
39
51
|
type PreviewData = {
|
|
40
52
|
room: HMSRoom;
|
|
@@ -42,19 +54,23 @@ type PreviewData = {
|
|
|
42
54
|
};
|
|
43
55
|
|
|
44
56
|
export const HMSRoomSetup = () => {
|
|
45
|
-
|
|
57
|
+
const ignoreHLSStreamPromise = useRef(false);
|
|
46
58
|
const didInitMeetingAction = useRef(false);
|
|
47
59
|
const hmsInstance = useHMSInstance();
|
|
48
60
|
const dispatch = useDispatch();
|
|
49
|
-
|
|
61
|
+
const reduxStore = useStore();
|
|
50
62
|
|
|
51
63
|
const { getConfig, clearConfig } = useHMSConfig();
|
|
52
|
-
const
|
|
64
|
+
const meetingState = useSelector(
|
|
65
|
+
(state: RootState) => state.app.meetingState
|
|
66
|
+
);
|
|
53
67
|
const [peerTrackNodes, setPeerTrackNodes] = useState<PeerTrackNode[]>([]);
|
|
54
68
|
const [loading, setLoading] = useState(false);
|
|
69
|
+
const { goToPreview } = useLeaveMethods();
|
|
55
70
|
|
|
56
71
|
const joinMeeting = useCallback(async () => {
|
|
57
72
|
setLoading(true);
|
|
73
|
+
Keyboard.dismiss();
|
|
58
74
|
const hmsConfig = await getConfig();
|
|
59
75
|
// TODO: handle case when promise returned from `getConfig()` is resolved when Root component has been unmounted
|
|
60
76
|
hmsInstance.join(hmsConfig);
|
|
@@ -67,8 +83,22 @@ export const HMSRoomSetup = () => {
|
|
|
67
83
|
hmsInstance.preview(hmsConfig);
|
|
68
84
|
}, [getConfig, hmsInstance]);
|
|
69
85
|
|
|
86
|
+
const startHLSStreaming = useCallback(async () => {
|
|
87
|
+
dispatch(changeStartingHLSStream(true));
|
|
88
|
+
try {
|
|
89
|
+
const d = await hmsInstance.startHLSStreaming();
|
|
90
|
+
console.log('Start HLS Streaming Success: ', d);
|
|
91
|
+
} catch (e) {
|
|
92
|
+
console.log('Start HLS Streaming Error: ', e);
|
|
93
|
+
if (!ignoreHLSStreamPromise.current) {
|
|
94
|
+
console.log('Unable to go live at the moment: ', e);
|
|
95
|
+
goToPreview();
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}, [goToPreview, hmsInstance]);
|
|
99
|
+
|
|
70
100
|
// HMS Room, Peers, Track Listeners
|
|
71
|
-
useHMSListeners(
|
|
101
|
+
useHMSListeners(setPeerTrackNodes);
|
|
72
102
|
|
|
73
103
|
/**
|
|
74
104
|
* Session store is a shared realtime key-value store that is accessible by everyone in the room.
|
|
@@ -126,24 +156,20 @@ export const HMSRoomSetup = () => {
|
|
|
126
156
|
// HMS Preview Listener
|
|
127
157
|
useEffect(() => {
|
|
128
158
|
const onPreviewHandler = (data: PreviewData) => {
|
|
129
|
-
|
|
159
|
+
setLoading(false);
|
|
130
160
|
batch(() => {
|
|
131
161
|
dispatch(setHMSRoomState(data.room));
|
|
132
162
|
dispatch(setHMSLocalPeerState(data.room.localPeer));
|
|
163
|
+
dispatch(changeMeetingState(MeetingState.IN_PREVIEW));
|
|
133
164
|
});
|
|
134
|
-
|
|
135
|
-
setLoading(false);
|
|
136
|
-
setMeetingState(MeetingState.IN_PREVIEW);
|
|
137
165
|
};
|
|
138
166
|
|
|
139
|
-
console.log('HMSUpdateListenerActions.ON_PREVIEW registered');
|
|
140
167
|
hmsInstance.addEventListener(
|
|
141
168
|
HMSUpdateListenerActions.ON_PREVIEW,
|
|
142
169
|
onPreviewHandler
|
|
143
170
|
);
|
|
144
171
|
|
|
145
172
|
return () => {
|
|
146
|
-
console.log('HMSUpdateListenerActions.ON_PREVIEW removed');
|
|
147
173
|
hmsInstance.removeEventListener(HMSUpdateListenerActions.ON_PREVIEW);
|
|
148
174
|
};
|
|
149
175
|
}, [hmsInstance]);
|
|
@@ -186,7 +212,12 @@ export const HMSRoomSetup = () => {
|
|
|
186
212
|
return [hmsLocalPeer, ...prevPeerTrackNodes];
|
|
187
213
|
});
|
|
188
214
|
|
|
189
|
-
|
|
215
|
+
const shouldGoLive = selectShouldGoLive(reduxStore.getState());
|
|
216
|
+
|
|
217
|
+
if (shouldGoLive) {
|
|
218
|
+
startHLSStreaming();
|
|
219
|
+
}
|
|
220
|
+
dispatch(changeMeetingState(MeetingState.IN_MEETING));
|
|
190
221
|
};
|
|
191
222
|
|
|
192
223
|
hmsInstance.addEventListener(
|
|
@@ -197,10 +228,13 @@ export const HMSRoomSetup = () => {
|
|
|
197
228
|
return () => {
|
|
198
229
|
hmsInstance.removeEventListener(HMSUpdateListenerActions.ON_JOIN);
|
|
199
230
|
};
|
|
200
|
-
}, [hmsInstance]);
|
|
231
|
+
}, [startHLSStreaming, hmsInstance]);
|
|
232
|
+
|
|
233
|
+
const meetingEnded = meetingState === MeetingState.MEETING_ENDED;
|
|
201
234
|
|
|
235
|
+
// Handling Automatically calling Preview or Join API
|
|
202
236
|
useEffect(() => {
|
|
203
|
-
if (!didInitMeetingAction.current) {
|
|
237
|
+
if (!meetingEnded && !didInitMeetingAction.current) {
|
|
204
238
|
didInitMeetingAction.current = true;
|
|
205
239
|
|
|
206
240
|
// let ignore = false;
|
|
@@ -227,10 +261,12 @@ export const HMSRoomSetup = () => {
|
|
|
227
261
|
// ignore = true;
|
|
228
262
|
};
|
|
229
263
|
}
|
|
230
|
-
}, []);
|
|
264
|
+
}, [meetingEnded]);
|
|
231
265
|
|
|
232
266
|
useEffect(() => {
|
|
233
267
|
return () => {
|
|
268
|
+
ignoreHLSStreamPromise.current = true;
|
|
269
|
+
|
|
234
270
|
// TODOS:
|
|
235
271
|
// - Check If we have already left meeting, or destroyed native HMSSDK
|
|
236
272
|
// - No need to reset redux state?
|
|
@@ -264,6 +300,8 @@ export const HMSRoomSetup = () => {
|
|
|
264
300
|
<Preview join={joinMeeting} loadingButtonState={loading} />
|
|
265
301
|
) : meetingState === MeetingState.IN_MEETING ? (
|
|
266
302
|
<Meeting peerTrackNodes={peerTrackNodes} />
|
|
303
|
+
) : meetingState === MeetingState.MEETING_ENDED ? (
|
|
304
|
+
<HMSMeetingEnded />
|
|
267
305
|
) : loading ? (
|
|
268
306
|
<FullScreenIndicator />
|
|
269
307
|
) : (
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Image, StyleSheet } from 'react-native';
|
|
3
|
+
import type { ImageProps } from 'react-native';
|
|
4
|
+
|
|
5
|
+
interface CheckIconProps extends Omit<ImageProps, 'source'> {}
|
|
6
|
+
|
|
7
|
+
export const CheckIcon: React.FC<CheckIconProps> = ({
|
|
8
|
+
style,
|
|
9
|
+
...restProps
|
|
10
|
+
}) => {
|
|
11
|
+
return (
|
|
12
|
+
<Image
|
|
13
|
+
source={require('./assets/check.png')}
|
|
14
|
+
style={[styles.icon, style]}
|
|
15
|
+
{...restProps}
|
|
16
|
+
/>
|
|
17
|
+
);
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
const styles = StyleSheet.create({
|
|
21
|
+
icon: {
|
|
22
|
+
width: 24,
|
|
23
|
+
height: 24,
|
|
24
|
+
alignItems: 'center',
|
|
25
|
+
justifyContent: 'center',
|
|
26
|
+
},
|
|
27
|
+
});
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Image, StyleSheet } from 'react-native';
|
|
3
|
+
import type { ImageProps } from 'react-native';
|
|
4
|
+
|
|
5
|
+
interface RadioIconProps extends Omit<ImageProps, 'source'> {}
|
|
6
|
+
|
|
7
|
+
export const RadioIcon: React.FC<RadioIconProps> = ({
|
|
8
|
+
style,
|
|
9
|
+
...restProps
|
|
10
|
+
}) => {
|
|
11
|
+
return (
|
|
12
|
+
<Image
|
|
13
|
+
source={require('./assets/radio.png')}
|
|
14
|
+
style={[styles.icon, style]}
|
|
15
|
+
{...restProps}
|
|
16
|
+
/>
|
|
17
|
+
);
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
const styles = StyleSheet.create({
|
|
21
|
+
icon: {
|
|
22
|
+
width: 24,
|
|
23
|
+
height: 24,
|
|
24
|
+
alignItems: 'center',
|
|
25
|
+
justifyContent: 'center',
|
|
26
|
+
},
|
|
27
|
+
});
|
package/src/Icons/index.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { StyleSheet } from 'react-native';
|
|
3
|
-
import {
|
|
3
|
+
import { NavigationContext } from '@react-navigation/native';
|
|
4
4
|
|
|
5
5
|
import { COLORS } from '../utils/theme';
|
|
6
6
|
import { PressableIcon } from './PressableIcon';
|
|
@@ -9,9 +9,9 @@ import { ChevronIcon } from '../Icons';
|
|
|
9
9
|
export interface BackButtonProps {}
|
|
10
10
|
|
|
11
11
|
export const BackButton: React.FC<BackButtonProps> = () => {
|
|
12
|
-
const navigation =
|
|
12
|
+
const navigation = React.useContext(NavigationContext);
|
|
13
13
|
|
|
14
|
-
if (!navigation.canGoBack()) {
|
|
14
|
+
if (!navigation || !navigation.canGoBack()) {
|
|
15
15
|
return null;
|
|
16
16
|
}
|
|
17
17
|
|
|
@@ -19,7 +19,6 @@ import {
|
|
|
19
19
|
ChangeRoleAccepteModal,
|
|
20
20
|
ChangeRoleModal,
|
|
21
21
|
ChangeTrackStateModal,
|
|
22
|
-
ChangeVolumeModal,
|
|
23
22
|
SaveScreenshot,
|
|
24
23
|
} from './Modals';
|
|
25
24
|
import type { RootState } from '../redux';
|
|
@@ -289,15 +288,6 @@ export const DisplayView: React.FC<DisplayViewProps> = ({
|
|
|
289
288
|
cancelModal={() => setModalVisible(ModalTypes.DEFAULT)}
|
|
290
289
|
/>
|
|
291
290
|
</DefaultModal>
|
|
292
|
-
<DefaultModal
|
|
293
|
-
modalPosiion="center"
|
|
294
|
-
modalVisible={modalVisible === ModalTypes.VOLUME}
|
|
295
|
-
setModalVisible={() => setModalVisible(ModalTypes.DEFAULT)}
|
|
296
|
-
>
|
|
297
|
-
<ChangeVolumeModal
|
|
298
|
-
cancelModal={() => setModalVisible(ModalTypes.DEFAULT)}
|
|
299
|
-
/>
|
|
300
|
-
</DefaultModal>
|
|
301
291
|
<DefaultModal
|
|
302
292
|
modalPosiion="center"
|
|
303
293
|
modalVisible={modalVisible === ModalTypes.CHANGE_NAME}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { View, ActivityIndicator, Text, StyleSheet } from 'react-native';
|
|
3
|
+
import { useSelector } from 'react-redux';
|
|
4
|
+
|
|
5
|
+
import { COLORS } from '../utils/theme';
|
|
6
|
+
import type { RootState } from '../redux';
|
|
7
|
+
import { HMSLocalVideoView } from './HMSLocalVideoView';
|
|
8
|
+
|
|
9
|
+
export const HMSHLSStreamLoading = () => {
|
|
10
|
+
const isLocalVideoMuted = useSelector(
|
|
11
|
+
(state: RootState) => state.hmsStates.isLocalVideoMuted
|
|
12
|
+
);
|
|
13
|
+
|
|
14
|
+
return (
|
|
15
|
+
<View style={styles.container}>
|
|
16
|
+
{isLocalVideoMuted ? null : <HMSLocalVideoView />}
|
|
17
|
+
|
|
18
|
+
<View style={styles.hlsLoaderContainer}>
|
|
19
|
+
<ActivityIndicator
|
|
20
|
+
style={styles.hlsLoader}
|
|
21
|
+
size={'large'}
|
|
22
|
+
color={COLORS.PRIMARY.DEFAULT}
|
|
23
|
+
/>
|
|
24
|
+
|
|
25
|
+
<Text style={styles.hlsLoaderText}>Starting live stream...</Text>
|
|
26
|
+
</View>
|
|
27
|
+
</View>
|
|
28
|
+
);
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
const styles = StyleSheet.create({
|
|
32
|
+
container: {
|
|
33
|
+
flex: 1,
|
|
34
|
+
position: 'relative',
|
|
35
|
+
backgroundColor: COLORS.BACKGROUND.DIM,
|
|
36
|
+
},
|
|
37
|
+
hlsLoaderContainer: {
|
|
38
|
+
position: 'absolute',
|
|
39
|
+
width: '100%',
|
|
40
|
+
height: '100%',
|
|
41
|
+
backgroundColor: COLORS.LOADING_BACKDROP,
|
|
42
|
+
zIndex: 5,
|
|
43
|
+
alignItems: 'center',
|
|
44
|
+
justifyContent: 'center',
|
|
45
|
+
},
|
|
46
|
+
hlsLoader: {
|
|
47
|
+
marginBottom: 30,
|
|
48
|
+
},
|
|
49
|
+
hlsLoaderText: {
|
|
50
|
+
color: COLORS.SURFACE.ON_SURFACE.HIGH,
|
|
51
|
+
fontSize: 16,
|
|
52
|
+
fontFamily: 'Inter',
|
|
53
|
+
fontWeight: '400',
|
|
54
|
+
lineHeight: 24,
|
|
55
|
+
letterSpacing: 0.5,
|
|
56
|
+
},
|
|
57
|
+
});
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { StyleSheet } from 'react-native';
|
|
3
|
+
import { useSelector } from 'react-redux';
|
|
4
|
+
import { HMSVideoViewMode } from '@100mslive/react-native-hms';
|
|
5
|
+
|
|
6
|
+
import type { RootState } from '../redux';
|
|
7
|
+
import { useHMSInstance } from '../hooks-util';
|
|
8
|
+
|
|
9
|
+
export const HMSLocalVideoView = () => {
|
|
10
|
+
const hmsInstance = useHMSInstance();
|
|
11
|
+
const HmsView = hmsInstance.HmsView;
|
|
12
|
+
const mirrorCamera = useSelector(
|
|
13
|
+
(state: RootState) => state.app.joinConfig.mirrorCamera
|
|
14
|
+
);
|
|
15
|
+
const autoSimulcast = useSelector(
|
|
16
|
+
(state: RootState) => state.app.joinConfig.autoSimulcast
|
|
17
|
+
);
|
|
18
|
+
const localVideoTrackId = useSelector(
|
|
19
|
+
(state: RootState) => state.hmsStates.localPeer?.videoTrack?.trackId
|
|
20
|
+
);
|
|
21
|
+
|
|
22
|
+
if (!localVideoTrackId) {
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
return (
|
|
27
|
+
<HmsView
|
|
28
|
+
trackId={localVideoTrackId}
|
|
29
|
+
key={localVideoTrackId}
|
|
30
|
+
mirror={mirrorCamera}
|
|
31
|
+
autoSimulcast={autoSimulcast}
|
|
32
|
+
scaleType={HMSVideoViewMode.ASPECT_FILL}
|
|
33
|
+
style={styles.hmsView}
|
|
34
|
+
/>
|
|
35
|
+
);
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
const styles = StyleSheet.create({
|
|
39
|
+
hmsView: {
|
|
40
|
+
flex: 1,
|
|
41
|
+
},
|
|
42
|
+
});
|