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

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 (303) hide show
  1. package/Readme.md +7 -1
  2. package/package.json +4 -3
  3. package/template/Gulpfile.js +389 -82
  4. package/template/_gitignore +4 -1
  5. package/template/_package-lock.json +32214 -3080
  6. package/template/agora-rn-uikit/src/AgoraUIKit.tsx +23 -20
  7. package/template/agora-rn-uikit/src/Contexts/LocalUserContext.tsx +13 -8
  8. package/template/agora-rn-uikit/src/Contexts/PropsContext.tsx +25 -9
  9. package/template/agora-rn-uikit/src/Contexts/RenderContext.tsx +10 -0
  10. package/template/agora-rn-uikit/src/Contexts/RtcContext.tsx +11 -5
  11. package/template/agora-rn-uikit/src/Controls/BtnTemplate.tsx +6 -2
  12. package/template/agora-rn-uikit/src/Controls/ImageIcon.tsx +1 -1
  13. package/template/agora-rn-uikit/src/Controls/Local/EndCall.tsx +6 -2
  14. package/template/agora-rn-uikit/src/Controls/Local/LocalAudioMute.tsx +2 -2
  15. package/template/agora-rn-uikit/src/Controls/Local/LocalVideoMute.tsx +2 -2
  16. package/template/agora-rn-uikit/src/Controls/Local/SwitchCamera.tsx +6 -2
  17. package/template/agora-rn-uikit/src/Controls/LocalControls.tsx +11 -6
  18. package/template/agora-rn-uikit/src/Controls/Remote/RemoteAudioMute.tsx +10 -6
  19. package/template/agora-rn-uikit/src/Controls/Remote/RemoteSwap.tsx +7 -6
  20. package/template/agora-rn-uikit/src/Controls/Remote/RemoteVideoMute.tsx +6 -5
  21. package/template/agora-rn-uikit/src/Controls/RemoteControls.tsx +3 -3
  22. package/template/agora-rn-uikit/src/Reducer/LocalMuteAudio.ts +16 -13
  23. package/template/agora-rn-uikit/src/Reducer/LocalMuteVideo.ts +16 -13
  24. package/template/agora-rn-uikit/src/Reducer/RemoteAudioStateChanged.ts +13 -13
  25. package/template/agora-rn-uikit/src/Reducer/RemoteVideoStateChanged.ts +16 -13
  26. package/template/agora-rn-uikit/src/Reducer/UpdateDualStreamMode.ts +28 -31
  27. package/template/agora-rn-uikit/src/Reducer/UserJoined.ts +48 -35
  28. package/template/agora-rn-uikit/src/Reducer/UserMuteRemoteAudio.ts +11 -13
  29. package/template/agora-rn-uikit/src/Reducer/UserMuteRemoteVideo.ts +11 -13
  30. package/template/agora-rn-uikit/src/Reducer/UserOffline.ts +18 -15
  31. package/template/agora-rn-uikit/src/Rtc/Create.tsx +22 -3
  32. package/template/agora-rn-uikit/src/Rtc/Join.tsx +19 -3
  33. package/template/agora-rn-uikit/src/RtcConfigure.tsx +161 -44
  34. package/template/agora-rn-uikit/src/Utils/useLocalUid.ts +8 -0
  35. package/template/agora-rn-uikit/src/Views/MaxVideoView.native.tsx +8 -6
  36. package/template/agora-rn-uikit/src/Views/MaxVideoView.tsx +8 -6
  37. package/template/agora-rn-uikit/src/Views/MinVideoView.tsx +18 -9
  38. package/template/agora-rn-uikit/src/index.ts +12 -12
  39. package/template/babel.config.js +17 -1
  40. package/template/bridge/rtc/webNg/RtcEngine.ts +34 -28
  41. package/template/bridge/rtc/webNg/SurfaceView.tsx +3 -2
  42. package/template/bridge/rtc/webNg/Types.ts +14 -0
  43. package/template/bridge/rtc/webNg/index.ts +5 -2
  44. package/template/bridge/rtm/web/index.ts +13 -7
  45. package/template/electron-builder.js +3 -2
  46. package/template/esbuild.rsdk.go +240 -0
  47. package/template/{src/subComponents/LayoutEnum.tsx → esbuildConfigTransform.js} +1 -5
  48. package/template/fpe-api/components.ts +43 -0
  49. package/template/fpe-api/context.ts +45 -0
  50. package/template/fpe-api/fpeEvents.ts +9 -0
  51. package/template/fpe-api/index.ts +21 -0
  52. package/template/fpe-api/install.ts +138 -0
  53. package/template/fpe-api/typeDefinition.ts +144 -0
  54. package/template/fpe-api/useFpe.tsx +35 -0
  55. package/template/fpe-api/utils.ts +61 -0
  56. package/template/fpe-implementation/createHook.ts +33 -0
  57. package/template/fpe-implementation/dummyFpe.ts +17 -0
  58. package/template/fpe-implementation/index.ts +1 -0
  59. package/template/fpe-todo.txt +14 -0
  60. package/template/fpe.config.js +29 -0
  61. package/template/global.d.ts +4 -0
  62. package/template/index.rsdk.tsx +27 -0
  63. package/template/index.wsdk.tsx +27 -0
  64. package/template/package.json +30 -13
  65. package/template/react-native-toast-message/src/index.js +9 -10
  66. package/template/react-native-toast-message/src/index.wsdk.js +419 -0
  67. package/template/src/App.tsx +97 -65
  68. package/template/src/AppWrapper.tsx +79 -0
  69. package/template/src/SDKAppWrapper.tsx +67 -0
  70. package/template/src/atoms/PrimaryButton.tsx +14 -8
  71. package/template/src/atoms/TextInput.tsx +13 -5
  72. package/template/src/components/Chat.tsx +178 -137
  73. package/template/src/components/ChatContext.ts +18 -22
  74. package/template/src/components/ColorConfigure.tsx +2 -2
  75. package/template/src/components/Controls.native.tsx +72 -62
  76. package/template/src/components/Controls.tsx +90 -69
  77. package/template/src/components/DeviceConfigure.tsx +1 -1
  78. package/template/src/components/DeviceContext.tsx +14 -7
  79. package/template/src/components/GraphQLProvider.tsx +9 -2
  80. package/template/src/components/GridVideo.tsx +20 -159
  81. package/template/src/components/HostControlView.tsx +54 -15
  82. package/template/src/components/Navbar.tsx +408 -157
  83. package/template/src/components/NetworkQualityContext.tsx +29 -22
  84. package/template/src/components/ParticipantsView.tsx +91 -115
  85. package/template/src/components/PinnedVideo.tsx +41 -188
  86. package/template/src/components/Precall.native.tsx +131 -97
  87. package/template/src/components/Precall.tsx +193 -158
  88. package/template/src/components/RTMConfigure.tsx +309 -415
  89. package/template/src/components/Router.sdk.ts +20 -0
  90. package/template/src/components/SessionContext.tsx +6 -3
  91. package/template/src/components/Settings.native.tsx +3 -0
  92. package/template/src/components/Settings.tsx +65 -31
  93. package/template/src/components/SettingsView.tsx +14 -8
  94. package/template/src/components/Share.tsx +188 -220
  95. package/template/src/components/StorageContext.tsx +5 -5
  96. package/template/src/components/StoreToken.tsx +5 -1
  97. package/template/src/components/chat-messages/useChatMessages.tsx +208 -0
  98. package/template/src/components/chat-notification/useChatNotification.tsx +78 -0
  99. package/template/src/components/chat-ui/useChatUIControl.tsx +66 -0
  100. package/template/src/components/common/Error.tsx +54 -0
  101. package/template/src/components/common/Logo.tsx +35 -0
  102. package/template/src/components/common/index.tsx +8 -0
  103. package/template/src/components/contexts/LiveStreamDataContext.tsx +79 -0
  104. package/template/src/components/contexts/ScreenShareContext.tsx +47 -0
  105. package/template/src/components/contexts/WhiteboardContext.tsx +59 -0
  106. package/template/src/components/dimension/DimensionContext.ts +27 -0
  107. package/template/src/components/dimension/DimensionProvider.tsx +34 -0
  108. package/template/src/components/livestream/LiveStreamContext.tsx +297 -273
  109. package/template/src/components/livestream/Types.ts +26 -7
  110. package/template/src/components/livestream/index.ts +13 -2
  111. package/template/src/components/livestream/views/LiveStreamControls.tsx +5 -1
  112. package/template/src/components/meeting-info/useMeetingInfo.tsx +63 -0
  113. package/template/src/components/meeting-info/useSetMeetingInfo.tsx +38 -0
  114. package/template/src/components/participants/AllAudienceParticipants.tsx +26 -21
  115. package/template/src/components/participants/AllHostParticipants.tsx +41 -53
  116. package/template/src/components/participants/MeParticipant.tsx +9 -10
  117. package/template/src/components/participants/ParticipantName.tsx +2 -1
  118. package/template/src/components/participants/RemoteParticipants.tsx +3 -3
  119. package/template/src/components/precall/LocalMute.native.tsx +91 -0
  120. package/template/src/components/precall/LocalMute.tsx +90 -0
  121. package/template/src/components/precall/VideoPreview.native.tsx +35 -0
  122. package/template/src/components/precall/VideoPreview.tsx +33 -0
  123. package/template/src/components/precall/index.tsx +28 -0
  124. package/template/src/components/precall/joinCallBtn.native.tsx +69 -0
  125. package/template/src/components/precall/joinCallBtn.tsx +91 -0
  126. package/template/src/components/precall/meetingTitle.tsx +26 -0
  127. package/template/src/components/precall/selectDevice.tsx +46 -0
  128. package/template/src/components/precall/textInput.tsx +43 -0
  129. package/template/src/components/precall/usePreCall.tsx +41 -0
  130. package/template/src/components/styles.ts +20 -3
  131. package/template/src/components/useShareLink.tsx +237 -0
  132. package/template/src/components/useUserPreference.tsx +125 -0
  133. package/template/src/components/useWakeLock.tsx +3 -3
  134. package/template/src/custom-events/CustomEvents.ts +238 -0
  135. package/template/src/custom-events/index.tsx +4 -0
  136. package/template/src/custom-events/types.ts +51 -0
  137. package/template/src/language/default-labels/commonLabels.ts +21 -0
  138. package/template/src/language/default-labels/createScreenLabels.ts +22 -0
  139. package/template/src/language/default-labels/index.ts +38 -0
  140. package/template/src/language/default-labels/joinScreenLabels.ts +13 -0
  141. package/template/src/language/default-labels/precallScreenLabels.ts +33 -0
  142. package/template/src/language/default-labels/shareLinkScreenLabels.ts +44 -0
  143. package/template/src/language/default-labels/videoCallScreenLabels.ts +191 -0
  144. package/template/src/language/i18nTypes.ts +10 -0
  145. package/template/src/language/index.ts +18 -0
  146. package/template/src/language/useLanguage.tsx +92 -0
  147. package/template/src/pages/Authenticate.tsx +21 -15
  148. package/template/src/pages/Create.tsx +180 -159
  149. package/template/src/pages/Join.tsx +47 -32
  150. package/template/src/pages/VideoCall.tsx +138 -407
  151. package/template/src/pages/create/useCreate.tsx +37 -0
  152. package/template/src/pages/video-call/CustomLayout.ts +17 -0
  153. package/template/src/pages/video-call/CustomUserContextHolder.tsx +20 -0
  154. package/template/src/pages/video-call/DefaultLayouts.ts +65 -0
  155. package/template/src/pages/video-call/NameWithMicStatus.tsx +62 -0
  156. package/template/src/pages/video-call/RenderComponent.tsx +52 -0
  157. package/template/src/pages/video-call/VideoCallScreen.tsx +191 -0
  158. package/template/src/pages/video-call/VideoComponent.tsx +34 -0
  159. package/template/src/pages/video-call/VideoRenderer.tsx +86 -0
  160. package/template/src/pages/video-call/index.ts +20 -0
  161. package/template/src/rtm/RTMEngine.ts +58 -0
  162. package/template/src/rtm/utils.ts +44 -0
  163. package/template/src/rtm-events/EventUtils.ts +267 -0
  164. package/template/src/rtm-events/EventsQueue.ts +38 -0
  165. package/template/src/rtm-events/constants.ts +42 -0
  166. package/template/src/rtm-events/index.tsx +8 -0
  167. package/template/src/rtm-events/types.ts +7 -0
  168. package/template/src/subComponents/ChatBubble.tsx +21 -12
  169. package/template/src/subComponents/ChatContainer.tsx +79 -30
  170. package/template/src/subComponents/ChatInput.tsx +146 -70
  171. package/template/src/subComponents/CopyJoinInfo.tsx +52 -67
  172. package/template/src/subComponents/Error.tsx +35 -24
  173. package/template/src/subComponents/LanguageSelector.tsx +85 -0
  174. package/template/src/subComponents/LayoutIconDropdown.native.tsx +163 -0
  175. package/template/src/subComponents/LayoutIconDropdown.tsx +198 -0
  176. package/template/src/subComponents/LocalAudioMute.tsx +52 -30
  177. package/template/src/subComponents/LocalEndCall.tsx +52 -0
  178. package/template/src/subComponents/LocalSwitchCamera.tsx +61 -0
  179. package/template/src/subComponents/LocalVideoMute.tsx +48 -30
  180. package/template/src/subComponents/LogoutButton.tsx +20 -5
  181. package/template/src/subComponents/NetworkQualityPill.tsx +43 -13
  182. package/template/src/subComponents/OpenInNativeButton.tsx +3 -2
  183. package/template/src/subComponents/Recording.tsx +46 -138
  184. package/template/src/subComponents/RemoteAudioMute.tsx +30 -34
  185. package/template/src/subComponents/RemoteEndCall.tsx +18 -7
  186. package/template/src/subComponents/RemoteVideoMute.tsx +17 -9
  187. package/template/src/subComponents/ScreenShareNotice.tsx +40 -40
  188. package/template/src/subComponents/SelectDevice.tsx +88 -45
  189. package/template/src/subComponents/SelectOAuth.tsx +30 -6
  190. package/template/src/subComponents/SidePanelButtons.ts +39 -0
  191. package/template/src/subComponents/TextWithTooltip.native.tsx +2 -1
  192. package/template/src/subComponents/TextWithTooltip.tsx +15 -20
  193. package/template/src/subComponents/chat/ChatParticipants.tsx +31 -32
  194. package/template/src/subComponents/livestream/ApprovedLiveStreamControlsView.tsx +7 -3
  195. package/template/src/subComponents/livestream/CurrentLiveStreamRequestsView.tsx +32 -18
  196. package/template/src/subComponents/livestream/controls/LocalRaiseHand.tsx +22 -8
  197. package/template/src/subComponents/livestream/controls/RemoteLiveStreamApprovedRequestRecall.tsx +12 -7
  198. package/template/src/subComponents/livestream/controls/RemoteLiveStreamRequestApprove.tsx +24 -27
  199. package/template/src/subComponents/livestream/controls/RemoteLiveStreamRequestReject.tsx +23 -26
  200. package/template/src/subComponents/livestream/index.ts +10 -2
  201. package/template/src/subComponents/recording/useRecording.tsx +209 -0
  202. package/template/src/subComponents/recording/useRecordingLayoutQuery.tsx +64 -0
  203. package/template/src/subComponents/screenshare/ScreenshareButton.native.tsx +18 -0
  204. package/template/src/subComponents/screenshare/ScreenshareButton.tsx +61 -31
  205. package/template/src/subComponents/screenshare/ScreenshareConfigure.native.tsx +57 -52
  206. package/template/src/subComponents/screenshare/ScreenshareConfigure.tsx +104 -144
  207. package/template/src/subComponents/screenshare/useScreenshare.tsx +29 -0
  208. package/template/src/subComponents/toastConfig.tsx +25 -20
  209. package/template/src/utils/IsAttendeeUser.ts +34 -0
  210. package/template/src/utils/SdkEvents.ts +68 -0
  211. package/template/src/utils/common.tsx +40 -0
  212. package/template/src/utils/eventEmitter.ts +29 -0
  213. package/template/src/utils/getMeetingInvite.ts +53 -0
  214. package/template/src/utils/index.tsx +11 -2
  215. package/template/src/utils/isAudioEnabled.ts +29 -0
  216. package/template/src/utils/isHostUser.ts +33 -0
  217. package/template/src/utils/isMobileOrTablet.native.ts +5 -0
  218. package/template/src/utils/{mobileWebTest.tsx → isMobileOrTablet.ts} +5 -2
  219. package/template/src/utils/isPSTNUser.ts +30 -0
  220. package/template/src/utils/isSDK.sdk.ts +5 -0
  221. package/template/src/utils/isSDK.ts +5 -0
  222. package/template/src/utils/isScreenShareUser.ts +31 -0
  223. package/template/src/utils/isVideoEnabled.ts +29 -0
  224. package/template/src/utils/useButtonTemplate.tsx +43 -0
  225. package/template/src/utils/useCreateMeeting.ts +74 -0
  226. package/template/src/utils/useGetLiveStreamingRequests.ts +24 -0
  227. package/template/src/utils/useGetMeetingPhrase.ts +68 -0
  228. package/template/src/utils/useGetName.ts +19 -0
  229. package/template/src/{subComponents/screenshare/ScreenshareContext.tsx → utils/useGroupMessages.ts} +10 -7
  230. package/template/src/utils/useJoinMeeting.ts +128 -0
  231. package/template/src/utils/useLayout.tsx +40 -0
  232. package/template/src/utils/useLiveStreamingUids.ts +26 -0
  233. package/template/src/utils/useLocalShareScreenUid.ts +19 -0
  234. package/template/src/utils/useMutePSTN.ts +43 -0
  235. package/template/src/utils/useMuteToggleLocal.ts +109 -0
  236. package/template/src/utils/useNavParams.ts +6 -0
  237. package/template/src/utils/useNavigateTo.ts +8 -0
  238. package/template/src/utils/usePrivateMessages.ts +33 -0
  239. package/template/src/utils/useRemoteEndCall.ts +27 -0
  240. package/template/src/utils/useRemoteMute.ts +64 -0
  241. package/template/src/utils/useSendControlMessage.ts +51 -0
  242. package/template/src/utils/useSendMessage.ts +40 -0
  243. package/template/src/utils/useSetName.ts +18 -0
  244. package/template/src/utils/useSetUnreadMessageCount.ts +43 -0
  245. package/template/src/utils/useSidePanel.tsx +41 -0
  246. package/template/src/utils/useString.ts +61 -0
  247. package/template/src/utils/useUnreadMessageCount.ts +50 -0
  248. package/template/src/utils/useUserList.ts +26 -0
  249. package/template/tsconfig.json +4 -4
  250. package/template/tsconfig_fpeApi.json +103 -0
  251. package/template/tsconfig_rsdk_index.json +105 -0
  252. package/template/tsconfig_wsdk_index.json +104 -0
  253. package/template/webpack.commons.js +40 -16
  254. package/template/webpack.main.config.js +2 -1
  255. package/template/webpack.renderer.config.js +1 -1
  256. package/template/webpack.rsdk.config.js +33 -0
  257. package/template/webpack.ts.config.js +89 -0
  258. package/template/webpack.web.config.js +8 -1
  259. package/template/webpack.wsdk.config.js +34 -0
  260. package/template/agora-rn-uikit/.git/HEAD +0 -1
  261. package/template/agora-rn-uikit/.git/config +0 -16
  262. package/template/agora-rn-uikit/.git/description +0 -1
  263. package/template/agora-rn-uikit/.git/hooks/applypatch-msg.sample +0 -15
  264. package/template/agora-rn-uikit/.git/hooks/commit-msg.sample +0 -24
  265. package/template/agora-rn-uikit/.git/hooks/fsmonitor-watchman.sample +0 -173
  266. package/template/agora-rn-uikit/.git/hooks/post-update.sample +0 -8
  267. package/template/agora-rn-uikit/.git/hooks/pre-applypatch.sample +0 -14
  268. package/template/agora-rn-uikit/.git/hooks/pre-commit.sample +0 -49
  269. package/template/agora-rn-uikit/.git/hooks/pre-merge-commit.sample +0 -13
  270. package/template/agora-rn-uikit/.git/hooks/pre-push.sample +0 -53
  271. package/template/agora-rn-uikit/.git/hooks/pre-rebase.sample +0 -169
  272. package/template/agora-rn-uikit/.git/hooks/pre-receive.sample +0 -24
  273. package/template/agora-rn-uikit/.git/hooks/prepare-commit-msg.sample +0 -42
  274. package/template/agora-rn-uikit/.git/hooks/push-to-checkout.sample +0 -78
  275. package/template/agora-rn-uikit/.git/hooks/update.sample +0 -128
  276. package/template/agora-rn-uikit/.git/index +0 -0
  277. package/template/agora-rn-uikit/.git/info/exclude +0 -6
  278. package/template/agora-rn-uikit/.git/logs/HEAD +0 -2
  279. package/template/agora-rn-uikit/.git/logs/refs/heads/ab-dev-auto +0 -1
  280. package/template/agora-rn-uikit/.git/logs/refs/heads/master +0 -1
  281. package/template/agora-rn-uikit/.git/logs/refs/remotes/origin/HEAD +0 -1
  282. package/template/agora-rn-uikit/.git/objects/pack/pack-0061d00cd98162a329a32b537488a35d0abeb069.idx +0 -0
  283. package/template/agora-rn-uikit/.git/objects/pack/pack-0061d00cd98162a329a32b537488a35d0abeb069.pack +0 -0
  284. package/template/agora-rn-uikit/.git/packed-refs +0 -24
  285. package/template/agora-rn-uikit/.git/refs/heads/ab-dev-auto +0 -1
  286. package/template/agora-rn-uikit/.git/refs/heads/master +0 -1
  287. package/template/agora-rn-uikit/.git/refs/remotes/origin/HEAD +0 -1
  288. package/template/agora-rn-uikit/.gitignore +0 -63
  289. package/template/agora-rn-uikit/package-lock.json +0 -7612
  290. package/template/agora-rn-uikit/src/Contexts/MaxUidContext.tsx +0 -7
  291. package/template/agora-rn-uikit/src/Contexts/MinUidContext.tsx +0 -8
  292. package/template/package-lock.json +0 -22923
  293. package/template/react-native-toast-message/.gitignore +0 -5
  294. package/template/react-native-toast-message/.npmignore +0 -5
  295. package/template/react-native-toast-message/package-lock.json +0 -10553
  296. package/template/src/.DS_Store +0 -0
  297. package/template/src/components/participants/context/ParticipantContext.tsx +0 -97
  298. package/template/src/subComponents/.DS_Store +0 -0
  299. package/template/src/subComponents/ScreenshareButton.tsx +0 -257
  300. package/template/src/subComponents/SwitchCamera.tsx +0 -35
  301. package/template/src/utils/hasBrandLogo.tsx +0 -3
  302. package/template/src/utils/mobileWebTest.native.tsx +0 -5
  303. package/template/src/utils/shouldAuthenticate.tsx +0 -7
