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
@@ -13,84 +13,116 @@ import React, {useState} from 'react';
13
13
  import Join from './pages/Join';
14
14
  import VideoCall from './pages/VideoCall';
15
15
  import Create from './pages/Create';
16
- import Authenticate from './pages/Authenticate';
17
- import {Router, Route, Switch, Redirect} from './components/Router';
16
+ import {Route, Switch, Redirect} from './components/Router';
18
17
  import PrivateRoute from './components/PrivateRoute';
19
18
  import OAuth from './components/OAuth';
20
- import Navigation from './components/Navigation';
21
19
  import StoreToken from './components/StoreToken';
22
- import {StorageProvider} from './components/StorageContext';
23
- import GraphQLProvider from './components/GraphQLProvider';
24
- // import JoinPhrase from './components/JoinPhrase';
25
- import {SessionProvider} from './components/SessionContext';
26
- import {ImageBackground, Platform, SafeAreaView, StatusBar} from 'react-native';
27
- import ColorConfigure from './components/ColorConfigure';
28
- import Toast from '../react-native-toast-message';
29
- import ToastConfig from './subComponents/toastConfig';
30
- import shouldAuthenticate from './utils/shouldAuthenticate';
20
+ import {shouldAuthenticate, isIOS} from './utils/common';
31
21
  import KeyboardManager from 'react-native-keyboard-manager';
