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

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 (301) 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 +32186 -3078
  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 +14 -2
  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 +226 -0
  47. package/template/{src/subComponents/LayoutEnum.tsx → esbuildConfigTransform.js} +1 -5
  48. package/template/fpe-api/components.ts +42 -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 +128 -0
  53. package/template/fpe-api/typeDefinition.ts +143 -0
  54. package/template/fpe-api/useFpe.tsx +35 -0
  55. package/template/fpe-api/utils.ts +62 -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 +28 -12
  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 +171 -139
  73. package/template/src/components/ChatContext.ts +14 -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 +328 -416
  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 +293 -272
  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 +239 -0
  132. package/template/src/components/useWakeLock.tsx +3 -3
  133. package/template/src/custom-events/CustomEvents.ts +221 -0
  134. package/template/src/custom-events/index.tsx +4 -0
  135. package/template/src/custom-events/types.ts +51 -0
  136. package/template/src/language/default-labels/commonLabels.ts +21 -0
  137. package/template/src/language/default-labels/createScreenLabels.ts +22 -0
  138. package/template/src/language/default-labels/index.ts +38 -0
  139. package/template/src/language/default-labels/joinScreenLabels.ts +13 -0
  140. package/template/src/language/default-labels/precallScreenLabels.ts +33 -0
  141. package/template/src/language/default-labels/shareLinkScreenLabels.ts +44 -0
  142. package/template/src/language/default-labels/videoCallScreenLabels.ts +189 -0
  143. package/template/src/language/i18nTypes.ts +10 -0
  144. package/template/src/language/index.ts +18 -0
  145. package/template/src/language/useLanguage.tsx +92 -0
  146. package/template/src/pages/Authenticate.tsx +21 -15
  147. package/template/src/pages/Create.tsx +176 -159
  148. package/template/src/pages/Join.tsx +44 -32
  149. package/template/src/pages/VideoCall.tsx +134 -406
  150. package/template/src/pages/create/useCreate.tsx +37 -0
  151. package/template/src/pages/video-call/CustomLayout.ts +17 -0
  152. package/template/src/pages/video-call/CustomUserContextHolder.tsx +12 -0
  153. package/template/src/pages/video-call/DefaultLayouts.ts +65 -0
  154. package/template/src/pages/video-call/NameWithMicStatus.tsx +62 -0
  155. package/template/src/pages/video-call/RenderComponent.tsx +52 -0
  156. package/template/src/pages/video-call/VideoCallScreen.tsx +191 -0
  157. package/template/src/pages/video-call/VideoComponent.tsx +34 -0
  158. package/template/src/pages/video-call/VideoRenderer.tsx +86 -0
  159. package/template/src/pages/video-call/index.ts +20 -0
  160. package/template/src/rtm/RTMEngine.ts +58 -0
  161. package/template/src/rtm/utils.ts +44 -0
  162. package/template/src/rtm-events/EventUtils.ts +267 -0
  163. package/template/src/rtm-events/EventsQueue.ts +38 -0
  164. package/template/src/rtm-events/constants.ts +40 -0
  165. package/template/src/rtm-events/index.tsx +8 -0
  166. package/template/src/rtm-events/types.ts +7 -0
  167. package/template/src/subComponents/ChatBubble.tsx +18 -11
  168. package/template/src/subComponents/ChatContainer.tsx +79 -30
  169. package/template/src/subComponents/ChatInput.tsx +146 -70
  170. package/template/src/subComponents/CopyJoinInfo.tsx +52 -67
  171. package/template/src/subComponents/Error.tsx +35 -24
  172. package/template/src/subComponents/LanguageSelector.tsx +85 -0
  173. package/template/src/subComponents/LayoutIconDropdown.native.tsx +163 -0
  174. package/template/src/subComponents/LayoutIconDropdown.tsx +198 -0
  175. package/template/src/subComponents/LocalAudioMute.tsx +52 -30
  176. package/template/src/subComponents/LocalEndCall.tsx +52 -0
  177. package/template/src/subComponents/LocalSwitchCamera.tsx +61 -0
  178. package/template/src/subComponents/LocalVideoMute.tsx +48 -30
  179. package/template/src/subComponents/LogoutButton.tsx +20 -5
  180. package/template/src/subComponents/NetworkQualityPill.tsx +43 -13
  181. package/template/src/subComponents/OpenInNativeButton.tsx +3 -2
  182. package/template/src/subComponents/Recording.tsx +46 -138
  183. package/template/src/subComponents/RemoteAudioMute.tsx +30 -34
  184. package/template/src/subComponents/RemoteEndCall.tsx +18 -7
  185. package/template/src/subComponents/RemoteVideoMute.tsx +17 -9
  186. package/template/src/subComponents/ScreenShareNotice.tsx +40 -40
  187. package/template/src/subComponents/SelectDevice.tsx +88 -45
  188. package/template/src/subComponents/SelectOAuth.tsx +30 -6
  189. package/template/src/subComponents/SidePanelButtons.ts +39 -0
  190. package/template/src/subComponents/TextWithTooltip.native.tsx +2 -1
  191. package/template/src/subComponents/TextWithTooltip.tsx +15 -20
  192. package/template/src/subComponents/chat/ChatParticipants.tsx +31 -32
  193. package/template/src/subComponents/livestream/ApprovedLiveStreamControlsView.tsx +7 -3
  194. package/template/src/subComponents/livestream/CurrentLiveStreamRequestsView.tsx +32 -18
  195. package/template/src/subComponents/livestream/controls/LocalRaiseHand.tsx +22 -8
  196. package/template/src/subComponents/livestream/controls/RemoteLiveStreamApprovedRequestRecall.tsx +12 -7
  197. package/template/src/subComponents/livestream/controls/RemoteLiveStreamRequestApprove.tsx +24 -27
  198. package/template/src/subComponents/livestream/controls/RemoteLiveStreamRequestReject.tsx +23 -26
  199. package/template/src/subComponents/livestream/index.ts +10 -2
  200. package/template/src/subComponents/recording/useRecording.tsx +209 -0
  201. package/template/src/subComponents/recording/useRecordingLayoutQuery.tsx +64 -0
  202. package/template/src/subComponents/screenshare/ScreenshareButton.native.tsx +18 -0
  203. package/template/src/subComponents/screenshare/ScreenshareButton.tsx +61 -31
  204. package/template/src/subComponents/screenshare/ScreenshareConfigure.native.tsx +57 -52
  205. package/template/src/subComponents/screenshare/ScreenshareConfigure.tsx +102 -143
  206. package/template/src/subComponents/screenshare/useScreenshare.tsx +29 -0
  207. package/template/src/subComponents/toastConfig.tsx +25 -20
  208. package/template/src/utils/IsAttendeeUser.ts +34 -0
  209. package/template/src/utils/SdkEvents.ts +68 -0
  210. package/template/src/utils/common.tsx +40 -0
  211. package/template/src/utils/eventEmitter.ts +29 -0
  212. package/template/src/utils/getMeetingInvite.ts +30 -0
  213. package/template/src/utils/index.tsx +11 -2
  214. package/template/src/utils/isAudioEnabled.ts +29 -0
  215. package/template/src/utils/isHostUser.ts +33 -0
  216. package/template/src/utils/isMobileOrTablet.native.ts +5 -0
  217. package/template/src/utils/{mobileWebTest.tsx → isMobileOrTablet.ts} +5 -2
  218. package/template/src/utils/isPSTNUser.ts +30 -0
  219. package/template/src/utils/isSDK.sdk.ts +5 -0
  220. package/template/src/utils/isSDK.ts +5 -0
  221. package/template/src/utils/isScreenShareUser.ts +31 -0
  222. package/template/src/utils/isVideoEnabled.ts +29 -0
  223. package/template/src/utils/useButtonTemplate.tsx +43 -0
  224. package/template/src/utils/useCreateMeeting.ts +74 -0
  225. package/template/src/utils/useGetLiveStreamingRequests.ts +24 -0
  226. package/template/src/utils/useGetMeetingPhrase.ts +68 -0
  227. package/template/src/utils/useGetName.ts +20 -0
  228. package/template/src/{subComponents/screenshare/ScreenshareContext.tsx → utils/useGroupMessages.ts} +10 -7
  229. package/template/src/utils/useJoinMeeting.ts +120 -0
  230. package/template/src/utils/useLayout.tsx +40 -0
  231. package/template/src/utils/useLiveStreamingUids.ts +26 -0
  232. package/template/src/utils/useMutePSTN.ts +43 -0
  233. package/template/src/utils/useMuteToggleLocal.ts +109 -0
  234. package/template/src/utils/useNavParams.ts +6 -0
  235. package/template/src/utils/useNavigateTo.ts +8 -0
  236. package/template/src/utils/usePrivateMessages.ts +33 -0
  237. package/template/src/utils/useRemoteEndCall.ts +27 -0
  238. package/template/src/utils/useRemoteMute.ts +64 -0
  239. package/template/src/utils/useSendControlMessage.ts +51 -0
  240. package/template/src/utils/useSendMessage.ts +40 -0
  241. package/template/src/utils/useSetName.ts +20 -0
  242. package/template/src/utils/useSetUnreadMessageCount.ts +43 -0
  243. package/template/src/utils/useSidePanel.tsx +41 -0
  244. package/template/src/utils/useString.ts +61 -0
  245. package/template/src/utils/useUnreadMessageCount.ts +50 -0
  246. package/template/src/utils/useUserList.ts +26 -0
  247. package/template/tsconfig.json +4 -4
  248. package/template/tsconfig_fpeApi.json +103 -0
  249. package/template/tsconfig_rsdk_index.json +105 -0
  250. package/template/tsconfig_wsdk_index.json +104 -0
  251. package/template/webpack.commons.js +40 -16
  252. package/template/webpack.main.config.js +2 -1
  253. package/template/webpack.renderer.config.js +1 -1
  254. package/template/webpack.rsdk.config.js +33 -0
  255. package/template/webpack.ts.config.js +89 -0
  256. package/template/webpack.web.config.js +8 -1
  257. package/template/webpack.wsdk.config.js +34 -0
  258. package/template/agora-rn-uikit/.git/HEAD +0 -1
  259. package/template/agora-rn-uikit/.git/config +0 -16
  260. package/template/agora-rn-uikit/.git/description +0 -1
  261. package/template/agora-rn-uikit/.git/hooks/applypatch-msg.sample +0 -15
  262. package/template/agora-rn-uikit/.git/hooks/commit-msg.sample +0 -24
  263. package/template/agora-rn-uikit/.git/hooks/fsmonitor-watchman.sample +0 -173
  264. package/template/agora-rn-uikit/.git/hooks/post-update.sample +0 -8
  265. package/template/agora-rn-uikit/.git/hooks/pre-applypatch.sample +0 -14
  266. package/template/agora-rn-uikit/.git/hooks/pre-commit.sample +0 -49
  267. package/template/agora-rn-uikit/.git/hooks/pre-merge-commit.sample +0 -13
  268. package/template/agora-rn-uikit/.git/hooks/pre-push.sample +0 -53
  269. package/template/agora-rn-uikit/.git/hooks/pre-rebase.sample +0 -169
  270. package/template/agora-rn-uikit/.git/hooks/pre-receive.sample +0 -24
  271. package/template/agora-rn-uikit/.git/hooks/prepare-commit-msg.sample +0 -42
  272. package/template/agora-rn-uikit/.git/hooks/push-to-checkout.sample +0 -78
  273. package/template/agora-rn-uikit/.git/hooks/update.sample +0 -128
  274. package/template/agora-rn-uikit/.git/index +0 -0
  275. package/template/agora-rn-uikit/.git/info/exclude +0 -6
  276. package/template/agora-rn-uikit/.git/logs/HEAD +0 -2
  277. package/template/agora-rn-uikit/.git/logs/refs/heads/ab-dev-auto +0 -1
  278. package/template/agora-rn-uikit/.git/logs/refs/heads/master +0 -1
  279. package/template/agora-rn-uikit/.git/logs/refs/remotes/origin/HEAD +0 -1
  280. package/template/agora-rn-uikit/.git/objects/pack/pack-0061d00cd98162a329a32b537488a35d0abeb069.idx +0 -0
  281. package/template/agora-rn-uikit/.git/objects/pack/pack-0061d00cd98162a329a32b537488a35d0abeb069.pack +0 -0
  282. package/template/agora-rn-uikit/.git/packed-refs +0 -24
  283. package/template/agora-rn-uikit/.git/refs/heads/ab-dev-auto +0 -1
  284. package/template/agora-rn-uikit/.git/refs/heads/master +0 -1
  285. package/template/agora-rn-uikit/.git/refs/remotes/origin/HEAD +0 -1
  286. package/template/agora-rn-uikit/.gitignore +0 -63
  287. package/template/agora-rn-uikit/package-lock.json +0 -7612
  288. package/template/agora-rn-uikit/src/Contexts/MaxUidContext.tsx +0 -7
  289. package/template/agora-rn-uikit/src/Contexts/MinUidContext.tsx +0 -8
  290. package/template/package-lock.json +0 -22923
  291. package/template/react-native-toast-message/.gitignore +0 -5
  292. package/template/react-native-toast-message/.npmignore +0 -5
  293. package/template/react-native-toast-message/package-lock.json +0 -10553
  294. package/template/src/.DS_Store +0 -0
  295. package/template/src/components/participants/context/ParticipantContext.tsx +0 -97
  296. package/template/src/subComponents/.DS_Store +0 -0
  297. package/template/src/subComponents/ScreenshareButton.tsx +0 -257
  298. package/template/src/subComponents/SwitchCamera.tsx +0 -35
  299. package/template/src/utils/hasBrandLogo.tsx +0 -3
  300. package/template/src/utils/mobileWebTest.native.tsx +0 -5
  301. package/template/src/utils/shouldAuthenticate.tsx +0 -7
