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
@@ -0,0 +1,197 @@
1
+ /*
2
+ ********************************************
3
+ Copyright © 2022 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
+
13
+ ('use strict');
14
+ import RtmEngine from 'agora-react-native-rtm';
15
+ import RTMEngine from '../rtm/RTMEngine';
16
+ import {ToOptions, EventPayload} from './types';
17
+ import {EventUtils, eventMessageType} from '../rtm-events';
18
+ import {TEventCallback, EventSourceEnum} from './types';
19
+
20
+ class CustomEvents {
21
+ engine!: RtmEngine;
22
+ source: EventSourceEnum = EventSourceEnum.core;
23
+
24
+ constructor(source?: EventSourceEnum) {
25
+ this.engine = RTMEngine.getInstance().engine;
26
+ if (source) {
27
+ this.source = source;
28
+ }
29
+ }
30
+
31
+ /**
32
+ * Persists the data in the local attributes of the user
33
+ *
34
+ * @param {string} evt to be stored in rtm Attribute key
35
+ * @param {any} payload to be stored in rtm Attribute value
36
+ * @api private
37
+ */
38
+ private _persist = async (evt: string, payload: any) => {
39
+ try {
40
+ const localUserId = RTMEngine.getInstance().localUid;
41
+ const rtmAttribute = {key: evt, value: JSON.stringify(payload)};
42
+ // Step 1: Call RTM API to update local attributes
43
+ await this.engine.addOrUpdateLocalUserAttributes([rtmAttribute]);
44
+ } catch (error) {
45
+ console.log(
46
+ 'CUSTOM_EVENT_API error occured while updating the value ',
47
+ error,
48
+ );
49
+ }
50
+ };
51
+
52
+ /**
53
+ *
54
+ */
55
+ private _validateEvt = (evt: string): boolean => {
56
+ if (typeof evt !== 'string') {
57
+ throw Error(
58
+ `CUSTOM_EVENT_API Event name cannot be of type ${typeof evt}`,
59
+ );
60
+ }
61
+ if (evt.trim() == '') {
62
+ throw Error(`CUSTOM_EVENT_API Name or function cannot be empty`);
63
+ }
64
+ return true;
65
+ };
66
+ private _validateListener = (listener: TEventCallback): boolean => {
67
+ if (typeof listener !== 'function') {
68
+ throw Error(
69
+ `CUSTOM_EVENT_API Function cannot be of type ${typeof listener}`,
70
+ );
71
+ }
72
+ return true;
73
+ };
74
+
75
+ /**
76
+ * Sends the data across to client using transport layer RTM API's
77
+ *
78
+ * @param {any} rtmPayload payload to be sent across
79
+ * @param {ToOptions} to If defined then sent to individual peer in the channle. If not defined then sent to everyone
80
+ * @api private
81
+ */
82
+ private _send = async (rtmPayload: any, to?: ToOptions) => {
83
+ const text = JSON.stringify({
84
+ type: eventMessageType.CUSTOM_EVENT,
85
+ msg: rtmPayload,
86
+ });
87
+ // Case 1: send to channel
88
+ if (
89
+ typeof to === 'undefined' ||
90
+ (typeof to === 'number' && !to) ||
91
+ (Array.isArray(to) && to?.length === 0)
92
+ ) {
93
+ console.log('CUSTOM_EVENT_API: case 1 executed');
94
+ try {
95
+ const channelId = RTMEngine.getInstance().channelUid;
96
+ await this.engine.sendMessageByChannelId(channelId, text);
97
+ } catch (error) {
98
+ console.log('CUSTOM_EVENT_API: send event case 1 error : ', error);
99
+ throw error;
100
+ }
101
+ }
102
+ // Case 2: send to indivdual
103
+ if (typeof to === 'number' && !to) {
104
+ console.log('CUSTOM_EVENT_API: case 2 executed', to);
105
+
106
+ try {
107
+ await this.engine.sendMessageToPeer({
108
+ peerId: `${to}`,
109
+ offline: false,
110
+ text,
111
+ });
112
+ } catch (error) {
113
+ console.log('CUSTOM_EVENT_API: send event case 2 error : ', error);
114
+ throw error;
115
+ }
116
+ }
117
+ // Case 3: send to multiple individuals
118
+ if (typeof to === 'object' && Array.isArray(to)) {
119
+ console.log('CUSTOM_EVENT_API: case 3 executed', to);
120
+
121
+ try {
122
+ for (const uid of to) {
123
+ // TODO adjust uids
124
+ await this.engine.sendMessageToPeer({
125
+ peerId: `${uid}`,
126
+ offline: false,
127
+ text,
128
+ });
129
+ }
130
+ } catch (error) {
131
+ console.log('CUSTOM_EVENT_API: send event case 3 error : ', error);
132
+ throw error;
133
+ }
134
+ }
135
+ };
136
+
137
+ on = (evt: string, listener: TEventCallback) => {
138
+ if (!this._validateEvt(evt) || !this._validateListener(listener)) return;
139
+ EventUtils.addListener(evt, listener, this.source);
140
+ };
141
+
142
+ off = (evt?: string, listener?: TEventCallback) => {
143
+ if (listener) {
144
+ if (this._validateListener(listener) && this._validateEvt(evt)) {
145
+ EventUtils.removeListener(evt, listener, this.source);
146
+ }
147
+ } else if (evt) {
148
+ if (this._validateEvt(evt)) {
149
+ EventUtils.removeAllListeners(evt, this.source);
150
+ }
151
+ } else {
152
+ EventUtils.removeAll(this.source);
153
+ }
154
+ };
155
+
156
+ send = async (evt: string, payload: EventPayload, to?: ToOptions) => {
157
+ if (!this._validateEvt(evt)) return;
158
+ const {action = '', value = '', level = 1} = payload;
159
+
160
+ const rtmPayload = {
161
+ evt: evt,
162
+ payload: {
163
+ action,
164
+ value,
165
+ level,
166
+ source: this.source,
167
+ },
168
+ };
169
+
170
+ if (level === 2 || level === 3) {
171
+ console.log('CUSTOM_EVENT_API: Event lifecycle: persist', level);
172
+ await this._persist(evt, {...payload, source: this.source});
173
+ }
174
+ try {
175
+ await this._send(rtmPayload, to);
176
+ } catch (error) {
177
+ console.log('CUSTOM_EVENT_API: sendPersist sending failed. ', error);
178
+ }
179
+ };
180
+
181
+ printEvents = () => {
182
+ console.log(
183
+ 'CUSTOM_EVENT_API: EVENTS source',
184
+ EventUtils.getEvents(EventSourceEnum.core),
185
+ );
186
+ console.log(
187
+ 'CUSTOM_EVENT_API: EVENTS fpe',
188
+ EventUtils.getEvents(EventSourceEnum.fpe),
189
+ );
190
+ };
191
+ // once = (name: string, listener: any) => {
192
+ // console.log('CUSTOM_EVENT_API: Event lifecycle: ONCE');
193
+ // const response = EventUtils.addOnceListener(name, listener);
194
+ // };
195
+ }
196
+
197
+ export default CustomEvents;
@@ -0,0 +1,4 @@
1
+ import CustomEvents from './CustomEvents';
2
+
3
+ export * from './types';
4
+ export default new CustomEvents();
@@ -0,0 +1,51 @@
1
+ import {UidType} from '../../agora-rn-uikit';
2
+ type Simplify<T> = T extends infer S ? {[K in keyof S]: S[K]} : never;
3
+ type NoneOf<T> = Simplify<{[K in keyof T]?: never}>;
4
+ type AtMostOneOf<T> =
5
+ | NoneOf<T>
6
+ | {[K in keyof T]: Simplify<Pick<T, K> & NoneOf<Omit<T, K>>>}[keyof T];
7
+
8
+ // export type TEventOptions = AtMostOneOf<IMessageOptions> & IEventOptions;
9
+
10
+ export type ToOptions = UidType | UidType[];
11
+
12
+ interface IEventPayloadBase {
13
+ action?: any;
14
+ }
15
+
16
+ interface IEventPayloadWithoutAttributes extends IEventPayloadBase {
17
+ level?: never;
18
+ value: string;
19
+ }
20
+
21
+ interface IEventPayloadWithAttributes extends IEventPayloadBase {
22
+ level: 2 | 3;
23
+ value: string;
24
+ }
25
+
26
+ export type EventPayload =
27
+ | IEventPayloadWithoutAttributes
28
+ | IEventPayloadWithAttributes
29
+ | Record<string, never>;
30
+
31
+ export enum EventSourceEnum {
32
+ core = 'core',
33
+ fpe = 'fpe',
34
+ }
35
+ export enum EventLevel {
36
+ 'LEVEL1' = 1,
37
+ 'LEVEL2',
38
+ 'LEVEL3',
39
+ }
40
+ interface dataPayload {
41
+ action: string;
42
+ level: 1 | 2 | 3;
43
+ value: string;
44
+ }
45
+ interface EvtCbPayload {
46
+ payload: dataPayload;
47
+ sender: string;
48
+ ts: number;
49
+ source: EventSourceEnum;
50
+ }
51
+ export type TEventCallback = (args: EvtCbPayload) => void;
@@ -0,0 +1,21 @@
1
+ import {I18nBaseType} from '../i18nTypes';
2
+
3
+ export interface I18nCommonLabelsInterface {
4
+ //commented for v1 release
5
+ // goBackButton?: I18nBaseType; //
6
+ // logoutButton?: I18nBaseType; //
7
+ // googleAuthButton?: I18nBaseType; //
8
+ // microsoftAuthButton?: I18nBaseType; //
9
+ // slackAuthButton?: I18nBaseType; //
10
+ // appleAuthButton?: I18nBaseType; //
11
+ }
12
+
13
+ export const CommonLabels: I18nCommonLabelsInterface = {
14
+ //commented for v1 release
15
+ // goBackButton: 'Go back',
16
+ // logoutButton: 'Logout',
17
+ // googleAuthButton: 'Google',
18
+ // microsoftAuthButton: 'Microsoft',
19
+ // slackAuthButton: 'Slack',
20
+ // appleAuthButton: 'Apple',
21
+ };
@@ -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,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
+ };