@@ -0,0 +1,22 @@
1
+ import {I18nBaseType, I18nConditionalType} from '../i18nTypes';
2
+
3
+ export interface I18nCreateScreenLabelsInterface {
4
+ meetingNameInputPlaceholder?: I18nBaseType; //
5
+ //commented for v1 release
6
+ // createMeetingButton?: I18nBaseType; //
7
+ // haveMeetingID?: I18nBaseType;
8
+ // pstnToggle?: I18nConditionalType; //
9
+ // hostControlsToggle?: I18nConditionalType; //
10
+ }
11
+
12
+ export const CreateScreenLabels: I18nCreateScreenLabelsInterface = {
13
+ meetingNameInputPlaceholder: 'Name your Meeting',
14
+ //commented for v1 release
15
+ // createMeetingButton: 'Create Meeting',
16
+ // haveMeetingID: 'Have a Meeting ID?',
17
+ // pstnToggle: 'Use PSTN (Join by dialing a number)',
18
+ // hostControlsToggle: (toggle) =>
19
+ // toggle
20
+ // ? 'Restrict Host Controls (Separate host link)'
21
+ // : 'Restrict Host Controls (Everyone is a Host)',
22
+ };
@@ -0,0 +1,38 @@
1
+ import {CommonLabels, I18nCommonLabelsInterface} from './commonLabels';
2
+ import {
3
+ CreateScreenLabels,
4
+ I18nCreateScreenLabelsInterface,
5
+ } from './createScreenLabels';
6
+ import {
7
+ JoinScreenLabels,
8
+ I18nJoinScreenLabelsInterface,
9
+ } from './joinScreenLabels';
10
+ import {
11
+ ShareLinkScreenLabels,
12
+ I18nShareLinkScreenLabelsInterface,
13
+ } from './shareLinkScreenLabels';
14
+ import {
15
+ VideoCallScreenLabels,
16
+ I18nVideoCallScreenLabelsInterface,
17
+ } from './videoCallScreenLabels';
18
+ import {
19
+ PrecallScreenLabels,
20
+ I18nPrecallScreenLabelsInterface,
21
+ } from './precallScreenLabels';
22
+
23
+ export interface TextDataInterface
24
+ extends I18nCommonLabelsInterface,
25
+ I18nCreateScreenLabelsInterface,
26
+ I18nJoinScreenLabelsInterface,
27
+ I18nShareLinkScreenLabelsInterface,
28
+ I18nVideoCallScreenLabelsInterface,
29
+ I18nPrecallScreenLabelsInterface {}
30
+
31
+ export const DEFAULT_LABELS: TextDataInterface = {
32
+ ...CommonLabels,
33
+ ...CreateScreenLabels,
34
+ ...JoinScreenLabels,
35
+ ...ShareLinkScreenLabels,
36
+ ...PrecallScreenLabels,
37
+ ...VideoCallScreenLabels,
38
+ };
@@ -0,0 +1,13 @@
1
+ import {I18nBaseType} from '../i18nTypes';
2
+
3
+ export interface I18nJoinScreenLabelsInterface {
4
+ //commented for v1 release
5
+ // meetingIdInputPlaceholder?: I18nBaseType; //
6
+ // enterMeetingButton?: I18nBaseType; //
7
+ }
8
+
9
+ export const JoinScreenLabels: I18nJoinScreenLabelsInterface = {
10
+ //commented for v1 release
11
+ // meetingIdInputPlaceholder: 'Enter Meeting ID',
12
+ // enterMeetingButton: 'Enter Meeting',
13
+ };
@@ -0,0 +1,33 @@
1
+ import {ClientRole} from '../../../agora-rn-uikit';
2
+ import {I18nBaseType} from '../i18nTypes';
3
+
4
+ export interface JoinRoomButtonTextInterface {
5
+ ready: boolean;
6
+ role?: ClientRole;
7
+ }
8
+ export interface I18nPrecallScreenLabelsInterface {
9
+ //commented for v1 release
10
+ // precallLabel?: I18nBaseType; //
11
+ // selectInputDeviceLabel?: I18nBaseType; //
12
+ // userNamePlaceholder?: I18nBaseType; //
13
+ // fetchingNamePlaceholder?: I18nBaseType; //
14
+ // loadingWithDots?: I18nBaseType;
15
+ joinRoomButton?: I18nBaseType<JoinRoomButtonTextInterface>; // need to check
16
+ }
17
+
18
+ export const PrecallScreenLabels: I18nPrecallScreenLabelsInterface = {
19
+ //commented for v1 release
20
+ // precallLabel: 'Precall',
21
+ // selectInputDeviceLabel: 'Select Input Device',
22
+ // userNamePlaceholder: 'Display name*',
23
+ // fetchingNamePlaceholder: 'Getting name...',
24
+ // loadingWithDots: 'Loading...',
25
+ joinRoomButton: ({ready, role}) =>
26
+ ready
27
+ ? !role
28
+ ? 'Join Room'
29
+ : `Join Room as ${
30
+ role === ClientRole.Broadcaster ? 'Host' : 'Audience'
31
+ }`
32
+ : `Loading...`,
33
+ };
@@ -0,0 +1,44 @@
1
+ import {I18nBaseType} from '../i18nTypes';
2
+
3
+ export interface I18nShareLinkScreenLabelsInterface {
4
+ //commented for v1 release
5
+ // attendeeUrlLabel?: I18nBaseType; //
6
+ // hostUrlLabel?: I18nBaseType; //
7
+ // enterMeetingAfterCreateButton?: I18nBaseType; //
8
+ // copyInviteButton?: I18nBaseType; //
9
+ // pstnLabel?: I18nBaseType; //
10
+ // pstnNumberLabel?: I18nBaseType; //
11
+ // meetingUrlLabel?: I18nBaseType; //
12
+ // hostIdLabel?: I18nBaseType; //
13
+ // meetingIdLabel?: I18nBaseType; //
14
+ // attendeeIdLabel?: I18nBaseType; //
15
+ // copiedToClipboardNotificationLabel?: I18nBaseType; //
16
+ // PSTNNumber?: I18nBaseType;
17
+ // PSTNPin?: I18nBaseType;
18
+ // meeting?: I18nBaseType;
19
+ // URLForAttendee?: I18nBaseType;
20
+ // URLForHost?: I18nBaseType;
21
+ // attendeeMeetingID?: I18nBaseType;
22
+ // hostMeetingID?: I18nBaseType;
23
+ }
24
+
25
+ export const ShareLinkScreenLabels: I18nShareLinkScreenLabelsInterface = {
26
+ //commented for v1 release
27
+ // attendeeUrlLabel: 'Attendee URL',
28
+ // hostUrlLabel: 'Host URL',
29
+ // enterMeetingAfterCreateButton: 'Start Meeting (as host)',
30
+ // copyInviteButton: 'Copy invite to clipboard',
31
+ // pstnLabel: 'PSTN',
32
+ // pstnNumberLabel: 'Number',
33
+ // meetingUrlLabel: 'Meeting URL',
34
+ // hostIdLabel: 'Host ID',
35
+ // meetingIdLabel: 'Meeting ID',
36
+ // attendeeIdLabel: 'Attendee ID',
37
+ // copiedToClipboardNotificationLabel: 'Copied to Clipboard',
38
+ // PSTNNumber: 'PSTN Number',
39
+ // PSTNPin: 'PSTN Pin',
40
+ // URLForAttendee: 'URL for Attendee',
41
+ // URLForHost: 'URL for Host',
42
+ // attendeeMeetingID: 'Attendee Meeting ID',
43
+ // hostMeetingID: 'Host Meeting ID',
44
+ };
@@ -0,0 +1,191 @@
1
+ import {I18nBaseType, I18nConditionalType, I18nDynamicType} from '../i18nTypes';
2
+ interface NetworkQualityStatusInterface {
3
+ unknown?: 'Unknown';
4
+ excellent?: 'Excellent';
5
+ good?: 'Good';
6
+ bad?: 'Bad';
7
+ veryBad?: 'Very Bad';
8
+ unpublished?: 'Unpublished';
9
+ loading?: 'Loading';
10
+ }
11
+ export type NetworkQualities = keyof NetworkQualityStatusInterface;
12
+ export interface MeetingInviteInterface {
13
+ isHost: boolean;
14
+ isSeparateHostLink: boolean;
15
+ meetingName?: string;
16
+ pstn?: {
17
+ number: string;
18
+ pin: string;
19
+ };
20
+ url?: {
21
+ host?: string;
22
+ attendee?: string;
23
+ };
24
+ id?: {
25
+ host?: string;
26
+ attendee?: string;
27
+ };
28
+ }
29
+ export interface I18nVideoCallScreenLabelsInterface {
30
+ //commented for v1 release
31
+ // toggleVideoButton?: I18nBaseType; //
32
+ // toggleAudioButton?: I18nBaseType; //
33
+ // screenShareButton?: I18nBaseType; //
34
+ // recordingNotificationLabel?: I18nConditionalType;
35
+ // endCallButton?: I18nBaseType; //
36
+ // participantsLabel?: I18nBaseType; //
37
+ // groupChatLabel?: I18nBaseType; //
38
+ // privateChatLabel?: I18nBaseType; //
39
+ // chatMessageInputPlaceholder?: I18nBaseType; //
40
+ // hostControlsLabel?: I18nBaseType; //
41
+ // muteAllVideoButton?: I18nBaseType; //
42
+ // muteAllAudioButton?: I18nBaseType; //
43
+ // switchCameraButton?: I18nBaseType; //
44
+ // localScreenshareDefaultLabel?: I18nBaseType; //
45
+ // localUserDefaultLabel?: I18nBaseType; //
46
+ // remoteUserDefaultLabel?: I18nBaseType; //
47
+ pstnUserLabel?: I18nBaseType; //
48
+ // commented for v1 release
49
+ // authenticationSuccessLabel?: I18nBaseType; //
50
+ // meetingCreatedNotificationLabel?: I18nBaseType; //
51
+ // joiningLoaderLabel?: I18nBaseType; //
52
+ // oauthLoginLabel?: I18nBaseType; //
53
+ // oauthProviderLabel?: I18nBaseType; //
54
+ // copyMeetingInviteButton?: I18nBaseType; //
55
+ // pin?: I18nBaseType;
56
+ // language?: I18nBaseType;
57
+ // screensharingActiveOverlayLabel?: I18nBaseType; //
58
+ // recordingButton?: I18nConditionalType; //
59
+ // screenshareUserName?: I18nDynamicType; //
60
+ // messageSenderNotificationLabel?: I18nDynamicType; //
61
+ // networkQualityLabel?: I18nBaseType<NetworkQualities>; //
62
+ // meetingInviteText?: I18nBaseType<MeetingInviteInterface>; //
63
+ // participantListPlaceholder?: I18nBaseType; //
64
+ // raisedHandsListPlaceholder?: I18nBaseType; //
65
+ // raisedHandsListTitleLabel?: I18nBaseType; //
66
+ // hostLabel?: I18nBaseType; //
67
+ // audienceLabel?: I18nBaseType; //
68
+ // raiseHandButton?: I18nConditionalType; //
69
+ // noUserFoundLabel?: I18nBaseType;
70
+ // userOfflineLabel?: I18nBaseType;
71
+ // raiseHandLocalNotification?: I18nBaseType; //
72
+ // raiseHandRemoteHostNotification?: I18nConditionalType; //
73
+ // raiseHandApprovedLocalNotification?: I18nBaseType; //
74
+ // raiseHandRejectedLocalNotification?: I18nBaseType; //
75
+ // lowerHandRemoteHostNotification?: I18nConditionalType; //
76
+ // lowerHandsLocalNotification?: I18nBaseType; //
77
+ // raiseHandRevokedLocalNotification?: I18nBaseType; //
78
+ // recordingLabel?: I18nBaseType;
79
+ // settingScreenInfoMessage?: I18nBaseType;
80
+ // chatLabel?: I18nBaseType;
81
+ // settingsLabel?: I18nBaseType;
82
+ // layoutLabel?: I18nBaseType;
83
+ }
84
+
85
+ export const VideoCallScreenLabels: I18nVideoCallScreenLabelsInterface = {
86
+ //need to check
87
+ //remoteScreenshareDefaultLabel - User's screenshare
88
+ //commented for v1 release
89
+ // toggleVideoButton: 'Video',
90
+ // toggleAudioButton: 'Audio',
91
+ // screenShareButton: 'Share',
92
+ // switchCameraButton: 'Switch',
93
+ // recordingLabel: 'Recording',
94
+ // recordingNotificationLabel: (active) =>
95
+ // active ? 'Recording Started' : 'Recording Stopped',
96
+ // endCallButton: 'Hang Up',
97
+ // participantsLabel: 'Participants',
98
+ // groupChatLabel: 'Group',
99
+ // privateChatLabel: 'Private',
100
+ // chatMessageInputPlaceholder: 'Type your message..',
101
+ // localScreenshareDefaultLabel: 'Your screenshare',
102
+ // localUserDefaultLabel: 'You',
103
+ // remoteUserDefaultLabel: 'User',
104
+ pstnUserLabel: 'PSTN User',
105
+ //commented for v1 release
106
+ // authenticationSuccessLabel: 'Authenticated Successfully!',
107
+ // meetingCreatedNotificationLabel: 'Created',
108
+ // joiningLoaderLabel: 'Starting Call. Just a second.',
109
+ // oauthLoginLabel: 'Login using OAuth',
110
+ // oauthProviderLabel: 'Please select an OAuth provider to login.',
111
+ // copyMeetingInviteButton: 'Copy Meeting Invite',
112
+ // pin: 'Pin',
113
+ // language: 'Language',
114
+ // hostControlsLabel: 'Host Controls',
115
+ // muteAllAudioButton: 'Mute all audios',
116
+ // muteAllVideoButton: 'Mute all videos',
117
+ // screensharingActiveOverlayLabel: 'Your screen share is active.',
118
+ // participantListPlaceholder: 'No one has joined yet',
119
+ // raisedHandsListPlaceholder: 'No streaming request(s)',
120
+ // raisedHandsListTitleLabel: 'Streaming Request',
121
+ // hostLabel: 'Host',
122
+ // audienceLabel: 'Audience',
123
+ // noUserFoundLabel: 'User not found',
124
+ // userOfflineLabel: 'User is offline',
125
+ // chatLabel: 'Chat',
126
+ // settingsLabel: 'Settings',
127
+ // layoutLabel: 'Layouts',
128
+ // raiseHandLocalNotification:
129
+ // 'You have raised your hand. Request sent to host for approval',
130
+ // raiseHandRemoteHostNotification: (name) => `${name} has raised their hand`,
131
+ // raiseHandApprovedLocalNotification:
132
+ // 'Your request was approved, unmute to start talking',
133
+ // raiseHandRejectedLocalNotification: 'Your request was rejected by the host',
134
+ // lowerHandRemoteHostNotification: (name) => `${name} has lowered their hand`,
135
+ // lowerHandsLocalNotification: 'You have lowered your hand',
136
+ // raiseHandRevokedLocalNotification:
137
+ // 'The host has revoked streaming permissions',
138
+ // settingScreenInfoMessage:
139
+ // 'Video and Audio sharing is disabled for attendees. Raise hand to request permission to share.',
140
+ // screenshareUserName: (name) => `${name}'s screenshare`, //
141
+ // recordingButton: (recording) => (recording ? 'Recording' : 'Record'),
142
+ // raiseHandButton: (toggle) => (toggle ? 'Lower hand' : 'Raise Hand'),
143
+ // messageSenderNotificationLabel: (name) => `From : ${name}`,
144
+ // networkQualityLabel: (quality) => {
145
+ // switch (quality) {
146
+ // case 'unknown':
147
+ // return 'Unknown';
148
+ // case 'excellent':
149
+ // return 'Excellent';
150
+ // case 'good':
151
+ // return 'Good';
152
+ // case 'bad':
153
+ // return 'Bad';
154
+ // case 'veryBad':
155
+ // return 'Very Bad';
156
+ // case 'unpublished':
157
+ // return 'Unpublished';
158
+ // case 'loading':
159
+ // return 'Loading';
160
+ // default:
161
+ // return 'Loading';
162
+ // }
163
+ // },
164
+ // meetingInviteText: ({meetingName, id, url, pstn}) => {
165
+ // let inviteContent = '';
166
+ // if (url) {
167
+ // // if host data is present generate links for both host and attendee
168
+ // if (url?.host) {
169
+ // inviteContent += `Meeting - ${meetingName}\nURL for Attendee: ${url?.attendee}\nURL for Host: ${url?.host}`;
170
+ // }
171
+ // // if host data is not present then generate link for attendee alone
172
+ // else {
173
+ // inviteContent += `Meeting - ${meetingName}\nMeeting URL: ${url?.attendee}`;
174
+ // }
175
+ // } else {
176
+ // // if host data is present generate meeting ID for both host and attendee
177
+ // if (id?.host) {
178
+ // inviteContent += `Meeting - ${meetingName}\nAttendee Meeting ID: ${id?.attendee}\nHost Meeting ID: ${id?.host}`;
179
+ // }
180
+ // // if host data is not present then generate meeting ID for attendee alone
181
+ // else {
182
+ // inviteContent += `Meeting - ${meetingName}\nMeeting ID: ${id?.attendee}`;
183
+ // }
184
+ // }
185
+ // // Adding pstn data into meeting data if present
186
+ // if (pstn?.number && pstn?.pin) {
187
+ // inviteContent += `\nPSTN Number: ${pstn.number}\nPSTN Pin: ${pstn.pin}`;
188
+ // }
189
+ // return inviteContent;
190
+ // },
191
+ };
@@ -0,0 +1,10 @@
1
+ import {TextDataInterface} from './default-labels/index';
2
+
3
+ export type I18nBaseType<T = any> = string | ((template: T) => string);
4
+ export type I18nDynamicType = I18nBaseType<string>;
5
+ export type I18nConditionalType = I18nBaseType<boolean>;
6
+ export interface i18nInterface {
7
+ locale: string;
8
+ label?: string;
9
+ data: TextDataInterface;
10
+ }
@@ -0,0 +1,18 @@
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 {i18nInterface} from './i18nTypes';
13
+ import {DEFAULT_LABELS} from './default-labels/index';
14
+ export const DEFAULT_I18_DATA: i18nInterface = {
15
+ label: 'English US',
16
+ locale: 'en-us',
17
+ data: DEFAULT_LABELS,
18
+ };
@@ -0,0 +1,92 @@
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, {createContext, useContext, useEffect, useState} from 'react';
13
+ import {createHook} from 'fpe-implementation';
14
+ import {useFpe} from 'fpe-api';
15
+ import {DEFAULT_I18_DATA} from './index';
16
+ import StorageContext from '../components/StorageContext';
17
+
18
+ export interface LanguageContextInterface {
19
+ languageCode: string;
20
+ setLanguageCode: (code: string) => void;
21
+ }
22
+
23
+ export interface LanguagePropsInterface {
24
+ children: React.ReactNode;
25
+ }
26
+
27
+ const LanguageContext = createContext<LanguageContextInterface>({
28
+ languageCode: DEFAULT_I18_DATA.locale,
29
+ setLanguageCode: () => {},
30
+ });
31
+
32
+ const LanguageProvider = (props: LanguagePropsInterface) => {
33
+ const {store, setStore} = useContext(StorageContext);
34
+ const i18nData = useFpe((data) => data?.i18n);
35
+
36
+ //If language code is stored in the localstorage no longer available in fpe data
37
+ //then we will update the localstorage value to default value
38
+ let storedCode =
39
+ i18nData && Array.isArray(i18nData) && i18nData.length
40
+ ? i18nData?.find((item) => item.locale === store.selectedLanguageCode)
41
+ ? store.selectedLanguageCode
42
+ : undefined
43
+ : undefined;
44
+
45
+ const [languageCode, setLanguageCodeLocal] = useState(
46
+ storedCode ||
47
+ (i18nData && Array.isArray(i18nData) && i18nData.length
48
+ ? i18nData[0].locale
49
+ : false) ||
50
+ DEFAULT_I18_DATA.locale,
51
+ );
52
+
53
+ useEffect(() => {
54
+ if (setStore) {
55
+ setStore((prevState) => {
56
+ return {
57
+ ...prevState,
58
+ selectedLanguageCode: languageCode,
59
+ };
60
+ });
61
+ }
62
+ }, [languageCode]);
63
+
64
+ useEffect(() => {
65
+ let storedCode =
66
+ i18nData && Array.isArray(i18nData) && i18nData.length
67
+ ? i18nData?.find((item) => item.locale === store.selectedLanguageCode)
68
+ ? store.selectedLanguageCode
69
+ : undefined
70
+ : undefined;
71
+ setLanguageCodeLocal(
72
+ storedCode ||
73
+ (i18nData && Array.isArray(i18nData) && i18nData.length
74
+ ? i18nData[0].locale
75
+ : false) ||
76
+ DEFAULT_I18_DATA.locale,
77
+ );
78
+ }, [i18nData]);
79
+
80
+ const setLanguageCode = (langCode: string) => {
81
+ setLanguageCodeLocal(langCode);
82
+ };
83
+
84
+ return (
85
+ <LanguageContext.Provider value={{languageCode, setLanguageCode}}>
86
+ {props.children}
87
+ </LanguageContext.Provider>
88
+ );
89
+ };
90
+ const useLanguage = createHook(LanguageContext);
91
+
92
+ export {LanguageProvider, useLanguage};
@@ -9,28 +9,36 @@
9
9
  information visit https://appbuilder.agora.io.