32
-
33
-
34
- if (Platform.OS === 'ios') {
22
+ // commented for v1 release
23
+ //import {useFpe, CustomRoutesInterface, CUSTOM_ROUTES_PREFIX} from 'fpe-api';
24
+ import AppWrapper from './AppWrapper';
25
+ import {
26
+ MeetingInfoContextInterface,
27
+ MeetingInfoDefaultValue,
28
+ MeetingInfoProvider,
29
+ } from './components/meeting-info/useMeetingInfo';
30
+ import {SetMeetingInfoProvider} from './components/meeting-info/useSetMeetingInfo';
31
+ import {ShareLinkProvider} from './components/useShareLink';
32
+ if (isIOS) {
35
33
  KeyboardManager.setEnable(true);
36
34
  KeyboardManager.setEnableAutoToolbar(false);
37
35
  KeyboardManager.setShouldShowToolbarPlaceholder(false);
38
36
  KeyboardManager.setShouldResignOnTouchOutside(true);
39
37
  }
40
38
 
39
+ //Extending the UI Kit Type defintion to add custom attribute to render interface
40
+ declare module 'agora-rn-uikit' {
41
+ interface DefaultRenderInterface {
42
+ name: string;
43
+ screenUid: number;
44
+ offline: boolean;
45
+ }
46
+ interface RtcPropsInterface {
47
+ screenShareUid: number;
48
+ screenShareToken?: string;
49
+ }
50
+ }
51
+
41
52
  const App: React.FC = () => {
42
- const [phrase, onChangePhrase] = useState('');
53
+ //commented for v1 release
54
+ //const CustomRoutes = useFpe((data) => data?.customRoutes);
55
+ // const RenderCustomRoutes = () => {
56
+ // try {
57
+ // return (
58
+ // CustomRoutes &&
59
+ // Array.isArray(CustomRoutes) &&
60
+ // CustomRoutes.length &&
61
+ // CustomRoutes?.map((item: CustomRoutesInterface, i: number) => {
62
+ // let RouteComponent = item?.isPrivateRoute ? PrivateRoute : Route;
63
+ // return (
64
+ // <RouteComponent
65
+ // path={CUSTOM_ROUTES_PREFIX + item.path}
66
+ // exact={item.exact}
67
+ // key={i}
68
+ // failureRedirectTo={
69
+ // item.failureRedirectTo ? item.failureRedirectTo : '/'
70
+ // }
71
+ // {...item.routeProps}>
72
+ // <item.component {...item.componentProps} />
73
+ // </RouteComponent>
74
+ // );
75
+ // })
76
+ // );
77
+ // } catch (error) {
78
+ // console.error('Error on rendering the custom routes');
79
+ // return null;
80
+ // }
81
+ // };
82
+ const [meetingInfo, setMeetingInfo] = useState<MeetingInfoContextInterface>(
83
+ MeetingInfoDefaultValue,
84
+ );
43
85
 
44
86
  return (
45
- <ImageBackground
46
- source={{uri: $config.BG}}
47
- style={{flex: 1}}
48
- resizeMode={'cover'}>
49
- <SafeAreaView style={{flex: 1}}>
50
- <StatusBar hidden={true} />
51
- <Toast ref={(ref) => Toast.setRef(ref)} config={ToastConfig} />
52
- <StorageProvider>
53
- <GraphQLProvider>
54
- <Router>
55
- <SessionProvider>
56
- <ColorConfigure>
57
- <Navigation />
58
- <Switch>
59
- <Route exact path={'/'}>
60
- <Redirect to={'/create'} />
61
- </Route>
62
- <Route exact path={'/authenticate'}>
63
- {shouldAuthenticate ? <OAuth /> : <Redirect to={'/'} />}
64
- </Route>
65
- <Route path={'/auth-token/:token'}>
66
- <StoreToken />
67
- </Route>
68
- <Route exact path={'/join'}>
69
- <Join phrase={phrase} onChangePhrase={onChangePhrase} />
70
- </Route>
71
- {shouldAuthenticate ? (
72
- <PrivateRoute
73
- path={'/create'}
74
- failureRedirectTo={'/authenticate'}>
75
- <Create />
76
- </PrivateRoute>
77
- ) : (
78
- <Route path={'/create'}>
79
- <Create />
80
- </Route>
81
- )}
82
- <Route path={'/:phrase'}>
83
- <VideoCall />
84
- </Route>
85
- </Switch>
86
- </ColorConfigure>
87
- </SessionProvider>
88
- </Router>
89
- </GraphQLProvider>
90
- </StorageProvider>
91
- </SafeAreaView>
92
- </ImageBackground>
87
+ <AppWrapper>
88
+ <SetMeetingInfoProvider value={{setMeetingInfo}}>
89
+ <MeetingInfoProvider value={{...meetingInfo}}>
90
+ <ShareLinkProvider>
91
+ <Switch>
92
+ {/* commented for v1 release */}
93
+ {/* {RenderCustomRoutes()} */}
94
+ <Route exact path={'/'}>
95
+ <Redirect to={'/create'} />
96
+ </Route>
97
+ <Route exact path={'/authenticate'}>
98
+ {shouldAuthenticate ? <OAuth /> : <Redirect to={'/'} />}
99
+ </Route>
100
+ <Route path={'/auth-token/:token'}>
101
+ <StoreToken />
102
+ </Route>
103
+ <Route exact path={'/join'}>
104
+ <Join />
105
+ </Route>
106
+ {shouldAuthenticate ? (
107
+ <PrivateRoute
108
+ path={'/create'}
109
+ failureRedirectTo={'/authenticate'}>
110
+ <Create />
111
+ </PrivateRoute>
112
+ ) : (
113
+ <Route path={'/create'}>
114
+ <Create />
115
+ </Route>
116
+ )}
117
+ <Route path={'/:phrase'}>
118
+ <VideoCall />
119
+ </Route>
120
+ </Switch>
121
+ </ShareLinkProvider>
122
+ </MeetingInfoProvider>
123
+ </SetMeetingInfoProvider>
124
+ </AppWrapper>
93
125
  );
94
- // return <div> hello world</div>; {/* isn't join:phrase redundant now, also can we remove joinStore */}
95
126
  };
127
+
96
128
  export default App;
@@ -0,0 +1,79 @@
1
+ /*
2
+ ********************************************
3
+ Copyright © 2021 Agora Lab, Inc., all rights reserved.
4
+ AppBuilder and all associated components, source code, APIs, services, and documentation
5
+ (the “Materials”) are owned by Agora Lab, Inc. and its licensors. The Materials may not be
6
+ accessed, used, modified, or distributed for any purpose without a license from Agora Lab, Inc.
7
+ Use without a license or in violation of any license terms and conditions (including use for
8
+ any purpose competitive to Agora Lab, Inc.’s business) is strictly prohibited. For more
9
+ information visit https://appbuilder.agora.io.
10
+ *********************************************
11
+ */
12
+ import React from 'react';
13
+ import {Router} from './components/Router';
14
+ import Navigation from './components/Navigation';
15
+ import {StorageProvider} from './components/StorageContext';
16
+ import GraphQLProvider from './components/GraphQLProvider';
17
+ import {SessionProvider} from './components/SessionContext';
18
+ import {ImageBackground, SafeAreaView, StatusBar, Platform} from 'react-native';
19
+ import ColorConfigure from './components/ColorConfigure';
20
+ import Toast from '../react-native-toast-message';
21
+ import ToastConfig from './subComponents/toastConfig';
22
+ import {isValidReactComponent} from './utils/common';
23
+ import DimensionProvider from './components/dimension/DimensionProvider';
24
+ import Error from './components/common/Error';
25
+ import {ErrorProvider} from './components/common';
26
+ import {useFpe, FpeProvider, fpeConfig, FpeApiInterface} from 'fpe-api';
27
+ import {LanguageProvider} from './language/useLanguage';
28
+
29
+ interface AppWrapperProps {
30
+ children: React.ReactNode;
31
+ fpeConfig?: FpeApiInterface;
32
+ }
33
+
34
+ const AppWrapper = (props: AppWrapperProps) => {
35
+ const AppRoot = useFpe((data) => {
36
+ if (data?.appRoot && isValidReactComponent(data.appRoot)) {
37
+ return data.appRoot;
38
+ }
39
+ return React.Fragment;
40
+ });
41
+
42
+ return (
43
+ <AppRoot>
44
+ <ImageBackground
45
+ source={{uri: $config.BG}}
46
+ style={{flex: 1}}
47
+ resizeMode={'cover'}>
48
+ <SafeAreaView
49
+ // @ts-ignore textAlign not supported by TS definitions but is applied to web regardless
50
+ style={[{flex: 1}, Platform.select({web: {textAlign: 'left'}})]}>
51
+ <StatusBar hidden={true} />
52
+ <Toast ref={(ref) => Toast.setRef(ref)} config={ToastConfig} />
53
+ <StorageProvider>
54
+ <GraphQLProvider>
55
+ <Router>
56
+ <SessionProvider>
57
+ <ColorConfigure>
58
+ <DimensionProvider>
59
+ <LanguageProvider>
60
+ <ErrorProvider>
61
+ <Error />
62
+ <Navigation />
63
+ {props.children}
64
+ </ErrorProvider>
65
+ </LanguageProvider>
66
+ </DimensionProvider>
67
+ </ColorConfigure>
68
+ </SessionProvider>
69
+ </Router>
70
+ </GraphQLProvider>
71
+ </StorageProvider>
72
+ </SafeAreaView>
73
+ </ImageBackground>
74
+ </AppRoot>
75
+ );
76
+ // return <div> hello world</div>; {/* isn't join:phrase redundant now, also can we remove joinStore */}
77
+ };
78
+
79
+ export default AppWrapper;
@@ -0,0 +1,67 @@
1
+ import React, {useEffect, useState} from 'react';
2
+ import {fpeConfig, FpeProvider, FpeApiInterface} from 'fpe-api';
3
+ import {installFPE as createFPE} from 'fpe-api/install';
4
+ import SDKEvents from './utils/SdkEvents';
5
+ import App from './App';
6
+
7
+ export interface userEventsMapInterface {
8
+ leave: () => void;
9
+ create: (
10
+ hostPhrase: string,
11
+ attendeePhrase?: string,
12
+ pstnNumer?: string,
13
+ ) => void;
14
+ preJoin: (meetingTitle: string, devices: MediaDeviceInfo[]) => void;
15
+ join: (
16
+ meetingTitle: string,
17
+ devices: MediaDeviceInfo[],
18
+ isHost: boolean,
19
+ ) => void;
20
+ }
21
+
22
+ export interface AppBuilderSdkApiInterface {
23
+ addFPE: (fpe: FpeApiInterface) => void;
24
+ createFPE: (fpe: FpeApiInterface) => FpeApiInterface;
25
+ joinMeeting: (joinPhrase: string) => void;
26
+ on: <T extends keyof userEventsMapInterface>(
27
+ userEventName: T,
28
+ callBack: userEventsMapInterface[T],
29
+ ) => void;
30
+ off: (userEventName: keyof userEventsMapInterface) => void;
31
+ }
32
+
33
+ export const AppBuilderSdkApi: AppBuilderSdkApiInterface = {
34
+ addFPE: (fpeConfig: FpeApiInterface) => {
35
+ SDKEvents.emit('addFpe', fpeConfig);
36
+ },
37
+ joinMeeting: (joinPhrase: string) => {
38
+ SDKEvents.emit('joinMeetingWithPhrase', joinPhrase);
39
+ },
40
+ createFPE,
41
+ on: (userEventName, cb) => {
42
+ SDKEvents.on(userEventName, cb);
43
+ },
44
+ off: (userEventName) => {
45
+ SDKEvents.off(userEventName);
46
+ },
47
+ };
48
+
49
+ const SDKAppWrapper = () => {
50
+ const [fpe, setFpe] = useState(fpeConfig);
51
+ useEffect(() => {
52
+ SDKEvents.on('addFpe', (sdkFpeConfig) => {
53
+ console.log('DEBUG(aditya)-SDKEvents: addFpe event called');
54
+ setFpe(sdkFpeConfig);
55
+ });
56
+ // Join event consumed in Create.tsx
57
+ }, []);
58
+ return (
59
+ <>
60
+ <FpeProvider value={fpe}>
61
+ <App />
62
+ </FpeProvider>
63
+ </>
64
+ );
65
+ };
66
+
67
+ export default SDKAppWrapper;
@@ -35,14 +35,20 @@ export default function PrimaryButton(props: ButtonProps) {
35
35
  {backgroundColor: props.disabled ? primaryColor + '80' : primaryColor},
36
36
  ]}
