agora-appbuilder-core 4.0.0-api.5 → 4.0.0-api.6

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 (406) hide show
  1. package/package.json +2 -2
  2. package/template/.bundle/config +2 -0
  3. package/template/Gemfile +4 -0
  4. package/template/Gulpfile.js +29 -29
  5. package/template/_eslintrc.js +3 -3
  6. package/template/_gitignore +12 -11
  7. package/template/_package-lock.json +26471 -22749
  8. package/template/_prettierrc.js +2 -2
  9. package/template/agora-rn-uikit/src/Contexts/PropsContext.tsx +30 -10
  10. package/template/agora-rn-uikit/src/Contexts/RtcContext.tsx +19 -0
  11. package/template/agora-rn-uikit/src/Controls/BtnTemplate.tsx +1 -0
  12. package/template/agora-rn-uikit/src/Controls/Icons.ts +45 -0
  13. package/template/agora-rn-uikit/src/Controls/Local/EndCall.tsx +6 -4
  14. package/template/agora-rn-uikit/src/Controls/Local/FullScreen.tsx +3 -1
  15. package/template/agora-rn-uikit/src/Controls/Local/LocalAudioMute.tsx +1 -0
  16. package/template/agora-rn-uikit/src/Controls/Local/LocalVideoMute.tsx +1 -0
  17. package/template/agora-rn-uikit/src/Controls/Local/SwitchCamera.tsx +1 -0
  18. package/template/agora-rn-uikit/src/Controls/Remote/RemoteAudioMute.tsx +1 -0
  19. package/template/agora-rn-uikit/src/Controls/Remote/RemoteSwap.tsx +3 -1
  20. package/template/agora-rn-uikit/src/Controls/Remote/RemoteVideoMute.tsx +1 -0
  21. package/template/agora-rn-uikit/src/Reducer/ActiveSpeaker.ts +30 -0
  22. package/template/agora-rn-uikit/src/Reducer/LocalMuteAudio.ts +3 -1
  23. package/template/agora-rn-uikit/src/Reducer/LocalMuteVideo.ts +3 -1
  24. package/template/agora-rn-uikit/src/Reducer/LocalPermissionState.ts +1 -1
  25. package/template/agora-rn-uikit/src/Reducer/RemoteAudioStateChanged.ts +3 -3
  26. package/template/agora-rn-uikit/src/Reducer/RemoteVideoStateChanged.ts +5 -4
  27. package/template/agora-rn-uikit/src/Reducer/UpdateDualStreamMode.ts +1 -1
  28. package/template/agora-rn-uikit/src/Reducer/UserJoined.ts +8 -5
  29. package/template/agora-rn-uikit/src/Reducer/UserMuteRemoteAudio.ts +1 -1
  30. package/template/agora-rn-uikit/src/Reducer/UserMuteRemoteVideo.ts +1 -1
  31. package/template/agora-rn-uikit/src/Reducer/UserOffline.ts +1 -1
  32. package/template/agora-rn-uikit/src/Reducer/UserPin.ts +18 -1
  33. package/template/agora-rn-uikit/src/Reducer/UserSecondaryPin.ts +23 -0
  34. package/template/agora-rn-uikit/src/Reducer/index.ts +2 -0
  35. package/template/agora-rn-uikit/src/Rtc/Create.tsx +47 -21
  36. package/template/agora-rn-uikit/src/Rtc/Join.tsx +37 -15
  37. package/template/agora-rn-uikit/src/RtcConfigure.tsx +122 -12
  38. package/template/agora-rn-uikit/src/Views/MaxVideoView.native.tsx +32 -4
  39. package/template/agora-rn-uikit/src/Views/MaxVideoView.tsx +21 -2
  40. package/template/agora-rn-uikit/src/Views/MinVideoView.tsx +2 -0
  41. package/template/android/app/build.gradle +59 -156
  42. package/template/android/app/src/debug/AndroidManifest.xml +6 -1
  43. package/template/android/app/src/debug/java/com/helloworld/ReactNativeFlipper.java +7 -4
  44. package/template/android/app/src/main/AndroidManifest.xml +6 -19
  45. package/template/android/app/src/main/assets/fonts/icomoon.ttf +0 -0
  46. package/template/android/app/src/main/java/com/helloworld/MainActivity.java +17 -0
  47. package/template/android/app/src/main/java/com/helloworld/MainApplication.java +19 -36
  48. package/template/android/app/src/release/java/com/helloworld/ReactNativeFlipper.java +20 -0
  49. package/template/android/build.gradle +19 -33
  50. package/template/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  51. package/template/android/gradle/wrapper/gradle-wrapper.properties +3 -2
  52. package/template/android/gradle.properties +18 -4
  53. package/template/android/gradlew +165 -104
  54. package/template/android/gradlew.bat +12 -23
  55. package/template/android/settings.gradle +1 -0
  56. package/template/bridge/rtc/webNg/RtcEngine.ts +131 -16
  57. package/template/bridge/rtc/webNg/index.ts +72 -1
  58. package/template/bridge/rtm/web/index.ts +5 -3
  59. package/template/configTransform.js +16 -1
  60. package/template/customization-api/action-library.ts +0 -8
  61. package/template/customization-api/app-state.ts +11 -2
  62. package/template/customization-api/customEvents.ts +6 -1
  63. package/template/customization-api/index.ts +4 -0
  64. package/template/customization-api/sub-components.ts +6 -3
  65. package/template/customization-api/temp.ts +50 -0
  66. package/template/customization-api/typeDefinition.ts +26 -14
  67. package/template/customization-api/types.ts +26 -0
  68. package/template/customization-api/utils.ts +2 -0
  69. package/template/customization-implementation/index.ts +0 -1
  70. package/template/defaultConfig.js +72 -0
  71. package/template/global.d.ts +13 -1
  72. package/template/index.js +0 -4
  73. package/template/index.web.js +0 -5
  74. package/template/index.wsdk.tsx +1 -19
  75. package/template/ios/.xcode.env +11 -0
  76. package/template/ios/HelloWorld/AppDelegate.h +2 -4
  77. package/template/ios/HelloWorld/AppDelegate.mm +42 -0
  78. package/template/ios/HelloWorld/Info.plist +1 -1
  79. package/template/ios/HelloWorld/main.m +2 -1
  80. package/template/ios/HelloWorld.xcodeproj/project.pbxproj +529 -17
  81. package/template/ios/HelloWorld.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  82. package/template/ios/HelloWorld.xcworkspace/contents.xcworkspacedata +10 -0
  83. package/template/ios/HelloWorld.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  84. package/template/ios/HelloWorldTests/HelloWorldTests.m +14 -13
  85. package/template/ios/HelloWorldTests/Info.plist +2 -2
  86. package/template/ios/Podfile +53 -20
  87. package/template/ios/Podfile.lock +873 -0
  88. package/template/ios/ScreenSharing/Info.plist +15 -0
  89. package/template/ios/ScreenSharing/SampleHandler.h +9 -0
  90. package/template/ios/ScreenSharing/SampleHandler.m +70 -0
  91. package/template/jest.config.js +4 -0
  92. package/template/metro.config.js +7 -32
  93. package/template/package.json +52 -39
  94. package/template/react-native-toast-message/index.d.ts +3 -1
  95. package/template/react-native-toast-message/index.js +1 -0
  96. package/template/react-native-toast-message/src/components/base/index.js +20 -32
  97. package/template/react-native-toast-message/src/components/base/styles.js +18 -21
  98. package/template/react-native-toast-message/src/components/checkbox.js +24 -19
  99. package/template/react-native-toast-message/src/index.js +3 -1
  100. package/template/react-native-toast-message/src/index.sdk.tsx +4 -1
  101. package/template/src/App.tsx +13 -85
  102. package/template/src/AppRoutes.tsx +77 -0
  103. package/template/src/AppWrapper.tsx +38 -33
  104. package/template/src/SDKAppWrapper.tsx +79 -43
  105. package/template/src/app-state/useNoiseSupression.native.tsx +67 -0
  106. package/template/src/app-state/useNoiseSupression.tsx +107 -0
  107. package/template/src/app-state/useVideoQuality.tsx +39 -0
  108. package/template/src/assets/font-styles.css +171 -3
  109. package/template/src/assets/fonts/icomoon.ttf +0 -0
  110. package/template/src/assets/selection.json +1 -1
  111. package/template/src/atoms/ActionMenu.tsx +50 -11
  112. package/template/src/atoms/Avatar.tsx +51 -0
  113. package/template/src/atoms/Card.tsx +21 -8
  114. package/template/src/atoms/Carousel.native.tsx +105 -0
  115. package/template/src/atoms/Carousel.tsx +103 -0
  116. package/template/src/atoms/Checkbox.tsx +98 -0
  117. package/template/src/atoms/CircularProgress.tsx +0 -1
  118. package/template/src/atoms/ClipboardIconButton.tsx +91 -0
  119. package/template/src/atoms/CustomIcon.tsx +45 -0
  120. package/template/src/atoms/DropDownMulti.tsx +349 -0
  121. package/template/src/atoms/Dropdown.tsx +3 -3
  122. package/template/src/atoms/IconButton.tsx +52 -9
  123. package/template/src/atoms/ImageIcon.tsx +6 -3
  124. package/template/src/atoms/InlineNotification.tsx +81 -0
  125. package/template/src/atoms/MeetingLink.tsx +160 -0
  126. package/template/src/atoms/ParticipantsCount.tsx +18 -7
  127. package/template/src/atoms/Popup.tsx +49 -27
  128. package/template/src/atoms/PrimaryButton.tsx +19 -5
  129. package/template/src/atoms/RecordingInfo.tsx +2 -2
  130. package/template/src/atoms/SecondaryButton.tsx +2 -0
  131. package/template/src/atoms/Spacer.tsx +1 -0
  132. package/template/src/atoms/TertiaryButton.tsx +35 -5
  133. package/template/src/atoms/TextInput.tsx +2 -1
  134. package/template/src/atoms/Toolbar.tsx +64 -30
  135. package/template/src/atoms/ToolbarItem.tsx +11 -5
  136. package/template/src/atoms/ToolbarPreset.tsx +13 -2
  137. package/template/src/atoms/Tooltip.tsx +26 -4
  138. package/template/src/auth/AuthProvider.tsx +500 -0
  139. package/template/src/auth/AuthRoute.tsx +94 -0
  140. package/template/src/auth/IDPAuth.electron.tsx +31 -0
  141. package/template/src/auth/IDPAuth.tsx +67 -0
  142. package/template/src/auth/IDPLogoutComponent.tsx +158 -0
  143. package/template/src/auth/UserCancelPopup.tsx +115 -0
  144. package/template/src/auth/config.ts +52 -0
  145. package/template/src/auth/openIDPURL.electron.tsx +39 -0
  146. package/template/src/auth/openIDPURL.native.tsx +51 -0
  147. package/template/src/auth/openIDPURL.tsx +20 -0
  148. package/template/src/auth/useIDPAuth.electron.tsx +65 -0
  149. package/template/src/auth/useIDPAuth.native.tsx +70 -0
  150. package/template/src/auth/useIDPAuth.tsx +63 -0
  151. package/template/src/auth/useTokenAuth.tsx +194 -0
  152. package/template/src/components/Chat.tsx +5 -8
  153. package/template/src/components/ChatContext.ts +4 -0
  154. package/template/src/components/ColorConfigure.tsx +0 -1
  155. package/template/src/components/CommonStyles.ts +9 -2
  156. package/template/src/components/Controls.tsx +659 -52
  157. package/template/src/components/DeviceConfigure.tsx +362 -156
  158. package/template/src/components/DeviceContext.tsx +2 -0
  159. package/template/src/components/EventsConfigure.tsx +713 -109
  160. package/template/src/components/GraphQLProvider.tsx +62 -36
  161. package/template/src/components/GridVideo.tsx +23 -13
  162. package/template/src/components/HostControlView.tsx +11 -14
  163. package/template/src/components/JoinPhrase.tsx +0 -1
  164. package/template/src/components/Leftbar.tsx +4 -3
  165. package/template/src/components/Navbar.tsx +110 -42
  166. package/template/src/components/NavbarMobile.tsx +47 -36
  167. package/template/src/components/Navigation.native.tsx +1 -15
  168. package/template/src/{subComponents/screenshare/ScreenshareButton.native.tsx → components/Navigation.sdk.tsx} +17 -3
  169. package/template/src/components/Navigation.tsx +1 -15
  170. package/template/src/components/ParticipantsView.tsx +56 -48
  171. package/template/src/components/PinnedVideo.tsx +188 -114
  172. package/template/src/components/Precall.native.tsx +169 -67
  173. package/template/src/components/Precall.tsx +237 -71
  174. package/template/src/components/RTMConfigure.tsx +167 -55
  175. package/template/src/components/Rightbar.tsx +4 -3
  176. package/template/src/components/Router.electron.ts +1 -0
  177. package/template/src/components/Router.native.ts +1 -0
  178. package/template/src/components/Router.sdk.ts +1 -0
  179. package/template/src/components/Router.ts +1 -0
  180. package/template/src/components/SdkApiContext.tsx +179 -27
  181. package/template/src/components/SdkMuteToggleListener.tsx +88 -0
  182. package/template/src/components/SessionContext.tsx +0 -1
  183. package/template/src/components/Settings.tsx +25 -3
  184. package/template/src/components/SettingsView.tsx +44 -9
  185. package/template/src/components/Share.tsx +149 -71
  186. package/template/src/components/StorageContext.tsx +19 -5
  187. package/template/src/components/ToastComponent.tsx +3 -0
  188. package/template/src/components/WhiteboardLayout.tsx +291 -0
  189. package/template/src/components/chat-messages/useChatMessages.tsx +420 -207
  190. package/template/src/components/common/Error.tsx +2 -0
  191. package/template/src/components/common/Logo.tsx +2 -2
  192. package/template/src/components/contexts/LiveStreamDataContext.tsx +5 -4
  193. package/template/src/components/contexts/ScreenShareContext.tsx +15 -1
  194. package/template/src/components/contexts/WaitingRoomContext.tsx +50 -0
  195. package/template/src/components/contexts/WhiteboardContext.tsx +54 -54
  196. package/template/src/components/disable-chat/useDisableChat.tsx +32 -0
  197. package/template/src/components/livestream/LiveStreamContext.tsx +262 -177
  198. package/template/src/components/livestream/Types.ts +34 -18
  199. package/template/src/components/livestream/views/LiveStreamAttendeeLandingTile.tsx +295 -0
  200. package/template/src/components/livestream/views/LiveStreamControls.tsx +2 -4
  201. package/template/src/components/meeting-info-invite/MeetingInfo.tsx +82 -0
  202. package/template/src/components/meeting-info-invite/MeetingInfoCardHeader.tsx +86 -0
  203. package/template/src/components/meeting-info-invite/MeetingInfoGridTile.tsx +218 -0
  204. package/template/src/components/meeting-info-invite/MeetingInfoLinks.tsx +122 -0
  205. package/template/src/components/participants/AllAudienceParticipants.tsx +4 -5
  206. package/template/src/components/participants/AllHostParticipants.tsx +5 -6
  207. package/template/src/components/participants/Participant.tsx +40 -9
  208. package/template/src/components/participants/ParticipantSectionTitle.tsx +5 -2
  209. package/template/src/components/participants/ScreenshareParticipants.tsx +15 -17
  210. package/template/src/components/participants/UserActionMenuOptions.tsx +157 -49
  211. package/template/src/components/participants/WaitingRoomParticipants.tsx +74 -0
  212. package/template/src/components/popups/InvitePopup.tsx +110 -45
  213. package/template/src/components/popups/StartScreenSharePopup.native.tsx +182 -0
  214. package/template/src/components/popups/StartScreenSharePopup.tsx +6 -0
  215. package/template/src/components/popups/StopRecordingPopup.tsx +11 -5
  216. package/template/src/components/popups/StopScreenSharePopup.native.tsx +135 -0
  217. package/template/src/components/popups/StopScreenSharePopup.tsx +6 -0
  218. package/template/src/components/popups/WhiteboardClearAllPopup.tsx +123 -0
  219. package/template/src/components/precall/LocalMute.tsx +69 -45
  220. package/template/src/components/precall/PermissionHelper.tsx +52 -24
  221. package/template/src/components/precall/PreCallSettings.tsx +1 -0
  222. package/template/src/components/precall/VideoFallback.tsx +173 -0
  223. package/template/src/components/precall/VideoPreview.native.tsx +16 -50
  224. package/template/src/components/precall/VideoPreview.tsx +27 -162
  225. package/template/src/components/precall/index.tsx +2 -0
  226. package/template/src/components/precall/joinCallBtn.native.tsx +10 -3
  227. package/template/src/components/precall/joinCallBtn.tsx +11 -2
  228. package/template/src/components/precall/joinWaitingRoomBtn.native.tsx +210 -0
  229. package/template/src/components/precall/joinWaitingRoomBtn.tsx +250 -0
  230. package/template/src/components/precall/meetingTitle.tsx +35 -9
  231. package/template/src/components/precall/selectDevice.tsx +5 -5
  232. package/template/src/components/precall/textInput.tsx +16 -18
  233. package/template/src/components/precall/usePreCall.tsx +14 -4
  234. package/template/src/components/room-info/useRoomInfo.tsx +34 -0
  235. package/template/src/components/useShareLink.tsx +24 -59
  236. package/template/src/components/useUserPreference.tsx +73 -10
  237. package/template/src/components/useVideoCall.tsx +76 -3
  238. package/template/src/components/virtual-background/VBButton.tsx +64 -0
  239. package/template/src/components/virtual-background/VBCard.native.tsx +282 -0
  240. package/template/src/components/virtual-background/VBCard.tsx +272 -0
  241. package/template/src/components/virtual-background/VBPanel.tsx +279 -0
  242. package/template/src/components/virtual-background/VButils.native.ts +37 -0
  243. package/template/src/components/virtual-background/VButils.ts +104 -0
  244. package/template/src/components/virtual-background/VideoPreview.native.tsx +43 -0
  245. package/template/src/components/virtual-background/VideoPreview.tsx +106 -0
  246. package/template/src/components/virtual-background/imagePaths.ts +87 -0
  247. package/template/src/components/virtual-background/images/beachImageBase64.ts +1 -0
  248. package/template/src/components/virtual-background/images/bedroomImageBase64.ts +1 -0
  249. package/template/src/components/virtual-background/images/bookImageBase64.ts +1 -0
  250. package/template/src/components/virtual-background/images/earthImageBase64.ts +1 -0
  251. package/template/src/components/virtual-background/images/index.ts +37 -0
  252. package/template/src/components/virtual-background/images/lampImageBase64.ts +1 -0
  253. package/template/src/components/virtual-background/images/mountainsImageBase64.ts +1 -0
  254. package/template/src/components/virtual-background/images/office1ImageBase64.ts +1 -0
  255. package/template/src/components/virtual-background/images/officeImageBase64.ts +1 -0
  256. package/template/src/components/virtual-background/images/plantsImageBase64.ts +1 -0
  257. package/template/src/components/virtual-background/images/skyImageBase64.ts +1 -0
  258. package/template/src/components/virtual-background/images/wallImageBase64.ts +1 -0
  259. package/template/src/components/virtual-background/useVB.native.tsx +188 -0
  260. package/template/src/components/virtual-background/useVB.tsx +267 -0
  261. package/template/src/components/whiteboard/StrokeWidthTool.tsx +137 -0
  262. package/template/src/components/whiteboard/WhiteboardButton.tsx +93 -0
  263. package/template/src/components/whiteboard/WhiteboardCanvas.tsx +99 -0
  264. package/template/src/components/whiteboard/WhiteboardConfigure.native.tsx +137 -0
  265. package/template/src/components/whiteboard/WhiteboardConfigure.tsx +441 -0
  266. package/template/src/components/whiteboard/WhiteboardCursor.tsx +152 -0
  267. package/template/src/components/whiteboard/WhiteboardToolBox.tsx +1246 -0
  268. package/template/src/components/whiteboard/WhiteboardView.native.tsx +109 -0
  269. package/template/src/components/whiteboard/WhiteboardView.tsx +81 -0
  270. package/template/src/components/whiteboard/WhiteboardWidget.tsx +674 -0
  271. package/template/src/components/whiteboard/WhiteboardWrapper.tsx +38 -0
  272. package/template/src/language/default-labels/commonLabels.ts +51 -14
  273. package/template/src/language/default-labels/createScreenLabels.ts +97 -17
  274. package/template/src/language/default-labels/joinScreenLabels.ts +45 -6
  275. package/template/src/language/default-labels/precallScreenLabels.ts +145 -23
  276. package/template/src/language/default-labels/shareLinkScreenLabels.ts +85 -37
  277. package/template/src/language/default-labels/videoCallScreenLabels.ts +1137 -158
  278. package/template/src/pages/Create.tsx +125 -80
  279. package/template/src/pages/Join.tsx +76 -34
  280. package/template/src/pages/Login.tsx +26 -0
  281. package/template/src/pages/VideoCall.tsx +229 -114
  282. package/template/src/pages/video-call/ActionSheet.native.tsx +54 -7
  283. package/template/src/pages/video-call/ActionSheet.tsx +55 -16
  284. package/template/src/pages/video-call/ActionSheetContent.tsx +366 -291
  285. package/template/src/pages/video-call/ActionSheetHandle.tsx +7 -1
  286. package/template/src/pages/video-call/DefaultLayouts.ts +11 -5
  287. package/template/src/pages/video-call/NameWithMicIcon.tsx +17 -9
  288. package/template/src/pages/video-call/PinchableView.tsx +119 -0
  289. package/template/src/pages/video-call/RenderComponent.tsx +12 -3
  290. package/template/src/pages/video-call/SidePanelHeader.tsx +208 -6
  291. package/template/src/pages/video-call/VideoCallMobileView.tsx +140 -106
  292. package/template/src/pages/video-call/VideoCallScreen.native.tsx +3 -2
  293. package/template/src/pages/video-call/VideoCallScreen.tsx +113 -66
  294. package/template/src/pages/video-call/VideoComponent.tsx +53 -5
  295. package/template/src/pages/video-call/VideoRenderer.tsx +309 -52
  296. package/template/src/pages/video-call/VisibilitySensor.tsx +104 -0
  297. package/template/src/pages/video-call/ZoomableWrapper.native.tsx +34 -0
  298. package/template/src/pages/video-call/ZoomableWrapper.tsx +5 -0
  299. package/template/src/pages/video-call/index.ts +2 -0
  300. package/template/src/rtm/RTMEngine.ts +9 -4
  301. package/template/src/rtm-events/constants.ts +20 -0
  302. package/template/src/rtm-events-api/Events.ts +2 -0
  303. package/template/src/rtm-events-api/LocalEvents.ts +8 -0
  304. package/template/src/selection.json +1 -0
  305. package/template/src/subComponents/ChatBubble.tsx +81 -64
  306. package/template/src/subComponents/ChatContainer.tsx +20 -13
  307. package/template/src/subComponents/ChatInput.ios.tsx +11 -2
  308. package/template/src/subComponents/ChatInput.tsx +12 -3
  309. package/template/src/subComponents/Checkbox.native.tsx +46 -46
  310. package/template/src/subComponents/Checkbox.tsx +7 -6
  311. package/template/src/subComponents/CopyJoinInfo.tsx +26 -11
  312. package/template/src/subComponents/EndcallPopup.tsx +83 -12
  313. package/template/src/subComponents/LanguageSelector.tsx +34 -30
  314. package/template/src/subComponents/LayoutIconButton.tsx +30 -8
  315. package/template/src/subComponents/LayoutIconDropdown.tsx +19 -3
  316. package/template/src/subComponents/Loading.tsx +60 -0
  317. package/template/src/subComponents/LocalAudioMute.tsx +106 -30
  318. package/template/src/subComponents/LocalEndCall.tsx +91 -15
  319. package/template/src/subComponents/LocalSwitchCamera.tsx +50 -11
  320. package/template/src/subComponents/LocalVideoMute.tsx +126 -32
  321. package/template/src/subComponents/LogoutButton.tsx +1 -1
  322. package/template/src/subComponents/NetworkQualityPill.tsx +14 -31
  323. package/template/src/subComponents/Recording.tsx +23 -6
  324. package/template/src/subComponents/RemoteAudioMute.tsx +3 -3
  325. package/template/src/subComponents/RemoteMutePopup.tsx +55 -14
  326. package/template/src/subComponents/RemoteVideoMute.tsx +3 -3
  327. package/template/src/subComponents/RemoveMeetingPopup.tsx +19 -6
  328. package/template/src/subComponents/RemoveScreensharePopup.tsx +20 -5
  329. package/template/src/subComponents/ScreenShareNotice.tsx +11 -6
  330. package/template/src/subComponents/SelectDevice.tsx +98 -32
  331. package/template/src/subComponents/SidePanelEnum.tsx +2 -0
  332. package/template/src/subComponents/SidePanelHeader.tsx +97 -63
  333. package/template/src/subComponents/ToastConfig.tsx +70 -61
  334. package/template/src/subComponents/caption/Caption.tsx +130 -0
  335. package/template/src/subComponents/caption/CaptionContainer.tsx +302 -0
  336. package/template/src/subComponents/caption/CaptionIcon.tsx +111 -0
  337. package/template/src/subComponents/caption/CaptionText.tsx +182 -0
  338. package/template/src/subComponents/caption/DownloadTranscriptBtn.tsx +65 -0
  339. package/template/src/subComponents/caption/LanguageSelectorPopup.tsx +192 -0
  340. package/template/src/subComponents/caption/Transcript.tsx +449 -0
  341. package/template/src/subComponents/caption/TranscriptIcon.tsx +123 -0
  342. package/template/src/subComponents/caption/TranscriptText.tsx +98 -0
  343. package/template/src/subComponents/caption/index.ts +3 -0
  344. package/template/src/subComponents/caption/proto/ptoto.js +91 -0
  345. package/template/src/subComponents/caption/proto/test.proto +23 -0
  346. package/template/src/subComponents/caption/useCaption.tsx +123 -0
  347. package/template/src/subComponents/caption/useCaptionWidth.ts +27 -0
  348. package/template/src/subComponents/caption/useSTTAPI.tsx +179 -0
  349. package/template/src/subComponents/caption/useStreamMessageUtils.native.ts +211 -0
  350. package/template/src/subComponents/caption/useStreamMessageUtils.ts +235 -0
  351. package/template/src/subComponents/caption/useTranscriptDownload.native.ts +68 -0
  352. package/template/src/subComponents/caption/useTranscriptDownload.ts +52 -0
  353. package/template/src/subComponents/caption/utils.ts +125 -0
  354. package/template/src/subComponents/chat/ChatParticipants.tsx +53 -17
  355. package/template/src/subComponents/livestream/CurrentLiveStreamRequestsView.tsx +11 -13
  356. package/template/src/subComponents/livestream/controls/LocalRaiseHand.tsx +33 -9
  357. package/template/src/subComponents/livestream/controls/RemoteLiveStreamApprovedRequestRecall.tsx +1 -0
  358. package/template/src/subComponents/livestream/controls/RemoteLiveStreamRequestApprove.tsx +10 -6
  359. package/template/src/subComponents/livestream/controls/RemoteLiveStreamRequestReject.tsx +28 -19
  360. package/template/src/subComponents/recording/useRecording.tsx +49 -20
  361. package/template/src/subComponents/recording/useRecordingLayoutQuery.tsx +0 -1
  362. package/template/src/subComponents/screenshare/ScreenshareButton.tsx +29 -10
  363. package/template/src/subComponents/screenshare/ScreenshareConfigure.native.tsx +270 -66
  364. package/template/src/subComponents/screenshare/ScreenshareConfigure.tsx +182 -95
  365. package/template/src/subComponents/screenshare/useScreenshare.tsx +2 -0
  366. package/template/src/subComponents/waiting-rooms/WaitingRoomControls.tsx +85 -0
  367. package/template/src/subComponents/waiting-rooms/useWaitingRoomAPI.ts +75 -0
  368. package/template/src/theme/index.ts +9 -0
  369. package/template/src/utils/SdkEvents.ts +14 -0
  370. package/template/src/utils/SdkMethodEvents.ts +23 -3
  371. package/template/src/utils/axiomLogger.ts +117 -0
  372. package/template/src/utils/book.jpg +0 -0
  373. package/template/src/utils/common.tsx +118 -6
  374. package/template/src/utils/endCallEveryOne.ts +7 -0
  375. package/template/src/utils/getCustomRoute.ts +7 -0
  376. package/template/src/utils/index.tsx +23 -0
  377. package/template/src/utils/useActionSheet.tsx +50 -0
  378. package/template/src/utils/useActiveSpeaker.ts +3 -7
  379. package/template/src/utils/useAppState.ts +17 -0
  380. package/template/src/utils/useAsyncEffect.ts +138 -0
  381. package/template/src/utils/useCreateRoom.ts +8 -12
  382. package/template/src/utils/useDisableButton.tsx +37 -0
  383. package/template/src/utils/useFindActiveSpeaker.native.ts +4 -0
  384. package/template/src/utils/useFindActiveSpeaker.ts +335 -0
  385. package/template/src/utils/useIsLocalUserSpeaking.native.ts +4 -0
  386. package/template/src/utils/useIsLocalUserSpeaking.ts +98 -0
  387. package/template/src/utils/useJoinRoom.ts +97 -36
  388. package/template/src/utils/useMuteToggleLocal.ts +114 -96
  389. package/template/src/utils/useString.ts +13 -3
  390. package/template/static.d.ts +42 -0
  391. package/template/tsconfig_rsdk_index.json +3 -3
  392. package/template/tsconfig_wsdk_index.json +1 -1
  393. package/template/web/index.html +20 -0
  394. package/template/webpack.commons.js +21 -10
  395. package/template/webpack.web.config.js +7 -3
  396. package/template/_buckconfig +0 -6
  397. package/template/_gitattributes +0 -1
  398. package/template/android/app/_BUCK +0 -55
  399. package/template/android/app/build_defs.bzl +0 -19
  400. package/template/ios/HelloWorld/AppDelegate.m +0 -74
  401. package/template/src/components/OAuth.electron.tsx +0 -41
  402. package/template/src/components/OAuth.native.tsx +0 -55
  403. package/template/src/components/OAuth.tsx +0 -30
  404. package/template/src/components/OAuthConfig.ts +0 -77
  405. package/template/src/components/Settings.native.tsx +0 -21
  406. package/template/src/components/StoreToken.tsx +0 -39