10
10
  *********************************************
11
11
  */
12
- import React, {useState} from 'react';
12
+ import React, {useContext, useState} from 'react';
13
13
  import {
14
14
  View,
15
15
  Text,
16
16
  ImageBackground,
17
17
  StyleSheet,
18
- Dimensions,
18
+ LayoutChangeEvent,
19
19
  } from 'react-native';
20
20
  import Logo from '../subComponents/Logo';
21
21
  import OAuth from '../components/OAuth';
22
22
  import Illustration from '../subComponents/Illustration';
23
- import hasBrandLogo from '../utils/hasBrandLogo';
23
+ import {hasBrandLogo} from '../utils/common';
24
+ import DimensionContext from '../components/dimension/DimensionContext';
25
+ import {useString} from '../utils/useString';
24
26
 
25
27
  const Authenticate = () => {
26
- const [dim, setDim] = useState([
27
- Dimensions.get('window').width,
28
- Dimensions.get('window').height,
29
- Dimensions.get('window').width > Dimensions.get('window').height,
30
- ]);
31
- let onLayout = (e: any) => {
32
- setDim([e.nativeEvent.layout.width, e.nativeEvent.layout.height]);
28
+ const {getDimensionData} = useContext(DimensionContext);
29
+ const [isDesktop, setIsDesktop] = useState(false);
30
+ let onLayout = (e: LayoutChangeEvent) => {
31
+ const {isDesktop} = getDimensionData(
32
+ e.nativeEvent.layout.width,
33
+ e.nativeEvent.layout.height,
34
+ );
35
+ setIsDesktop(isDesktop);
33
36
  };
37
+ //commented for v1 release
38
+ // const oauthLoginLabel = useString('oauthLoginLabel')();
39
+ // const oauthProviderLabel = useString('oauthProviderLabel')();
40
+ const oauthLoginLabel = 'Login using OAuth';
41
+ const oauthProviderLabel = 'Please select an OAuth provider to login.';
34
42
  return (
35
43
  <ImageBackground
36
44
  onLayout={onLayout}
@@ -41,13 +49,11 @@ const Authenticate = () => {
41
49
  <View style={style.nav}>{hasBrandLogo && <Logo />}</View>
42
50
  <View style={style.content}>
43
51
  <View style={style.leftContent}>
44
- <Text style={style.heading}>Login using OAuth</Text>
45
- <Text style={style.headline}>
46
- Please select an OAuth provider to login.
47
- </Text>
52
+ <Text style={style.heading}>{oauthLoginLabel}</Text>
53
+ <Text style={style.headline}>{oauthProviderLabel}</Text>
48
54
  <OAuth />
49
55
  </View>
50
- {dim[0] > dim[1] + 150 ? (
56
+ {isDesktop ? (
51
57
  <View style={style.full}>
52
58
  <Illustration />
53
59
  </View>