agora-appbuilder-core 2.2.0 → 2.3.0-beta.0

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 (280) hide show
  1. package/Readme.md +7 -1
  2. package/package.json +4 -3
  3. package/template/Gulpfile.js +306 -87
  4. package/template/_gitignore +4 -1
  5. package/template/_package-lock.json +2297 -2533
  6. package/template/agora-rn-uikit/.git/HEAD +1 -1
  7. package/template/agora-rn-uikit/.git/config +3 -3
  8. package/template/agora-rn-uikit/.git/index +0 -0
  9. package/template/agora-rn-uikit/.git/logs/HEAD +2 -2
  10. package/template/agora-rn-uikit/.git/logs/refs/heads/master +1 -1
  11. package/template/agora-rn-uikit/.git/logs/refs/heads/release/fpe-1.0.0 +1 -0
  12. package/template/agora-rn-uikit/.git/logs/refs/remotes/origin/HEAD +1 -1
  13. package/template/agora-rn-uikit/.git/objects/pack/pack-f274a85fccfc9b5112d154bb3b6d34cb4b8dedde.idx +0 -0
  14. package/template/agora-rn-uikit/.git/objects/pack/{pack-0061d00cd98162a329a32b537488a35d0abeb069.pack → pack-f274a85fccfc9b5112d154bb3b6d34cb4b8dedde.pack} +0 -0
  15. package/template/agora-rn-uikit/.git/packed-refs +5 -1
  16. package/template/agora-rn-uikit/.git/refs/heads/release/fpe-1.0.0 +1 -0
  17. package/template/agora-rn-uikit/src/AgoraUIKit.tsx +23 -20
  18. package/template/agora-rn-uikit/src/Contexts/LocalUserContext.tsx +13 -8
  19. package/template/agora-rn-uikit/src/Contexts/PropsContext.tsx +25 -9
  20. package/template/agora-rn-uikit/src/Contexts/RenderContext.tsx +10 -0
  21. package/template/agora-rn-uikit/src/Contexts/RtcContext.tsx +11 -5
  22. package/template/agora-rn-uikit/src/Controls/BtnTemplate.tsx +6 -2
  23. package/template/agora-rn-uikit/src/Controls/ImageIcon.tsx +1 -1
  24. package/template/agora-rn-uikit/src/Controls/Local/EndCall.tsx +6 -2
  25. package/template/agora-rn-uikit/src/Controls/Local/LocalAudioMute.tsx +2 -2
  26. package/template/agora-rn-uikit/src/Controls/Local/LocalVideoMute.tsx +2 -2
  27. package/template/agora-rn-uikit/src/Controls/Local/SwitchCamera.tsx +6 -2
  28. package/template/agora-rn-uikit/src/Controls/LocalControls.tsx +11 -6
  29. package/template/agora-rn-uikit/src/Controls/Remote/RemoteAudioMute.tsx +10 -6
  30. package/template/agora-rn-uikit/src/Controls/Remote/RemoteSwap.tsx +7 -6
  31. package/template/agora-rn-uikit/src/Controls/Remote/RemoteVideoMute.tsx +6 -5
  32. package/template/agora-rn-uikit/src/Controls/RemoteControls.tsx +3 -3
  33. package/template/agora-rn-uikit/src/Reducer/LocalMuteAudio.ts +16 -13
  34. package/template/agora-rn-uikit/src/Reducer/LocalMuteVideo.ts +16 -13
  35. package/template/agora-rn-uikit/src/Reducer/RemoteAudioStateChanged.ts +13 -13
  36. package/template/agora-rn-uikit/src/Reducer/RemoteVideoStateChanged.ts +16 -13
  37. package/template/agora-rn-uikit/src/Reducer/UpdateDualStreamMode.ts +28 -31
  38. package/template/agora-rn-uikit/src/Reducer/UserJoined.ts +48 -35
  39. package/template/agora-rn-uikit/src/Reducer/UserMuteRemoteAudio.ts +11 -13
  40. package/template/agora-rn-uikit/src/Reducer/UserMuteRemoteVideo.ts +11 -13
  41. package/template/agora-rn-uikit/src/Reducer/UserOffline.ts +18 -15
  42. package/template/agora-rn-uikit/src/Rtc/Create.tsx +14 -2
  43. package/template/agora-rn-uikit/src/Rtc/Join.tsx +19 -3
  44. package/template/agora-rn-uikit/src/RtcConfigure.tsx +161 -44
  45. package/template/agora-rn-uikit/src/Utils/useLocalUid.ts +8 -0
  46. package/template/agora-rn-uikit/src/Views/MaxVideoView.native.tsx +8 -6
  47. package/template/agora-rn-uikit/src/Views/MaxVideoView.tsx +8 -6
  48. package/template/agora-rn-uikit/src/Views/MinVideoView.tsx +18 -9
  49. package/template/agora-rn-uikit/src/index.ts +12 -12
  50. package/template/babel.config.js +17 -1
  51. package/template/bridge/rtc/webNg/RtcEngine.ts +34 -28
  52. package/template/bridge/rtc/webNg/SurfaceView.tsx +3 -2
  53. package/template/bridge/rtc/webNg/Types.ts +14 -0
  54. package/template/bridge/rtc/webNg/index.ts +5 -2
  55. package/template/bridge/rtm/web/index.ts +13 -7
  56. package/template/electron-builder.js +3 -2
  57. package/template/esbuild.rsdk.go +226 -0
  58. package/template/{src/subComponents/LayoutEnum.tsx → esbuildConfigTransform.js} +1 -5
  59. package/template/fpe-api/components.ts +42 -0
  60. package/template/fpe-api/context.ts +45 -0
  61. package/template/fpe-api/fpeEvents.ts +9 -0
  62. package/template/fpe-api/index.ts +21 -0
  63. package/template/fpe-api/install.ts +128 -0
  64. package/template/fpe-api/typeDefinition.ts +143 -0
  65. package/template/fpe-api/useFpe.tsx +35 -0
  66. package/template/fpe-api/utils.ts +62 -0
  67. package/template/fpe-implementation/createHook.ts +33 -0
  68. package/template/fpe-implementation/dummyFpe.ts +17 -0
  69. package/template/fpe-implementation/index.ts +1 -0
  70. package/template/fpe-todo.txt +14 -0
  71. package/template/fpe.config.js +25 -0
  72. package/template/global.d.ts +4 -0
  73. package/template/index.rsdk.tsx +27 -0
  74. package/template/index.wsdk.tsx +27 -0
  75. package/template/package-lock.json +2297 -2533
  76. package/template/package.json +28 -12
  77. package/template/react-native-toast-message/src/index.js +9 -10
  78. package/template/react-native-toast-message/src/index.wsdk.js +419 -0
  79. package/template/src/App.tsx +97 -65
  80. package/template/src/AppWrapper.tsx +79 -0
  81. package/template/src/SDKAppWrapper.tsx +67 -0
  82. package/template/src/atoms/PrimaryButton.tsx +14 -8
  83. package/template/src/atoms/TextInput.tsx +13 -5
  84. package/template/src/components/Chat.tsx +171 -139
  85. package/template/src/components/ChatContext.ts +14 -22
  86. package/template/src/components/ColorConfigure.tsx +2 -2
  87. package/template/src/components/Controls.native.tsx +72 -62
  88. package/template/src/components/Controls.tsx +90 -69
  89. package/template/src/components/DeviceConfigure.tsx +1 -1
  90. package/template/src/components/DeviceContext.tsx +14 -7
  91. package/template/src/components/GraphQLProvider.tsx +9 -2
  92. package/template/src/components/GridVideo.tsx +20 -159
  93. package/template/src/components/HostControlView.tsx +54 -15
  94. package/template/src/components/Navbar.tsx +408 -157
  95. package/template/src/components/NetworkQualityContext.tsx +29 -22
  96. package/template/src/components/ParticipantsView.tsx +97 -119
  97. package/template/src/components/PinnedVideo.tsx +41 -188
  98. package/template/src/components/Precall.native.tsx +131 -97
  99. package/template/src/components/Precall.tsx +193 -158
  100. package/template/src/components/RTMConfigure.tsx +320 -398
  101. package/template/src/components/Router.sdk.ts +20 -0
  102. package/template/src/components/SessionContext.tsx +6 -3
  103. package/template/src/components/Settings.native.tsx +3 -0
  104. package/template/src/components/Settings.tsx +65 -31
  105. package/template/src/components/SettingsView.tsx +14 -8
  106. package/template/src/components/Share.tsx +188 -220
  107. package/template/src/components/StorageContext.tsx +5 -5
  108. package/template/src/components/StoreToken.tsx +5 -1
  109. package/template/src/components/chat-messages/useChatMessages.tsx +202 -0
  110. package/template/src/components/chat-notification/useChatNotification.tsx +78 -0
  111. package/template/src/components/chat-ui/useChatUIControl.tsx +66 -0
  112. package/template/src/components/common/Error.tsx +54 -0
  113. package/template/src/components/common/Logo.tsx +35 -0
  114. package/template/src/components/common/index.tsx +8 -0
  115. package/template/src/components/contexts/LiveStreamDataContext.tsx +79 -0
  116. package/template/src/components/contexts/ScreenShareContext.tsx +47 -0
  117. package/template/src/components/contexts/WhiteboardContext.tsx +59 -0
  118. package/template/src/components/dimension/DimensionContext.ts +27 -0
  119. package/template/src/components/dimension/DimensionProvider.tsx +34 -0
  120. package/template/src/components/livestream/LiveStreamContext.tsx +293 -272
  121. package/template/src/components/livestream/Types.ts +26 -7
  122. package/template/src/components/livestream/index.ts +13 -2
  123. package/template/src/components/livestream/views/LiveStreamControls.tsx +5 -1
  124. package/template/src/components/meeting-info/useMeetingInfo.tsx +63 -0
  125. package/template/src/components/meeting-info/useSetMeetingInfo.tsx +38 -0
  126. package/template/src/components/participants/AllAudienceParticipants.tsx +26 -21
  127. package/template/src/components/participants/AllHostParticipants.tsx +36 -53
  128. package/template/src/components/participants/MeParticipant.tsx +9 -10
  129. package/template/src/components/participants/ParticipantName.tsx +2 -1
  130. package/template/src/components/participants/RemoteParticipants.tsx +3 -3
  131. package/template/src/components/precall/LocalMute.native.tsx +91 -0
  132. package/template/src/components/precall/LocalMute.tsx +90 -0
  133. package/template/src/components/precall/VideoPreview.native.tsx +35 -0
  134. package/template/src/components/precall/VideoPreview.tsx +33 -0
  135. package/template/src/components/precall/index.tsx +28 -0
  136. package/template/src/components/precall/joinCallBtn.native.tsx +69 -0
  137. package/template/src/components/precall/joinCallBtn.tsx +91 -0
  138. package/template/src/components/precall/meetingTitle.tsx +26 -0
  139. package/template/src/components/precall/selectDevice.tsx +46 -0
  140. package/template/src/components/precall/textInput.tsx +43 -0
  141. package/template/src/components/precall/usePreCall.tsx +41 -0
  142. package/template/src/components/styles.ts +20 -3
  143. package/template/src/components/useShareLink.tsx +222 -0
  144. package/template/src/components/useWakeLock.tsx +3 -3
  145. package/template/src/custom-events/CustomEvents.ts +197 -0
  146. package/template/src/custom-events/index.tsx +4 -0
  147. package/template/src/custom-events/types.ts +51 -0
  148. package/template/src/language/default-labels/commonLabels.ts +21 -0
  149. package/template/src/language/default-labels/createScreenLabels.ts +22 -0
  150. package/template/src/language/default-labels/index.ts +38 -0
  151. package/template/src/language/default-labels/joinScreenLabels.ts +13 -0
  152. package/template/src/language/default-labels/precallScreenLabels.ts +33 -0
  153. package/template/src/language/default-labels/shareLinkScreenLabels.ts +44 -0
  154. package/template/src/language/default-labels/videoCallScreenLabels.ts +189 -0
  155. package/template/src/language/i18nTypes.ts +10 -0
  156. package/template/src/language/index.ts +18 -0
  157. package/template/src/language/useLanguage.tsx +92 -0
  158. package/template/src/pages/Authenticate.tsx +21 -15
  159. package/template/src/pages/Create.tsx +176 -159
  160. package/template/src/pages/Join.tsx +44 -32
  161. package/template/src/pages/VideoCall.tsx +134 -406
  162. package/template/src/pages/create/useCreate.tsx +37 -0
  163. package/template/src/pages/video-call/CustomLayout.ts +17 -0
  164. package/template/src/pages/video-call/CustomUserContextHolder.tsx +12 -0
  165. package/template/src/pages/video-call/DefaultLayouts.ts +65 -0
  166. package/template/src/pages/video-call/NameWithMicStatus.tsx +62 -0
  167. package/template/src/pages/video-call/RenderComponent.tsx +52 -0
  168. package/template/src/pages/video-call/VideoCallScreen.tsx +191 -0
  169. package/template/src/pages/video-call/VideoComponent.tsx +34 -0
  170. package/template/src/pages/video-call/VideoRenderer.tsx +86 -0
  171. package/template/src/pages/video-call/index.ts +20 -0
  172. package/template/src/rtm/RTMEngine.ts +58 -0
  173. package/template/src/rtm/utils.ts +28 -0
  174. package/template/src/rtm-events/EventUtils.ts +268 -0
  175. package/template/src/rtm-events/EventsQueue.ts +38 -0
  176. package/template/src/rtm-events/constants.ts +40 -0
  177. package/template/src/rtm-events/index.tsx +8 -0
  178. package/template/src/rtm-events/types.ts +7 -0
  179. package/template/src/subComponents/ChatBubble.tsx +18 -11
  180. package/template/src/subComponents/ChatContainer.tsx +78 -29
  181. package/template/src/subComponents/ChatInput.tsx +146 -70
  182. package/template/src/subComponents/CopyJoinInfo.tsx +52 -67
  183. package/template/src/subComponents/Error.tsx +35 -24
  184. package/template/src/subComponents/LanguageSelector.tsx +85 -0
  185. package/template/src/subComponents/LayoutIconDropdown.native.tsx +163 -0
  186. package/template/src/subComponents/LayoutIconDropdown.tsx +198 -0
  187. package/template/src/subComponents/LocalAudioMute.tsx +52 -30
  188. package/template/src/subComponents/LocalEndCall.tsx +52 -0
  189. package/template/src/subComponents/LocalSwitchCamera.tsx +61 -0
  190. package/template/src/subComponents/LocalVideoMute.tsx +48 -30
  191. package/template/src/subComponents/LogoutButton.tsx +20 -5
  192. package/template/src/subComponents/NetworkQualityPill.tsx +43 -13
  193. package/template/src/subComponents/OpenInNativeButton.tsx +3 -2
  194. package/template/src/subComponents/Recording.tsx +46 -138
  195. package/template/src/subComponents/RemoteAudioMute.tsx +30 -34
  196. package/template/src/subComponents/RemoteEndCall.tsx +18 -7
  197. package/template/src/subComponents/RemoteVideoMute.tsx +17 -9
  198. package/template/src/subComponents/ScreenShareNotice.tsx +40 -40
  199. package/template/src/subComponents/SelectDevice.tsx +88 -45
  200. package/template/src/subComponents/SelectOAuth.tsx +30 -6
  201. package/template/src/subComponents/SidePanelButtons.ts +39 -0
  202. package/template/src/subComponents/TextWithTooltip.native.tsx +2 -1
  203. package/template/src/subComponents/TextWithTooltip.tsx +15 -20
  204. package/template/src/subComponents/chat/ChatParticipants.tsx +31 -32
  205. package/template/src/subComponents/livestream/ApprovedLiveStreamControlsView.tsx +7 -3
  206. package/template/src/subComponents/livestream/CurrentLiveStreamRequestsView.tsx +32 -18
  207. package/template/src/subComponents/livestream/controls/LocalRaiseHand.tsx +22 -8
  208. package/template/src/subComponents/livestream/controls/RemoteLiveStreamApprovedRequestRecall.tsx +12 -7
  209. package/template/src/subComponents/livestream/controls/RemoteLiveStreamRequestApprove.tsx +24 -27
  210. package/template/src/subComponents/livestream/controls/RemoteLiveStreamRequestReject.tsx +23 -26
  211. package/template/src/subComponents/livestream/index.ts +10 -2
  212. package/template/src/subComponents/recording/useRecording.tsx +209 -0
  213. package/template/src/subComponents/recording/useRecordingLayoutQuery.tsx +64 -0
  214. package/template/src/subComponents/screenshare/ScreenshareButton.native.tsx +18 -0
  215. package/template/src/subComponents/screenshare/ScreenshareButton.tsx +59 -31
  216. package/template/src/subComponents/screenshare/ScreenshareConfigure.native.tsx +57 -52
  217. package/template/src/subComponents/screenshare/ScreenshareConfigure.tsx +97 -138
  218. package/template/src/subComponents/screenshare/useScreenshare.tsx +29 -0
  219. package/template/src/subComponents/toastConfig.tsx +25 -20
  220. package/template/src/utils/IsAttendeeUser.ts +34 -0
  221. package/template/src/utils/SdkEvents.ts +68 -0
  222. package/template/src/utils/common.tsx +40 -0
  223. package/template/src/utils/eventEmitter.ts +29 -0
  224. package/template/src/utils/getMeetingInvite.ts +30 -0
  225. package/template/src/utils/index.tsx +11 -2
  226. package/template/src/utils/isAudioEnabled.ts +29 -0
  227. package/template/src/utils/isHostUser.ts +33 -0
  228. package/template/src/utils/isMobileOrTablet.native.ts +5 -0
  229. package/template/src/utils/{mobileWebTest.tsx → isMobileOrTablet.ts} +5 -2
  230. package/template/src/utils/isPSTNUser.ts +30 -0
  231. package/template/src/utils/isSDK.sdk.ts +5 -0
  232. package/template/src/utils/isSDK.ts +5 -0
  233. package/template/src/utils/isScreenShareUser.ts +31 -0
  234. package/template/src/utils/isVideoEnabled.ts +29 -0
  235. package/template/src/utils/useButtonTemplate.tsx +43 -0
  236. package/template/src/utils/useCreateMeeting.ts +74 -0
  237. package/template/src/utils/useGetLiveStreamingRequests.ts +24 -0
  238. package/template/src/utils/useGetMeetingPhrase.ts +68 -0
  239. package/template/src/utils/useGetName.ts +20 -0
  240. package/template/src/{subComponents/screenshare/ScreenshareContext.tsx → utils/useGroupMessages.ts} +10 -7
  241. package/template/src/utils/useJoinMeeting.ts +120 -0
  242. package/template/src/utils/useLayout.tsx +40 -0
  243. package/template/src/utils/useLiveStreamingUids.ts +26 -0
  244. package/template/src/utils/useMutePSTN.ts +43 -0
  245. package/template/src/utils/useMuteToggleLocal.ts +109 -0
  246. package/template/src/utils/useNavParams.ts +6 -0
  247. package/template/src/utils/useNavigateTo.ts +8 -0
  248. package/template/src/utils/usePrivateMessages.ts +33 -0
  249. package/template/src/utils/useRemoteEndCall.ts +27 -0
  250. package/template/src/utils/useRemoteMute.ts +64 -0
  251. package/template/src/utils/useSendControlMessage.ts +51 -0
  252. package/template/src/utils/useSendMessage.ts +40 -0
  253. package/template/src/utils/useSetName.ts +20 -0
  254. package/template/src/utils/useSetUnreadMessageCount.ts +43 -0
  255. package/template/src/utils/useSidePanel.tsx +41 -0
  256. package/template/src/utils/useString.ts +61 -0
  257. package/template/src/utils/useUnreadMessageCount.ts +50 -0
  258. package/template/src/utils/useUserList.ts +26 -0
  259. package/template/tsconfig.json +4 -4
  260. package/template/tsconfig_fpeApi.json +103 -0
  261. package/template/tsconfig_rsdk_index.json +105 -0
  262. package/template/tsconfig_wsdk_index.json +104 -0
  263. package/template/webpack.commons.js +40 -16
  264. package/template/webpack.main.config.js +2 -1
  265. package/template/webpack.renderer.config.js +1 -1
  266. package/template/webpack.rsdk.config.js +33 -0
  267. package/template/webpack.ts.config.js +89 -0
  268. package/template/webpack.web.config.js +8 -1
  269. package/template/webpack.wsdk.config.js +34 -0
  270. package/template/agora-rn-uikit/.git/logs/refs/heads/ab-dev-auto +0 -1
  271. package/template/agora-rn-uikit/.git/objects/pack/pack-0061d00cd98162a329a32b537488a35d0abeb069.idx +0 -0
  272. package/template/agora-rn-uikit/.git/refs/heads/ab-dev-auto +0 -1
  273. package/template/agora-rn-uikit/src/Contexts/MaxUidContext.tsx +0 -7
  274. package/template/agora-rn-uikit/src/Contexts/MinUidContext.tsx +0 -8
  275. package/template/src/components/participants/context/ParticipantContext.tsx +0 -97
  276. package/template/src/subComponents/ScreenshareButton.tsx +0 -257
  277. package/template/src/subComponents/SwitchCamera.tsx +0 -35
  278. package/template/src/utils/hasBrandLogo.tsx +0 -3
  279. package/template/src/utils/mobileWebTest.native.tsx +0 -5
  280. package/template/src/utils/shouldAuthenticate.tsx +0 -7