@@ -9,7 +9,10 @@ import {
9
9
  useContent,
10
10
  useSidePanel,
11
11
  } from 'customization-api';
12
- import {getPinnedLayoutName} from '../../pages/video-call/DefaultLayouts';
12
+ import {
13
+ DefaultLayouts,
14
+ getPinnedLayoutName,
15
+ } from '../../pages/video-call/DefaultLayouts';
13
16
  import useRemoteRequest, {
14
17
  REQUEST_REMOTE_TYPE,
15
18
  } from '../../utils/useRemoteRequest';
@@ -33,6 +36,29 @@ import {useFocus} from '../../utils/useFocus';
33
36
  import Toast from '../../../react-native-toast-message';
34
37
  import RemoteMutePopup from '../../subComponents/RemoteMutePopup';
35
38
  import {calculatePosition, trimText} from '../../utils/common';
39
+ import {useVideoCall} from '../useVideoCall';
40
+ import {customEvents} from 'customization-api';
41
+ import {useDisableChat} from '../disable-chat/useDisableChat';
42
+ import {useWhiteboard} from '../../components/whiteboard/WhiteboardConfigure';
43
+ import {useString} from '../../utils/useString';
44
+ import {
45
+ I18nMuteType,
46
+ moreBtnAddAsPresenter,
47
+ moreBtnAudio,
48
+ moreBtnChangeName,
49
+ moreBtnMessagePrivately,
50
+ moreBtnPinToTop,
51
+ moreBtnRemoveAsPresenter,
52
+ moreBtnRemoveFromLarge,
53
+ moreBtnRemoveFromRoom,
54
+ moreBtnRemoveFromTop,
55
+ moreBtnRemoveScreenShare,
56
+ moreBtnStopScreenShare,
57
+ moreBtnVideo,
58
+ moreBtnViewInLarge,
59
+ moreBtnViewWhiteboard,
60
+ userRemovedFromTheRoomToastHeading,
61
+ } from '../../language/default-labels/videoCallScreenLabels';
36
62
 