37
37
  {...otherProps}>
38
- {props.text ? (
39
- <Text style={[styles.primaryButtonText as StyleProp<TextStyle>, {color: '#fff'}]}>
40
- {props.text}
41
- </Text>
42
- ) : (
43
- <></>
44
- )}
45
- {children}
38
+ <>
39
+ {props.text ? (
40
+ <Text
41
+ style={[
42
+ styles.primaryButtonText as StyleProp<TextStyle>,
43
+ {color: '#fff'},
44
+ ]}>
45
+ {props.text}
46
+ </Text>
47
+ ) : (
48
+ <></>
49
+ )}
50
+ {children}
51
+ </>
46
52
  </Pressable>
47
53
  );
48
54
  }
@@ -11,6 +11,7 @@
11
11
  */
12
12
  import React, {useContext} from 'react';
13
13
  import {TextInputProps, StyleSheet, TextInput, Platform} from 'react-native';
14
+ import {isWeb} from '../utils/common';
14
15
  import {textInput} from '../../theme.json';
15
16
  import ColorContext from '../components/ColorContext';
16
17
 
@@ -19,7 +20,13 @@ const PrimaryButton = (props: TextInputProps) => {
19
20
  const {style, ...otherProps} = props;
20
21
  return (
21
22
  <TextInput
22
- style={[styles.textInput, styles.textWrapFix, style, styles.noOutline, {borderColor: primaryColor, color: $config.PRIMARY_FONT_COLOR}]}
23
+ style={[
24
+ styles.textInput,
25
+ styles.textWrapFix,
26
+ style,
27
+ styles.noOutline,
28
+ {borderColor: primaryColor, color: $config.PRIMARY_FONT_COLOR},
29
+ ]}
23
30
  placeholderTextColor={$config.PRIMARY_FONT_COLOR + '70'}
24
31
  {...otherProps}
25
32
  autoCorrect={false}
@@ -31,10 +38,11 @@ export default PrimaryButton;
31
38
 
32
39
  const styles = StyleSheet.create({
33
40
  textInput,
34
- noOutline: Platform.OS === 'web' ? { outlineStyle: "none" } : {},
41
+ // @ts-ignore
42
+ noOutline: isWeb ? {outlineStyle: 'none'} : {},
35
43
  textWrapFix: Platform.select({
36
44
  ios: {
37
- paddingVertical: 5
38
- }
39
- })
45
+ paddingVertical: 5,
46
+ },
47
+ }),
40
48
  });