@@ -10,76 +10,60 @@
10
10
  *********************************************
11
11
  */
12
12
  import React, {useState, useContext, useEffect} from 'react';
13
- import {View, Text, StyleSheet, Dimensions, Platform} from 'react-native';
14
- import TextInput from '../atoms/TextInput';
15
- import PrimaryButton from '../atoms/PrimaryButton';
16
- import {
17
- MaxUidConsumer,
18
- MaxVideoView,
19
- LocalAudioMute,
20
- LocalVideoMute,
21
- LocalUserContext,
22
- PropsContext,
23
- ClientRole,
24
- } from '../../agora-rn-uikit';
25
- import SelectDevice from '../subComponents/SelectDevice';
26
- import Logo from '../subComponents/Logo';
27
- import hasBrandLogo from '../utils/hasBrandLogo';
13
+ import {View, Text, StyleSheet, Dimensions} from 'react-native';
14
+ import {RtcContext, PropsContext, ClientRole} from '../../agora-rn-uikit';
15
+ import {isValidReactComponent, isWeb} from '../utils/common';
28
16
  import ColorContext from './ColorContext';
29
- import Error from '../subComponents/Error';
30
- import {useWakeLock} from '../components/useWakeLock';
31
- import mobileAndTabletCheck from '../utils/mobileWebTest';
32
-
33
- const audio = new Audio(
34
- 'https://dl.dropboxusercontent.com/s/1cdwpm3gca9mlo0/kick.mp3',
35
- );
36
-
37
- const JoinRoomInputView = (props: any) => {
38
- const {
39
- username,
40
- setUsername,
41
- queryComplete,
42
- setCallActive,
43
- buttonText,
44
- error,
45
- } = props;
46
-
47
- const {awake, request} = useWakeLock();
17
+ import {useMeetingInfo} from './meeting-info/useMeetingInfo';
18
+ import PreCallLogo from './common/Logo';
19
+ import {useFpe} from 'fpe-api';
20
+ import PreCallLocalMute from './precall/LocalMute';
21
+ import {
22
+ PreCallJoinBtn,
23
+ PreCallTextInput,
24
+ PreCallMeetingTitle,
25
+ PreCallSelectDevice,
26
+ PreCallVideoPreview,
27
+ } from './precall/index';
28
+ import SDKEvents from '../utils/SdkEvents';
29
+ import isSDKCheck from '../utils/isSDK';
48
30
 
49
- const onSubmit = () => {
50
- setCallActive(true);
51
- // Play a sound to avoid autoblocking in safari
52
- if (Platform.OS === 'web' || mobileAndTabletCheck()) {
53
- audio.volume = 0;
54
- audio.play().then(() => {
55
- // pause directly once played
56
- audio.pause();
57
- });
58
- }
59
- // Sleep only on mobile browsers
60
- if (Platform.OS === 'web' && mobileAndTabletCheck() && !awake) {
61
- // Request wake lock
62
- request();
63
- }
64
- };
31
+ const JoinRoomInputView = () => {
32
+ const {JoinButton, Textbox} = useFpe((data) => {
33
+ let components: {
34
+ JoinButton: React.ComponentType;
35
+ Textbox: React.ComponentType;
36
+ } = {Textbox: PreCallTextInput, JoinButton: PreCallJoinBtn};
37
+ // commented for v1 release
38
+ // if (
39
+ // data?.components?.precall &&
40
+ // typeof data?.components?.precall === 'object'
41
+ // ) {
42
+ // if (
43
+ // data?.components?.precall?.joinButton &&
44
+ // typeof data?.components?.precall?.joinButton !== 'object'
45
+ // ) {
46
+ // if (isValidReactComponent(data?.components?.precall?.joinButton)) {
47
+ // components.JoinButton = data?.components?.precall?.joinButton;
48
+ // }
49
+ // }
65
50
 
51
+ // if (
52
+ // data?.components?.precall?.textBox &&
53
+ // typeof data?.components?.precall?.textBox !== 'object'
54
+ // ) {
55
+ // if (isValidReactComponent(data?.components?.precall?.textBox)) {
56
+ // components.Textbox = data?.components?.precall?.textBox;
57
+ // }
58
+ // }
59
+ // }
60
+ return components;
61
+ });
66
62
  return (
67
63
  <View style={style.btnContainer}>
68
- <TextInput
69
- value={username}
70
- onChangeText={(text) => {
71
- setUsername(text);
72
- }}
73
- onSubmitEditing={() => {}}
74
- placeholder={queryComplete ? 'Display name*' : 'Getting name...'}
75
- editable={queryComplete && !error}
76
- />
64
+ <Textbox />
77
65
  <View style={{height: 20}} />
78
- <PrimaryButton
79
- onPress={onSubmit}
80
- disabled={!queryComplete || username.trim() === '' || error}
81
- text={queryComplete ? buttonText : 'Loading...'}
82
- />
66
+ <JoinButton />
83
67
  </View>
84
68
  );
85
69
  };
@@ -87,9 +71,76 @@ const JoinRoomInputView = (props: any) => {
87
71
  const Precall = (props: any) => {
88
72
  const {primaryColor} = useContext(ColorContext);
89
73
  const {rtcProps} = useContext(PropsContext);
74
+ const {
75
+ VideoPreview,
76
+ MeetingName,
77
+ DeviceSelect,
78
+ PrecallAfterView,
79
+ PrecallBeforeView,
80
+ } = useFpe((data) => {
81
+ const components: {
82
+ PrecallAfterView: React.ComponentType;
83
+ PrecallBeforeView: React.ComponentType;
84
+ DeviceSelect: React.ComponentType;
85
+ VideoPreview: React.ComponentType;
86
+ MeetingName: React.ComponentType;
87
+ } = {
88
+ PrecallAfterView: React.Fragment,
89
+ PrecallBeforeView: React.Fragment,
90
+ MeetingName: PreCallMeetingTitle,
91
+ VideoPreview: PreCallVideoPreview,
92
+ DeviceSelect: PreCallSelectDevice,
93
+ };
94
+ // commented for v1 release
95
+ // if (
96
+ // data?.components?.precall &&
97
+ // typeof data?.components?.precall === 'object'
98
+ // ) {
99
+ // if (
100
+ // data?.components?.precall?.after &&
101
+ // isValidReactComponent(data?.components?.precall?.after)
102
+ // ) {
103
+ // components.PrecallAfterView = data?.components?.precall?.after;
104
+ // }
105
+ // if (
106
+ // data?.components?.precall?.before &&
107
+ // isValidReactComponent(data?.components?.precall?.before)
108
+ // ) {
109
+ // components.PrecallBeforeView = data?.components?.precall?.before;
110
+ // }
111
+
112
+ // if (
113
+ // data?.components?.precall?.meetingName &&
114
+ // typeof data?.components?.precall?.meetingName !== 'object'
115
+ // ) {
116
+ // if (isValidReactComponent(data?.components?.precall?.meetingName)) {
117
+ // components.MeetingName = data?.components?.precall?.meetingName;
118
+ // }
119
+ // }
90
120
 
91
- const {queryComplete, error, title} = props;
92
- const [buttonText, setButtonText] = React.useState('Join Room');
121
+ // if (
122
+ // data?.components?.precall?.deviceSelect &&
123
+ // typeof data?.components?.precall?.deviceSelect !== 'object'
124
+ // ) {
125
+ // if (isValidReactComponent(data?.components?.precall?.deviceSelect)) {
126
+ // components.DeviceSelect = data?.components?.precall?.deviceSelect;
127
+ // }
128
+ // }
129
+
130
+ // if (
131
+ // data?.components?.precall?.preview &&
132
+ // typeof data?.components?.precall?.preview !== 'object'
133
+ // ) {
134
+ // if (isValidReactComponent(data?.components?.precall?.preview)) {
135
+ // components.VideoPreview = data?.components?.precall?.preview;
136
+ // }
137
+ // }
138
+ // }
139
+ return components;
140
+ });
141
+ const {isJoinDataFetched, meetingTitle} = useMeetingInfo();
142
+ const rtc = useContext(RtcContext);
143
+ const isSDK = isSDKCheck();
93
144
 
94
145
  const [dim, setDim] = useState<[number, number]>([
95
146
  Dimensions.get('window').width,
@@ -101,115 +152,99 @@ const Precall = (props: any) => {
101
152
  };
102
153
 
103
154
  useEffect(() => {
104
- if (Platform.OS === 'web') {
105
- if (title) {
106
- document.title = title + ' | ' + $config.APP_NAME;
155
+ if (isWeb && !isSDK) {
156
+ if (meetingTitle) {
157
+ document.title = meetingTitle + ' | ' + $config.APP_NAME;
107
158
  }
108
159
  }
109
160
  });
110
161
 
111
162
  useEffect(() => {
112
- let clientRole = '';
113
- if (rtcProps?.role == 1) {
114
- clientRole = 'Host';
115
- }
116
- if (rtcProps?.role == 2) {
117
- clientRole = 'Audience';
163
+ if (isJoinDataFetched) {
164
+ new Promise((res) =>
165
+ // @ts-ignore
166
+ rtc.RtcEngine.getDevices(function (devices: MediaDeviceInfo[]) {
167
+ res(devices);
168
+ }),
169
+ ).then((devices: MediaDeviceInfo[]) => {
170
+ SDKEvents.emit('preJoin', meetingTitle, devices);
171
+ });
118
172
  }
119
- setButtonText(
120
- $config.EVENT_MODE ? `Join Room as ${clientRole}` : `Join Room`,
121
- );
122
- }, [rtcProps?.role]);
173
+ }, [isJoinDataFetched]);
123
174
 
124
175
  const isMobileView = () => dim[0] < dim[1] + 150;
125
176
 
126
- if (!queryComplete) return <Text style={style.titleFont}>Loading..</Text>;
177
+ if (!isJoinDataFetched) return <Text style={style.titleFont}>Loading..</Text>;
127
178
 
128
- const brandHolder = () => (
129
- <View style={style.nav}>
130
- {hasBrandLogo && <Logo />}
131
- {error && <Error error={error} showBack={true} />}
132
- </View>
133
- );
179
+ const brandHolder = () => <PreCallLogo />;
134
180
 
135
- const meetingTitle = () => (
136
- <>
137
- <Text style={[style.titleHeading, {color: $config.PRIMARY_COLOR}]}>
138
- {title}
139
- </Text>
140
- <View style={{height: 50}} />
141
- </>
142
- );
181
+ const FpePrecallComponent = useFpe((data) => {
182
+ // commented for v1 release
183
+ // if (
184
+ // data?.components?.precall &&
185
+ // typeof data?.components?.precall !== 'object'
186
+ // ) {
187
+ // if (isValidReactComponent(data?.components?.precall)) {
188
+ // return data?.components?.precall;
189
+ // }
190
+ // return undefined;
191
+ // }
192
+ return undefined;
193
+ });
143
194
 
144
- return (
145
- <View style={style.main} onLayout={onLayout}>
146
- {/* Precall screen only changes for audience in Live Stream event */}
147
- {$config.EVENT_MODE && rtcProps.role == ClientRole.Audience ? (
148
- <View style={style.preCallContainer}>
149
- {brandHolder()}
150
- {meetingTitle()}
151
- <JoinRoomInputView {...props} buttonText={buttonText} />
152
- </View>
153
- ) : (
154
- <>
155
- {brandHolder()}
156
- <View style={style.content}>
157
- <View style={style.upperContainer}>
158
- <View
159
- style={[
160
- style.leftContent,
161
- isMobileView() ? {paddingRight: 0} : {paddingRight: 40},
162
- ]}>
163
- <MaxUidConsumer>
164
- {(maxUsers) => (
165
- <View style={{borderRadius: 10, flex: 1}}>
166
- <MaxVideoView user={maxUsers[0]} key={maxUsers[0].uid} />
167
- </View>
168
- )}
169
- </MaxUidConsumer>
170
- <View style={style.precallControls}>
171
- <LocalUserContext>
172
- <View style={{alignSelf: 'center'}}>
173
- <LocalVideoMute />
174
- </View>
175
- <View style={{alignSelf: 'center'}}>
176
- <LocalAudioMute />
177
- </View>
178
- </LocalUserContext>
179
- </View>
180
- <View style={{marginBottom: '10%'}}>
181
- {/* This view is visible only on MOBILE view */}
182
- {isMobileView() && (
183
- <JoinRoomInputView {...props} buttonText={buttonText} />
184
- )}
195
+ return FpePrecallComponent ? (
196
+ <FpePrecallComponent />
197
+ ) : (
198
+ <>
199
+ <PrecallBeforeView />
200
+ <View style={style.main} onLayout={onLayout}>
201
+ {/* Precall screen only changes for audience in Live Stream event */}
202
+ {$config.EVENT_MODE && rtcProps.role == ClientRole.Audience ? (
203
+ <View style={style.preCallContainer}>
204
+ {brandHolder()}
205
+ <MeetingName />
206
+ <JoinRoomInputView />
207
+ </View>
208
+ ) : (
209
+ <>
210
+ {brandHolder()}
211
+ <View style={style.content}>
212
+ <View style={style.upperContainer}>
213
+ <View
214
+ style={[
215
+ style.leftContent,
216
+ isMobileView() ? {paddingRight: 0} : {paddingRight: 40},
217
+ ]}>
218
+ <VideoPreview />
219
+ <PreCallLocalMute />
220
+ <View style={{marginBottom: '10%'}}>
221
+ {/* This view is visible only on MOBILE view */}
222
+ {isMobileView() && <JoinRoomInputView />}
223
+ </View>
185
224
  </View>
186
- </View>
187
- {/* This view is visible only on WEB view */}
188
- {!isMobileView() && (
189
- <View style={style.rightContent}>
190
- {meetingTitle()}
191
- <View
192
- style={[{shadowColor: primaryColor}, style.precallPickers]}>
193
- <Text style={style.subHeading}>Select Input Device</Text>
225
+ {/* This view is visible only on WEB view */}
226
+ {!isMobileView() && (
227
+ <View style={style.rightContent}>
228
+ <MeetingName />
194
229
  <View
195
- style={{
196
- flex: 1,
197
- maxWidth: Platform.OS === 'web' ? '25vw' : 'auto',
198
- marginVertical: 30,
199
- }}>
200
- <SelectDevice />
201
- </View>
202
- <View style={{width: '100%'}}>
203
- <JoinRoomInputView {...props} buttonText={buttonText} />
230
+ style={[
231
+ {shadowColor: primaryColor},
232
+ style.precallPickers,
233
+ ]}>
234
+ <DeviceSelect />
235
+ <View style={{width: '100%'}}>
236
+ <JoinRoomInputView />
237
+ </View>
204
238
  </View>
205
239
  </View>
206
- </View>
207
- )}
240
+ )}
241
+ </View>
208
242
  </View>
209
- </View>
210
- </>
211
- )}
212
- </View>
243
+ </>
244
+ )}
245
+ </View>
246
+ <PrecallAfterView />
247
+ </>
213
248
  );
214
249
  };
215
250