37
63
  interface UserActionMenuOptionsOptionsProps {
38
64
  user: ContentInterface;
@@ -55,7 +81,9 @@ export default function UserActionMenuOptionsOptions(
55
81
  const [actionMenuitems, setActionMenuitems] = useState<ActionMenuItem[]>([]);
56
82
  const {setSidePanel} = useSidePanel();
57
83
  const {user, actionMenuVisible, setActionMenuVisible} = props;
58
- const {pinnedUid, activeUids} = useContent();
84
+ const {currentLayout} = useLayout();
85
+ const {pinnedUid, activeUids, customContent, secondaryPinnedUid} =
86
+ useContent();
59
87
  const {dispatch} = useContext(DispatchContext);
60
88
  const {setLayout} = useLayout();
61
89
  const localuid = useLocalUid();
@@ -71,6 +99,40 @@ export default function UserActionMenuOptionsOptions(
71
99
  useContext(LiveStreamContext);
72
100
  const [removeMeetingPopupVisible, setRemoveMeetingPopupVisible] =
73
101
  useState(false);
102
+ const {enablePinForMe} = useVideoCall();
103
+ const {setDisableChatUids, disableChatUids} = useDisableChat();
104
+ const {getWhiteboardUid = () => 0} = useWhiteboard();
105
+
106
+ const viewWhiteboardLabel = useString(moreBtnViewWhiteboard)();
107
+ const removeFromLargeLabel = useString(moreBtnRemoveFromLarge)();
108
+ const viewInLargeLabel = useString(moreBtnViewInLarge)();
109
+ const pinToTopLabel = useString(moreBtnPinToTop)();
110
+ const removeFromTopLabel = useString(moreBtnRemoveFromTop)();
111
+ const messagePrivatelyLabel = useString(moreBtnMessagePrivately)();
112
+ const audioLabel = useString<boolean>(moreBtnAudio);
113
+ const videoLabel = useString<boolean>(moreBtnVideo);
114
+ const addAsPresenterLabel = useString(moreBtnAddAsPresenter)();
115
+ const removeAsPresenterLabel = useString(moreBtnRemoveAsPresenter)();
116
+ const changeNameLabel = useString(moreBtnChangeName)();
117
+ const stopScreenShareLabel = useString(moreBtnStopScreenShare)();
118
+ const removeScreenShareLabel = useString(moreBtnRemoveScreenShare)();
119
+ const removeFromRoomLabel = useString(moreBtnRemoveFromRoom)();
120
+
121
+ useEffect(() => {
122
+ customEvents.on('DisableChat', data => {
123
+ // for other users
124
+ const {disableChatUid, disableChat} = JSON.parse(data?.payload);
125
+ setDisableChatUids(prevState => {
126
+ // upate disable uids
127
+ return {
128
+ ...prevState,
129
+ [disableChatUid]: {
130
+ disableChat,
131
+ },
132
+ };
133
+ });
134
+ });
135
+ }, []);
74
136
 
75
137
  useEffect(() => {
76
138
  const items: ActionMenuItem[] = [];
@@ -87,26 +149,62 @@ export default function UserActionMenuOptionsOptions(
87
149
  audienceUids.indexOf(user.uid) !== -1
88
150
  )
89
151
  ) {
90
- items.push({
91
- disabled: activeUids.length === 1,
92
- icon: pinnedUid ? 'unpin-outlined' : 'pin-outlined',
93
- onHoverIcon: pinnedUid ? 'unpin-outlined' : 'pin-filled',
94
- iconColor: $config.SECONDARY_ACTION_COLOR,
95
- textColor: $config.SECONDARY_ACTION_COLOR,
96
- title: pinnedUid
97
- ? user.uid === pinnedUid
98
- ? 'Unpin'
99
- : 'Replace Pin'
100
- : 'Pin for me',
101
- callback: () => {
102
- setActionMenuVisible(false);
103
- dispatch({
104
- type: 'UserPin',
105
- value: [pinnedUid && user.uid === pinnedUid ? 0 : user.uid],
152
+ if (enablePinForMe) {
153
+ //if (pinnedUid !== user.uid) {
154
+ items.push({
155
+ //disabled: activeUids?.filter(i => !customContent[i])?.length === 1,
156
+ disabled: activeUids?.length === 1,
157
+ icon: pinnedUid ? 'unpin-outlined' : 'pin-outlined',
158
+ onHoverIcon: pinnedUid ? 'unpin-outlined' : 'pin-filled',
159
+ iconColor: $config.SECONDARY_ACTION_COLOR,
160
+ textColor: $config.SECONDARY_ACTION_COLOR,
161
+ title: pinnedUid
162
+ ? user.uid === pinnedUid
163
+ ? removeFromLargeLabel
164
+ : user.uid === getWhiteboardUid()
165
+ ? viewWhiteboardLabel
166
+ : viewInLargeLabel
167
+ : user.uid === getWhiteboardUid()
168
+ ? viewWhiteboardLabel
169
+ : viewInLargeLabel,
170
+ callback: () => {
171
+ setActionMenuVisible(false);
172
+ dispatch({
173
+ type: 'UserPin',
174
+ value: [pinnedUid && user.uid === pinnedUid ? 0 : user.uid],
175
+ });
176
+ setLayout(getPinnedLayoutName());
177
+ },
178
+ });
179
+ if (currentLayout === DefaultLayouts[1].name) {
180
+ items.push({
181
+ // disabled:
182
+ // activeUids?.filter(i => !customContent[i])?.length === 1,
183
+ disabled: activeUids?.length === 1,
184
+ icon: secondaryPinnedUid ? 'unpin-outlined' : 'pin-outlined',
185
+ onHoverIcon: secondaryPinnedUid ? 'unpin-outlined' : 'pin-filled',
186
+ iconColor: $config.SECONDARY_ACTION_COLOR,
187
+ textColor: $config.SECONDARY_ACTION_COLOR,
188
+ title: secondaryPinnedUid
189
+ ? user.uid === secondaryPinnedUid
190
+ ? removeFromTopLabel
191
+ : pinToTopLabel
192
+ : pinToTopLabel,
193
+ callback: () => {
194
+ setActionMenuVisible(false);
195
+ dispatch({
196
+ type: 'UserSecondaryPin',
197
+ value: [
198
+ secondaryPinnedUid && user.uid === secondaryPinnedUid
199
+ ? 0
200
+ : user.uid,
201
+ ],
202
+ });
203
+ },
106
204
  });
107
- setLayout(getPinnedLayoutName());
108
- },
109
- });
205
+ }
206
+ //}
207
+ }
110
208
  }
111
209
 
112
210
  /**
@@ -116,18 +214,19 @@ export default function UserActionMenuOptionsOptions(
116
214
  /**
117
215
  * Chat menu
118
216
  */
119
- items.push({
120
- icon: 'chat-outlined',
121
- onHoverIcon: 'chat-filled',
122
- iconColor: $config.SECONDARY_ACTION_COLOR,
123
- textColor: $config.SECONDARY_ACTION_COLOR,
124
- title: 'Message Privately',
125
- callback: () => {
126
- setActionMenuVisible(false);
127
- openPrivateChat(user.uid);
128
- },
129
- });
130
-
217
+ if ($config.CHAT) {
218
+ items.push({
219
+ icon: 'chat-outlined',
220
+ onHoverIcon: 'chat-filled',
221
+ iconColor: $config.SECONDARY_ACTION_COLOR,
222
+ textColor: $config.SECONDARY_ACTION_COLOR,
223
+ title: messagePrivatelyLabel,
224
+ callback: () => {
225
+ setActionMenuVisible(false);
226
+ openPrivateChat(user.uid);
227
+ },
228
+ });
229
+ }
131
230
  /**
132
231
  * Only host can see this menu item - request/mute - video/audio, promote to co host,demote to audience,remove form meeting
133
232
  */
@@ -152,7 +251,7 @@ export default function UserActionMenuOptionsOptions(
152
251
  onHoverIcon: user.audio ? 'mic-off-filled' : 'mic-on-filled',
153
252
  iconColor: $config.SECONDARY_ACTION_COLOR,
154
253
  textColor: $config.SECONDARY_ACTION_COLOR,
155
- title: user.audio ? 'Mute Audio' : 'Request Audio',
254
+ title: audioLabel(user.audio),
156
255
  callback: () => {
157
256
  setActionMenuVisible(false);
158
257
  user.audio
@@ -166,7 +265,7 @@ export default function UserActionMenuOptionsOptions(
166
265
  onHoverIcon: user.video ? 'video-off-filled' : 'video-on-filled',
167
266
  iconColor: $config.SECONDARY_ACTION_COLOR,
168
267
  textColor: $config.SECONDARY_ACTION_COLOR,
169
- title: user.video ? 'Mute Video' : 'Request Video',
268
+ title: videoLabel(user.video),
170
269
  callback: () => {
171
270
  setActionMenuVisible(false);
172
271
  user.video
@@ -190,7 +289,7 @@ export default function UserActionMenuOptionsOptions(
190
289
  onHoverIcon: 'promote-filled',
191
290
  iconColor: $config.SECONDARY_ACTION_COLOR,
192
291
  textColor: $config.SECONDARY_ACTION_COLOR,
193
- title: 'Add as Presenter',
292
+ title: addAsPresenterLabel,
194
293
  callback: () => {
195
294
  setActionMenuVisible(false);
196
295
  promoteAudienceAsCoHost(user.uid);
@@ -208,7 +307,7 @@ export default function UserActionMenuOptionsOptions(
208
307
  onHoverIcon: 'demote-filled',
209
308
  iconColor: $config.SECONDARY_ACTION_COLOR,
210
309
  textColor: $config.SECONDARY_ACTION_COLOR,
211
- title: 'Remove as Presenter',
310
+ title: removeAsPresenterLabel,
212
311
  callback: () => {
213
312
  setActionMenuVisible(false);
214
313
  events.send(
@@ -226,7 +325,7 @@ export default function UserActionMenuOptionsOptions(
226
325
  icon: 'remove-meeting',
227
326
  iconColor: $config.SEMANTIC_ERROR,
228
327
  textColor: $config.SEMANTIC_ERROR,
229
- title: 'Remove From Room',
328
+ title: removeFromRoomLabel,
230
329
  callback: () => {
231
330
  setActionMenuVisible(false);
232
331
  setRemoveMeetingPopupVisible(true);
@@ -244,9 +343,9 @@ export default function UserActionMenuOptionsOptions(
244
343
  onHoverIcon: 'pencil-filled',
245
344
  iconColor: $config.SECONDARY_ACTION_COLOR,
246
345
  textColor: $config.SECONDARY_ACTION_COLOR,
247
- title: 'Change Name',
346
+ title: changeNameLabel,
248
347
  callback: () => {
249
- setFocus((prevState) => {
348
+ setFocus(prevState => {
250
349
  return {
251
350
  ...prevState,
252
351
  editName: true,
@@ -269,8 +368,8 @@ export default function UserActionMenuOptionsOptions(
269
368
  textColor: $config.SEMANTIC_ERROR,
270
369
  title:
271
370
  localuid === user?.parentUid
272
- ? 'Stop Screenshare'
273
- : 'Remove Screenshare',
371
+ ? stopScreenShareLabel
372
+ : removeScreenShareLabel,
274
373
  callback: () => {
275
374
  setActionMenuVisible(false);
276
375
  //for local user directly stop the screenshare
@@ -285,11 +384,20 @@ export default function UserActionMenuOptionsOptions(
285
384
  });
286
385
  }
287
386
  setActionMenuitems(items);
288
- }, [pinnedUid, isHost, raiseHandList, hostUids, user]);
387
+ }, [
388
+ pinnedUid,
389
+ isHost,
390
+ raiseHandList,
391
+ hostUids,
392
+ user,
393
+ disableChatUids,
394
+ secondaryPinnedUid,
395
+ currentLayout,
396
+ ]);
289
397
 
290
398
  const {width: globalWidth, height: globalHeight} = useWindowDimensions();
291
399
  const [modalPosition, setModalPosition] = useState({});
292
-
400
+ const toastlabel = useString(userRemovedFromTheRoomToastHeading);
293
401
  useEffect(() => {
294
402
  if (actionMenuVisible) {
295
403
  //getting btnRef x,y
@@ -321,7 +429,7 @@ export default function UserActionMenuOptionsOptions(
321
429
  <>
322
430
  {isHost ? (
323
431
  <RemoteMutePopup
324
- type="audio"
432
+ type={I18nMuteType.audio}
325
433
  actionMenuVisible={showAudioMuteModal}
326
434
  setActionMenuVisible={setShowAudioMuteModal}
327
435
  name={props?.user.name}
@@ -336,7 +444,7 @@ export default function UserActionMenuOptionsOptions(
336
444
  )}
337
445
  {isHost ? (
338
446
  <RemoteMutePopup
339
- type="video"
447
+ type={I18nMuteType.video}
340
448
  actionMenuVisible={showVideoMuteModal}
341
449
  setActionMenuVisible={setShowVideoMuteModal}
342
450
  name={props?.user.name}
@@ -370,13 +478,13 @@ export default function UserActionMenuOptionsOptions(
370
478
  username={user.name}
371
479
  removeUserFromMeeting={() => {
372
480
  Toast.show({
481
+ leadingIconName: 'info',
373
482
  type: 'info',
374
- text1: `The system will remove ${trimText(
375
- user.name,
376
- )} from this call after 5 secs.`,
483
+ text1: toastlabel(trimText(user.name)),
377
484
  visibilityTime: 5000,
378
485
  primaryBtn: null,
379
486
  secondaryBtn: null,
487
+ leadingIcon: null,
380
488
  });
381
489
  endRemoteCall(user.uid);
382
490
  }}
@@ -0,0 +1,74 @@
1
+ import {StyleSheet, Text, View} from 'react-native';
2
+ import React, {useState} from 'react';
3
+ import {useContent} from 'customization-api';
4
+ import {filterObject} from '../../utils';
5
+ import Participant from './Participant';
6
+ import ParticipantSectionTitle from './ParticipantSectionTitle';
7
+ import {useWaitingRoomContext} from '../contexts/WaitingRoomContext';
8
+ import {useString} from '../../utils/useString';
9
+ import {
10
+ peoplePanelWaitingText,
11
+ peoplePanelWantToJoinText,
12
+ videoRoomUserFallbackText,
13
+ } from '../../language/default-labels/videoCallScreenLabels';
14
+
15
+ const WaitingRoomParticipants = props => {
16
+ const wanttojoinLabel = useString(peoplePanelWantToJoinText)();
17
+ const waitingLabel = useString(peoplePanelWaitingText)();
18
+ const {defaultContent} = useContent();
19
+ const [showWaitingRoomSection, setShowWaitingRoomSection] = useState(true);
20
+ const {isMobile = false, handleClose, updateActionSheet} = props;
21
+ const WaitingRoomParticipantsLabel = $config.EVENT_MODE
22
+ ? wanttojoinLabel
23
+ : waitingLabel;
24
+
25
+ const videoRoomUserFallbackTextLabel = useString(videoRoomUserFallbackText)();
26
+
27
+ const getParticipantName = uid => {
28
+ return defaultContent[uid]?.name || videoRoomUserFallbackTextLabel;
29
+ };
30
+
31
+ const getScreenShareUid = uid => {
32
+ return defaultContent[uid]?.screenUid || '';
33
+ };
34
+
35
+ const {waitingRoomUids} = useWaitingRoomContext();
36
+
37
+ return (
38
+ <>
39
+ <ParticipantSectionTitle
40
+ title={WaitingRoomParticipantsLabel}
41
+ count={waitingRoomUids.length}
42
+ isOpen={showWaitingRoomSection}
43
+ onPress={() => setShowWaitingRoomSection(!showWaitingRoomSection)}
44
+ />
45
+ {showWaitingRoomSection ? (
46
+ <View>
47
+ {waitingRoomUids.map(uid => (
48
+ <Participant
49
+ isLocal={false}
50
+ name={getParticipantName(uid)}
51
+ user={defaultContent[uid]}
52
+ showControls={false}
53
+ isAudienceUser={true}
54
+ isHostUser={false}
55
+ key={uid}
56
+ isMobile={isMobile}
57
+ handleClose={handleClose}
58
+ updateActionSheet={updateActionSheet}
59
+ waitingRoomUser={true}
60
+ uid={uid}
61
+ screenUid={getScreenShareUid(uid)}
62
+ />
63
+ ))}
64
+ </View>
65
+ ) : (
66
+ <></>
67
+ )}
68
+ </>
69
+ );
70
+ };
71
+
72
+ export default WaitingRoomParticipants;
73
+
74
+ const styles = StyleSheet.create({});
@@ -9,7 +9,7 @@
9
9
  information visit https://appbuilder.agora.io.
10
10
  *********************************************
11
11
  */
12
- import React, {useEffect} from 'react';
12
+ import React, {useContext, useEffect} from 'react';
13
13
  import {StyleSheet, View} from 'react-native';
14
14
  import {
15
15
  SHARE_LINK_CONTENT_TYPE,
@@ -21,70 +21,135 @@ import PrimaryButton from '../../atoms/PrimaryButton';
21
21
  import TertiaryButton from '../../atoms/TertiaryButton';
22
22
  import ThemeConfig from '../../theme';
23
23
  import {CopyMeetingInfo} from '../../components/Share';
24
- import {isMobileUA, useIsDesktop} from '../../utils/common';
24
+ import {
25
+ isMobileUA,
26
+ isValidReactComponent,
27
+ useIsDesktop,
28
+ } from '../../utils/common';
25
29
  import {useVideoCall} from '../useVideoCall';
26
30
  import {useParams} from '../Router';
27
31
  import useGetMeetingPhrase from '../../utils/useGetMeetingPhrase';
32
+ import {ErrorContext} from '../common';
33
+ import {useCustomization} from 'customization-implementation';
34
+ import {useString} from '../../utils/useString';
35
+ import {
36
+ invitePopupPrimaryBtnText,
37
+ invitePopupHeading,
38
+ } from '../../language/default-labels/videoCallScreenLabels';
39
+ import {cancelText} from '../../language/default-labels/commonLabels';
28
40
 
29
41
  const InvitePopup = () => {
30
42
  const {setShowInvitePopup, showInvitePopup} = useVideoCall();
31
43
  const isDesktop = useIsDesktop();
32
44
  const {copyShareLinkToClipboard} = useShareLink();
33
45
  const {phrase} = useParams<{phrase: string}>();
46
+ const {setGlobalErrorMessage} = useContext(ErrorContext);
34
47
  const getMeeting = useGetMeetingPhrase();
35
48
  useEffect(() => {
36
- getMeeting(phrase);
49
+ getMeeting(phrase).catch(error => {
50
+ setGlobalErrorMessage(error);
51
+ });
37
52
  }, [phrase]);
53
+
54
+ const {InvitePopupContent, InvitePopupTitle} = useCustomization(data => {
55
+ let components: {
56
+ InvitePopupContent?: React.ComponentType;
57
+ InvitePopupTitle?: string;
58
+ } = {
59
+ InvitePopupContent: null,
60
+ InvitePopupTitle: null,
61
+ };
62
+ if (
63
+ data?.components?.videoCall &&
64
+ typeof data?.components?.videoCall === 'object'
65
+ ) {
66
+ if (
67
+ data?.components?.videoCall?.invitePopup?.renderComponent &&
68
+ typeof data?.components?.videoCall?.invitePopup?.renderComponent !==
69
+ 'object' &&
70
+ isValidReactComponent(
71
+ data?.components?.videoCall?.invitePopup?.renderComponent,
72
+ )
73
+ ) {
74
+ components.InvitePopupContent =
75
+ data?.components?.videoCall.invitePopup.renderComponent;
76
+ }
77
+ if (data?.components?.videoCall?.invitePopup?.title) {
78
+ components.InvitePopupTitle =
79
+ data?.components?.videoCall?.invitePopup.title;
80
+ }
81
+ }
82
+ return components;
83
+ });
84
+ const inviteOtherToJoinRoomInfo = useString(invitePopupHeading)();
85
+ const copyInvitationButton = useString(invitePopupPrimaryBtnText)();
86
+ const cancelLabel = useString(cancelText)();
38
87
  return (
39
88
  <Popup
40
89
  modalVisible={showInvitePopup}
41
90
  setModalVisible={setShowInvitePopup}
42
- title="Invite others to join this room"
91
+ title={InvitePopupTitle ? InvitePopupTitle : inviteOtherToJoinRoomInfo}
43
92
  showCloseIcon={true}
44
93
  containerStyle={{alignItems: isDesktop('popup') ? 'center' : 'stretch'}}
45
94
  contentContainerStyle={style.contentContainer}>
46
- <CopyMeetingInfo showSubLabel={false} />
47
- <View
48
- style={
49
- isDesktop('popup') ? style.btnContainer : style.btnContainerMobile
50
- }>
51
- {isDesktop('popup') ? (
52
- <View style={{flex: 1}}>
53
- <TertiaryButton
54
- text={'CANCEL'}
55
- textStyle={style.btnText}
56
- containerStyle={{
57
- width: '100%',
58
- height: 48,
59
- paddingVertical: 12,
60
- paddingHorizontal: 12,
61
- borderRadius: ThemeConfig.BorderRadius.medium,
62
- }}
63
- onPress={() => {
64
- setShowInvitePopup(false);
65
- }}
66
- />
95
+ {InvitePopupContent ? (
96
+ <>
97
+ <Spacer size={10} />
98
+ <InvitePopupContent />
99
+ <Spacer size={10} />
100
+ </>
101
+ ) : (
102
+ <>
103
+ <CopyMeetingInfo showSubLabel={false} />
104
+ <View
105
+ style={
106
+ isDesktop('popup') ? style.btnContainer : style.btnContainerMobile
107
+ }>
108
+ {isDesktop('popup') ? (
109
+ <View style={{flex: 1}}>
110
+ <TertiaryButton
111
+ text={cancelLabel}
112
+ textStyle={style.btnText}
113
+ containerStyle={{
114
+ width: '100%',
115
+ height: 48,
116
+ paddingVertical: 12,
117
+ paddingHorizontal: 12,
118
+ borderRadius: ThemeConfig.BorderRadius.medium,
119
+ }}
120
+ onPress={() => {
121
+ setShowInvitePopup(false);
122
+ }}
123
+ />
124
+ </View>
125
+ ) : null}
126
+ {isDesktop('popup') ? (
127
+ <Spacer size={10} horizontal={true} />
128
+ ) : (
129
+ <></>
130
+ )}
131
+ <View style={{flex: 1}}>
132
+ <PrimaryButton
133
+ textStyle={style.btnText}
134
+ containerStyle={{
135
+ minWidth: 'auto',
136
+ width: '100%',
137
+ borderRadius: ThemeConfig.BorderRadius.medium,
138
+ height: 48,
139
+ paddingVertical: 12,
140
+ paddingHorizontal: 12,
141
+ }}
142
+ onPress={() => {
143
+ copyShareLinkToClipboard(
144
+ SHARE_LINK_CONTENT_TYPE.MEETING_INVITE,
145
+ );
146
+ }}
147
+ text={copyInvitationButton}
148
+ />
149
+ </View>
67
150
  </View>
68
- ) : null}
69
- {isDesktop('popup') ? <Spacer size={10} horizontal={true} /> : <></>}
70
- <View style={{flex: 1}}>
71
- <PrimaryButton
72
- textStyle={style.btnText}
73
- containerStyle={{
74
- minWidth: 'auto',
75
- width: '100%',
76
- borderRadius: ThemeConfig.BorderRadius.medium,
77
- height: 48,
78
- paddingVertical: 12,
79
- paddingHorizontal: 12,
80
- }}
81
- onPress={() => {
82
- copyShareLinkToClipboard(SHARE_LINK_CONTENT_TYPE.MEETING_INVITE);
83
- }}
84
- text={'COPY INVITATION'}
85
- />
86
- </View>
87
- </View>
151
+ </>
152
+ )}
88
153
  </Popup>
89
154
  );
90
155
  };