@@ -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,189 @@
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
+ meetingName?: string;
14
+ pstn?: {
15
+ number: string;
16
+ pin: string;
17
+ };
18
+ url?: {
19
+ host?: string;
20
+ attendee: string;
21
+ };
22
+ id?: {
23
+ host?: string;
24
+ attendee: string;
25
+ };
26
+ }
27
+ export interface I18nVideoCallScreenLabelsInterface {
28
+ //commented for v1 release
29
+ // toggleVideoButton?: I18nBaseType; //
30
+ // toggleAudioButton?: I18nBaseType; //
31
+ // screenShareButton?: I18nBaseType; //
32
+ // recordingNotificationLabel?: I18nConditionalType;
33
+ // endCallButton?: I18nBaseType; //
34
+ // participantsLabel?: I18nBaseType; //
35
+ // groupChatLabel?: I18nBaseType; //
36
+ // privateChatLabel?: I18nBaseType; //
37
+ // chatMessageInputPlaceholder?: I18nBaseType; //
38
+ // hostControlsLabel?: I18nBaseType; //
39
+ // muteAllVideoButton?: I18nBaseType; //
40
+ // muteAllAudioButton?: I18nBaseType; //
41
+ // switchCameraButton?: I18nBaseType; //
42
+ // localScreenshareDefaultLabel?: I18nBaseType; //
43
+ // localUserDefaultLabel?: I18nBaseType; //
44
+ // remoteUserDefaultLabel?: I18nBaseType; //
45
+ pstnUserLabel?: I18nBaseType; //
46
+ // commented for v1 release
47
+ // authenticationSuccessLabel?: I18nBaseType; //
48
+ // meetingCreatedNotificationLabel?: I18nBaseType; //
49
+ // joiningLoaderLabel?: I18nBaseType; //
50
+ // oauthLoginLabel?: I18nBaseType; //
51
+ // oauthProviderLabel?: I18nBaseType; //
52
+ // copyMeetingInviteButton?: I18nBaseType; //
53
+ // pin?: I18nBaseType;
54
+ // language?: I18nBaseType;
55
+ // screensharingActiveOverlayLabel?: I18nBaseType; //
56
+ // recordingButton?: I18nConditionalType; //
57
+ // screenshareUserName?: I18nDynamicType; //
58
+ // messageSenderNotificationLabel?: I18nDynamicType; //
59
+ // networkQualityLabel?: I18nBaseType<NetworkQualities>; //
60
+ // meetingInviteText?: I18nBaseType<MeetingInviteInterface>; //
61
+ // participantListPlaceholder?: I18nBaseType; //
62
+ // raisedHandsListPlaceholder?: I18nBaseType; //
63
+ // raisedHandsListTitleLabel?: I18nBaseType; //
64
+ // hostLabel?: I18nBaseType; //
65
+ // audienceLabel?: I18nBaseType; //
66
+ // raiseHandButton?: I18nConditionalType; //
67
+ // noUserFoundLabel?: I18nBaseType;
68
+ // userOfflineLabel?: I18nBaseType;
69
+ // raiseHandLocalNotification?: I18nBaseType; //
70
+ // raiseHandRemoteHostNotification?: I18nConditionalType; //
71
+ // raiseHandApprovedLocalNotification?: I18nBaseType; //
72
+ // raiseHandRejectedLocalNotification?: I18nBaseType; //
73
+ // lowerHandRemoteHostNotification?: I18nConditionalType; //
74
+ // lowerHandsLocalNotification?: I18nBaseType; //
75
+ // raiseHandRevokedLocalNotification?: I18nBaseType; //
76
+ // recordingLabel?: I18nBaseType;
77
+ // settingScreenInfoMessage?: I18nBaseType;
78
+ // chatLabel?: I18nBaseType;
79
+ // settingsLabel?: I18nBaseType;
80
+ // layoutLabel?: I18nBaseType;
81
+ }
82
+
83
+ export const VideoCallScreenLabels: I18nVideoCallScreenLabelsInterface = {
84
+ //need to check
85
+ //remoteScreenshareDefaultLabel - User's screenshare
86
+ //commented for v1 release
87
+ // toggleVideoButton: 'Video',
88
+ // toggleAudioButton: 'Audio',
89
+ // screenShareButton: 'Share',
90
+ // switchCameraButton: 'Switch',
91
+ // recordingLabel: 'Recording',
92
+ // recordingNotificationLabel: (active) =>
93
+ // active ? 'Recording Started' : 'Recording Stopped',
94
+ // endCallButton: 'Hang Up',
95
+ // participantsLabel: 'Participants',
96
+ // groupChatLabel: 'Group',
97
+ // privateChatLabel: 'Private',
98
+ // chatMessageInputPlaceholder: 'Type your message..',
99
+ // localScreenshareDefaultLabel: 'Your screenshare',
100
+ // localUserDefaultLabel: 'You',
101
+ // remoteUserDefaultLabel: 'User',
102
+ pstnUserLabel: 'PSTN User',
103
+ //commented for v1 release
104
+ // authenticationSuccessLabel: 'Authenticated Successfully!',
105
+ // meetingCreatedNotificationLabel: 'Created',
106
+ // joiningLoaderLabel: 'Starting Call. Just a second.',
107
+ // oauthLoginLabel: 'Login using OAuth',
108
+ // oauthProviderLabel: 'Please select an OAuth provider to login.',
109
+ // copyMeetingInviteButton: 'Copy Meeting Invite',
110
+ // pin: 'Pin',
111
+ // language: 'Language',
112
+ // hostControlsLabel: 'Host Controls',
113
+ // muteAllAudioButton: 'Mute all audios',
114
+ // muteAllVideoButton: 'Mute all videos',
115
+ // screensharingActiveOverlayLabel: 'Your screen share is active.',
116
+ // participantListPlaceholder: 'No one has joined yet',
117
+ // raisedHandsListPlaceholder: 'No streaming request(s)',
118
+ // raisedHandsListTitleLabel: 'Streaming Request',
119
+ // hostLabel: 'Host',
120
+ // audienceLabel: 'Audience',
121
+ // noUserFoundLabel: 'User not found',
122
+ // userOfflineLabel: 'User is offline',
123
+ // chatLabel: 'Chat',
124
+ // settingsLabel: 'Settings',
125
+ // layoutLabel: 'Layouts',
126
+ // raiseHandLocalNotification:
127
+ // 'You have raised your hand. Request sent to host for approval',
128
+ // raiseHandRemoteHostNotification: (name) => `${name} has raised their hand`,
129
+ // raiseHandApprovedLocalNotification:
130
+ // 'Your request was approved, unmute to start talking',
131
+ // raiseHandRejectedLocalNotification: 'Your request was rejected by the host',
132
+ // lowerHandRemoteHostNotification: (name) => `${name} has lowered their hand`,
133
+ // lowerHandsLocalNotification: 'You have lowered your hand',
134
+ // raiseHandRevokedLocalNotification:
135
+ // 'The host has revoked streaming permissions',
136
+ // settingScreenInfoMessage:
137
+ // 'Video and Audio sharing is disabled for attendees. Raise hand to request permission to share.',
138
+ // screenshareUserName: (name) => `${name}'s screenshare`, //
139
+ // recordingButton: (recording) => (recording ? 'Recording' : 'Record'),
140
+ // raiseHandButton: (toggle) => (toggle ? 'Lower hand' : 'Raise Hand'),
141
+ // messageSenderNotificationLabel: (name) => `From : ${name}`,
142
+ // networkQualityLabel: (quality) => {
143
+ // switch (quality) {
144
+ // case 'unknown':
145
+ // return 'Unknown';
146
+ // case 'excellent':
147
+ // return 'Excellent';
148
+ // case 'good':
149
+ // return 'Good';
150
+ // case 'bad':
151
+ // return 'Bad';
152
+ // case 'veryBad':
153
+ // return 'Very Bad';
154
+ // case 'unpublished':
155
+ // return 'Unpublished';
156
+ // case 'loading':
157
+ // return 'Loading';
158
+ // default:
159
+ // return 'Loading';
160
+ // }
161
+ // },
162
+ // meetingInviteText: ({meetingName, id, url, pstn}) => {
163
+ // let inviteContent = '';
164
+ // if (url) {
165
+ // // if host data is present generate links for both host and attendee
166
+ // if (url?.host) {
167
+ // inviteContent += `Meeting - ${meetingName}\nURL for Attendee: ${url?.attendee}\nURL for Host: ${url?.host}`;
168
+ // }
169
+ // // if host data is not present then generate link for attendee alone
170
+ // else {
171
+ // inviteContent += `Meeting - ${meetingName}\nMeeting URL: ${url?.attendee}`;
172
+ // }
173
+ // } else {
174
+ // // if host data is present generate meeting ID for both host and attendee
175
+ // if (id?.host) {
176
+ // inviteContent += `Meeting - ${meetingName}\nAttendee Meeting ID: ${id?.attendee}\nHost Meeting ID: ${id?.host}`;
177
+ // }
178
+ // // if host data is not present then generate meeting ID for attendee alone
179
+ // else {
180
+ // inviteContent += `Meeting - ${meetingName}\nMeeting ID: ${id?.attendee}`;
181
+ // }
182
+ // }
183
+ // // Adding pstn data into meeting data if present
184
+ // if (pstn?.number && pstn?.pin) {
185
+ // inviteContent += `\nPSTN Number: ${pstn.number}\nPSTN Pin: ${pstn.pin}`;
186
+ // }
187
+ // return inviteContent;
188
+ // },
189
+ };
@@ -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>