agora-appbuilder-core 4.0.0 → 4.0.1

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 (475) hide show
  1. package/package.json +3 -3
  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 +28491 -23647
  8. package/template/_prettierrc.js +2 -2
  9. package/template/agora-rn-uikit/.eslintrc.js +5 -0
  10. package/template/agora-rn-uikit/package.json +14 -14
  11. package/template/agora-rn-uikit/src/AgoraUIKit.tsx +6 -6
  12. package/template/agora-rn-uikit/src/Contexts/ContentContext.tsx +10 -0
  13. package/template/agora-rn-uikit/src/Contexts/DispatchContext.tsx +22 -0
  14. package/template/agora-rn-uikit/src/Contexts/LocalUserContext.tsx +6 -6
  15. package/template/agora-rn-uikit/src/Contexts/PropsContext.tsx +79 -38
  16. package/template/agora-rn-uikit/src/Contexts/RtcContext.tsx +26 -17
  17. package/template/agora-rn-uikit/src/Controls/BtnTemplate.tsx +1 -0
  18. package/template/agora-rn-uikit/src/Controls/Icons.ts +45 -0
  19. package/template/agora-rn-uikit/src/Controls/Local/EndCall.tsx +6 -4
  20. package/template/agora-rn-uikit/src/Controls/Local/FullScreen.tsx +3 -1
  21. package/template/agora-rn-uikit/src/Controls/Local/LocalAudioMute.tsx +5 -2
  22. package/template/agora-rn-uikit/src/Controls/Local/LocalVideoMute.tsx +5 -2
  23. package/template/agora-rn-uikit/src/Controls/Local/Recording.tsx +0 -2
  24. package/template/agora-rn-uikit/src/Controls/Local/SwitchCamera.tsx +7 -6
  25. package/template/agora-rn-uikit/src/Controls/LocalControls.tsx +5 -5
  26. package/template/agora-rn-uikit/src/Controls/Remote/RemoteAudioMute.tsx +5 -4
  27. package/template/agora-rn-uikit/src/Controls/Remote/RemoteSwap.tsx +3 -1
  28. package/template/agora-rn-uikit/src/Controls/Remote/RemoteVideoMute.tsx +5 -4
  29. package/template/agora-rn-uikit/src/Controls/RemoteControls.tsx +2 -2
  30. package/template/agora-rn-uikit/src/Reducer/ActiveSpeaker.ts +30 -0
  31. package/template/agora-rn-uikit/src/Reducer/LocalMuteAudio.ts +8 -7
  32. package/template/agora-rn-uikit/src/Reducer/LocalMuteVideo.ts +8 -7
  33. package/template/agora-rn-uikit/src/Reducer/LocalPermissionState.ts +6 -7
  34. package/template/agora-rn-uikit/src/Reducer/RemoteAudioStateChanged.ts +7 -8
  35. package/template/agora-rn-uikit/src/Reducer/RemoteVideoStateChanged.ts +9 -9
  36. package/template/agora-rn-uikit/src/Reducer/UpdateDualStreamMode.ts +7 -8
  37. package/template/agora-rn-uikit/src/Reducer/UserJoined.ts +14 -13
  38. package/template/agora-rn-uikit/src/Reducer/UserMuteRemoteAudio.ts +6 -7
  39. package/template/agora-rn-uikit/src/Reducer/UserMuteRemoteVideo.ts +6 -7
  40. package/template/agora-rn-uikit/src/Reducer/UserOffline.ts +5 -6
  41. package/template/agora-rn-uikit/src/Reducer/UserPin.ts +20 -3
  42. package/template/agora-rn-uikit/src/Reducer/UserSecondaryPin.ts +23 -0
  43. package/template/agora-rn-uikit/src/Reducer/index.ts +2 -1
  44. package/template/agora-rn-uikit/src/Rtc/Create.tsx +138 -100
  45. package/template/agora-rn-uikit/src/Rtc/Join.tsx +55 -28
  46. package/template/agora-rn-uikit/src/RtcConfigure.tsx +177 -77
  47. package/template/agora-rn-uikit/src/Utils/isBotUser.ts +15 -0
  48. package/template/agora-rn-uikit/src/Utils/quality.tsx +8 -0
  49. package/template/agora-rn-uikit/src/Views/MaxVideoView.native.tsx +56 -12
  50. package/template/agora-rn-uikit/src/Views/MaxVideoView.tsx +47 -17
  51. package/template/agora-rn-uikit/src/Views/MinVideoView.tsx +19 -11
  52. package/template/agora-rn-uikit/src/index.ts +15 -9
  53. package/template/android/app/build.gradle +59 -156
  54. package/template/android/app/src/debug/AndroidManifest.xml +6 -1
  55. package/template/android/app/src/debug/java/com/helloworld/ReactNativeFlipper.java +7 -4
  56. package/template/android/app/src/main/AndroidManifest.xml +6 -19
  57. package/template/android/app/src/main/assets/fonts/icomoon.ttf +0 -0
  58. package/template/android/app/src/main/java/com/helloworld/MainActivity.java +17 -0
  59. package/template/android/app/src/main/java/com/helloworld/MainApplication.java +22 -36
  60. package/template/android/app/src/main/java/com/helloworld/SSLPinningFactory.java +30 -0
  61. package/template/android/app/src/main/res/values/strings.xml +3 -0
  62. package/template/android/app/src/release/java/com/helloworld/ReactNativeFlipper.java +20 -0
  63. package/template/android/build.gradle +19 -33
  64. package/template/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  65. package/template/android/gradle/wrapper/gradle-wrapper.properties +3 -2
  66. package/template/android/gradle.properties +18 -4
  67. package/template/android/gradlew +165 -104
  68. package/template/android/gradlew.bat +12 -23
  69. package/template/android/settings.gradle +1 -0
  70. package/template/bridge/rtc/webNg/RtcEngine.ts +200 -70
  71. package/template/bridge/rtc/webNg/{SurfaceView.tsx → RtcSurfaceView.tsx} +20 -26
  72. package/template/bridge/rtc/webNg/Types.ts +20 -5
  73. package/template/bridge/rtc/webNg/index.ts +81 -14
  74. package/template/bridge/rtm/web/index.ts +5 -3
  75. package/template/configTransform.js +16 -1
  76. package/template/customization-api/action-library.ts +4 -16
  77. package/template/customization-api/app-state.ts +15 -8
  78. package/template/customization-api/customEvents.ts +7 -2
  79. package/template/customization-api/customize.ts +1 -1
  80. package/template/customization-api/index.ts +4 -0
  81. package/template/customization-api/sub-components.ts +17 -16
  82. package/template/customization-api/temp.ts +52 -0
  83. package/template/customization-api/typeDefinition.ts +34 -46
  84. package/template/customization-api/types.ts +26 -0
  85. package/template/customization-api/utils.ts +4 -0
  86. package/template/customization-implementation/createHook.ts +24 -6
  87. package/template/customization-implementation/index.ts +1 -2
  88. package/template/customization-implementation/useCustomization.tsx +5 -7
  89. package/template/defaultConfig.js +72 -0
  90. package/template/global.d.ts +14 -1
  91. package/template/index.js +1 -4
  92. package/template/index.web.js +0 -5
  93. package/template/index.wsdk.tsx +1 -12
  94. package/template/ios/.xcode.env +11 -0
  95. package/template/ios/HelloWorld/AppDelegate.h +2 -4
  96. package/template/ios/HelloWorld/AppDelegate.mm +64 -0
  97. package/template/ios/HelloWorld/HelloWorldDebug.entitlements +10 -0
  98. package/template/ios/HelloWorld/Info.plist +8 -2
  99. package/template/ios/HelloWorld/main.m +2 -1
  100. package/template/ios/HelloWorld.xcodeproj/project.pbxproj +533 -17
  101. package/template/ios/HelloWorld.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  102. package/template/ios/HelloWorld.xcworkspace/contents.xcworkspacedata +10 -0
  103. package/template/ios/HelloWorld.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  104. package/template/ios/HelloWorldTests/HelloWorldTests.m +14 -13
  105. package/template/ios/HelloWorldTests/Info.plist +2 -2
  106. package/template/ios/Podfile +54 -20
  107. package/template/ios/Podfile.lock +809 -0
  108. package/template/ios/ScreenSharing/Info.plist +15 -0
  109. package/template/ios/ScreenSharing/SampleHandler.h +9 -0
  110. package/template/ios/ScreenSharing/SampleHandler.m +70 -0
  111. package/template/jest.config.js +4 -0
  112. package/template/metro.config.js +7 -32
  113. package/template/package.json +53 -39
  114. package/template/react-native-toast-message/index.d.ts +3 -1
  115. package/template/react-native-toast-message/index.js +1 -0
  116. package/template/react-native-toast-message/src/components/base/index.js +20 -32
  117. package/template/react-native-toast-message/src/components/base/styles.js +18 -21
  118. package/template/react-native-toast-message/src/components/checkbox.js +24 -19
  119. package/template/react-native-toast-message/src/index.js +3 -1
  120. package/template/react-native-toast-message/src/index.sdk.tsx +4 -1
  121. package/template/src/App.tsx +53 -69
  122. package/template/src/AppRoutes.tsx +90 -0
  123. package/template/src/AppWrapper.tsx +42 -25
  124. package/template/src/SDKAppWrapper.tsx +89 -57
  125. package/template/src/app-state/useLocalUserInfo.ts +3 -3
  126. package/template/src/app-state/useNoiseSupression.native.tsx +67 -0
  127. package/template/src/app-state/useNoiseSupression.tsx +107 -0
  128. package/template/src/app-state/useVideoQuality.tsx +39 -0
  129. package/template/src/assets/font-styles.css +175 -3
  130. package/template/src/assets/fonts/icomoon.ttf +0 -0
  131. package/template/src/assets/selection.json +1 -1
  132. package/template/src/atoms/ActionMenu.tsx +50 -11
  133. package/template/src/atoms/Avatar.tsx +51 -0
  134. package/template/src/atoms/Card.tsx +21 -8
  135. package/template/src/atoms/Carousel.native.tsx +105 -0
  136. package/template/src/atoms/Carousel.tsx +103 -0
  137. package/template/src/atoms/Checkbox.tsx +98 -0
  138. package/template/src/atoms/CircularProgress.tsx +0 -1
  139. package/template/src/atoms/ClipboardIconButton.tsx +91 -0
  140. package/template/src/atoms/CustomIcon.tsx +46 -0
  141. package/template/src/atoms/DropDownMulti.tsx +349 -0
  142. package/template/src/atoms/Dropdown.tsx +3 -3
  143. package/template/src/atoms/IconButton.tsx +52 -9
  144. package/template/src/atoms/ImageIcon.tsx +18 -5
  145. package/template/src/atoms/InlineNotification.tsx +81 -0
  146. package/template/src/atoms/InviteInfo.tsx +4 -4
  147. package/template/src/atoms/MeetingLink.tsx +160 -0
  148. package/template/src/atoms/ParticipantsCount.tsx +20 -8
  149. package/template/src/atoms/Popup.tsx +49 -27
  150. package/template/src/atoms/PrimaryButton.tsx +19 -5
  151. package/template/src/atoms/RecordingInfo.tsx +8 -5
  152. package/template/src/atoms/SecondaryButton.tsx +2 -0
  153. package/template/src/atoms/Spacer.tsx +1 -0
  154. package/template/src/atoms/TertiaryButton.tsx +35 -5
  155. package/template/src/atoms/TextInput.tsx +2 -1
  156. package/template/src/atoms/Toolbar.tsx +102 -0
  157. package/template/src/atoms/ToolbarItem.tsx +85 -0
  158. package/template/src/atoms/ToolbarMenu.tsx +40 -0
  159. package/template/src/atoms/ToolbarMenuItem.tsx +104 -0
  160. package/template/src/atoms/ToolbarPreset.tsx +71 -0
  161. package/template/src/atoms/Tooltip.tsx +30 -13
  162. package/template/src/atoms/pagination/Pagination.tsx +127 -0
  163. package/template/src/atoms/pagination/usePagination.tsx +88 -0
  164. package/template/src/auth/AuthProvider.tsx +500 -0
  165. package/template/src/auth/AuthRoute.tsx +94 -0
  166. package/template/src/auth/IDPAuth.electron.tsx +31 -0
  167. package/template/src/auth/IDPAuth.tsx +67 -0
  168. package/template/src/auth/IDPLogoutComponent.tsx +158 -0
  169. package/template/src/auth/UserCancelPopup.tsx +115 -0
  170. package/template/src/auth/config.ts +52 -0
  171. package/template/src/auth/openIDPURL.electron.tsx +39 -0
  172. package/template/src/auth/openIDPURL.native.tsx +51 -0
  173. package/template/src/auth/openIDPURL.tsx +20 -0
  174. package/template/src/auth/useIDPAuth.electron.tsx +65 -0
  175. package/template/src/auth/useIDPAuth.native.tsx +70 -0
  176. package/template/src/auth/useIDPAuth.tsx +63 -0
  177. package/template/src/auth/useTokenAuth.tsx +194 -0
  178. package/template/src/components/Chat.tsx +92 -72
  179. package/template/src/components/ChatContext.ts +2 -0
  180. package/template/src/components/ColorConfigure.tsx +0 -1
  181. package/template/src/components/CommonStyles.ts +9 -2
  182. package/template/src/components/Controls.tsx +914 -182
  183. package/template/src/components/Controls1.native.tsx +9 -5
  184. package/template/src/components/DeviceConfigure.native.tsx +2 -2
  185. package/template/src/components/DeviceConfigure.tsx +400 -149
  186. package/template/src/components/DeviceContext.tsx +2 -0
  187. package/template/src/components/EventsConfigure.tsx +722 -82
  188. package/template/src/components/GraphQLProvider.tsx +82 -39
  189. package/template/src/components/GridVideo.tsx +30 -16
  190. package/template/src/components/HostControlView.tsx +11 -14
  191. package/template/src/components/JoinPhrase.tsx +0 -1
  192. package/template/src/components/Leftbar.tsx +110 -0
  193. package/template/src/components/Navbar.tsx +305 -147
  194. package/template/src/components/NavbarMobile.tsx +119 -0
  195. package/template/src/components/Navigation.native.tsx +1 -15
  196. package/template/src/components/{Settings.native.tsx → Navigation.sdk.tsx} +17 -6
  197. package/template/src/components/NetworkQualityContext.tsx +12 -6
  198. package/template/src/components/ParticipantsView.tsx +63 -56
  199. package/template/src/components/PinnedVideo.tsx +191 -119
  200. package/template/src/components/Precall.native.tsx +177 -72
  201. package/template/src/components/Precall.tsx +247 -78
  202. package/template/src/components/RTMConfigure.tsx +205 -67
  203. package/template/src/components/Rightbar.tsx +112 -0
  204. package/template/src/components/Router.electron.ts +1 -0
  205. package/template/src/components/Router.native.ts +1 -0
  206. package/template/src/components/Router.sdk.ts +1 -0
  207. package/template/src/components/Router.ts +1 -0
  208. package/template/src/components/SdkApiContext.tsx +313 -0
  209. package/template/src/components/SdkMuteToggleListener.tsx +88 -0
  210. package/template/src/components/SessionContext.tsx +0 -1
  211. package/template/src/components/Settings.tsx +33 -4
  212. package/template/src/components/SettingsView.tsx +44 -9
  213. package/template/src/components/Share.tsx +152 -74
  214. package/template/src/components/StorageContext.tsx +23 -6
  215. package/template/src/components/ToastComponent.tsx +10 -1
  216. package/template/src/components/WhiteboardLayout.tsx +291 -0
  217. package/template/src/components/chat-messages/useChatMessages.tsx +454 -239
  218. package/template/src/components/chat-ui/{useChatUIControl.tsx → useChatUIControls.tsx} +29 -29
  219. package/template/src/components/common/Error.tsx +2 -0
  220. package/template/src/components/common/Logo.tsx +2 -2
  221. package/template/src/components/contexts/LiveStreamDataContext.tsx +13 -12
  222. package/template/src/components/contexts/ScreenShareContext.tsx +15 -1
  223. package/template/src/components/contexts/VideoMeetingDataContext.tsx +6 -6
  224. package/template/src/components/contexts/WaitingRoomContext.tsx +50 -0
  225. package/template/src/components/contexts/WhiteboardContext.tsx +54 -54
  226. package/template/src/components/disable-chat/useDisableChat.tsx +32 -0
  227. package/template/src/components/livestream/LiveStreamContext.tsx +314 -220
  228. package/template/src/components/livestream/Types.ts +36 -20
  229. package/template/src/components/livestream/views/LiveStreamAttendeeLandingTile.tsx +295 -0
  230. package/template/src/components/livestream/views/LiveStreamControls.tsx +5 -10
  231. package/template/src/components/meeting-info-invite/MeetingInfo.tsx +82 -0
  232. package/template/src/components/meeting-info-invite/MeetingInfoCardHeader.tsx +86 -0
  233. package/template/src/components/meeting-info-invite/MeetingInfoGridTile.tsx +218 -0
  234. package/template/src/components/meeting-info-invite/MeetingInfoLinks.tsx +122 -0
  235. package/template/src/components/participants/AllAudienceParticipants.tsx +19 -20
  236. package/template/src/components/participants/AllHostParticipants.tsx +20 -19
  237. package/template/src/components/participants/Participant.tsx +45 -16
  238. package/template/src/components/participants/ParticipantSectionTitle.tsx +5 -2
  239. package/template/src/components/participants/ScreenshareParticipants.tsx +17 -19
  240. package/template/src/components/participants/UserActionMenuOptions.tsx +173 -62
  241. package/template/src/components/participants/WaitingRoomParticipants.tsx +74 -0
  242. package/template/src/components/popups/InvitePopup.tsx +110 -45
  243. package/template/src/components/popups/StartScreenSharePopup.native.tsx +182 -0
  244. package/template/src/components/popups/StartScreenSharePopup.tsx +6 -0
  245. package/template/src/components/popups/StopRecordingPopup.tsx +11 -5
  246. package/template/src/components/popups/StopScreenSharePopup.native.tsx +135 -0
  247. package/template/src/components/popups/StopScreenSharePopup.tsx +6 -0
  248. package/template/src/components/popups/WhiteboardClearAllPopup.tsx +123 -0
  249. package/template/src/components/precall/LocalMute.tsx +69 -45
  250. package/template/src/components/precall/PermissionHelper.tsx +56 -28
  251. package/template/src/components/precall/PreCallSettings.tsx +1 -0
  252. package/template/src/components/precall/VideoFallback.tsx +173 -0
  253. package/template/src/components/precall/VideoPreview.native.tsx +19 -53
  254. package/template/src/components/precall/VideoPreview.tsx +29 -164
  255. package/template/src/components/precall/index.tsx +2 -0
  256. package/template/src/components/precall/joinCallBtn.native.tsx +12 -5
  257. package/template/src/components/precall/joinCallBtn.tsx +13 -4
  258. package/template/src/components/precall/joinWaitingRoomBtn.native.tsx +210 -0
  259. package/template/src/components/precall/joinWaitingRoomBtn.tsx +250 -0
  260. package/template/src/components/precall/meetingTitle.tsx +37 -11
  261. package/template/src/components/precall/selectDevice.tsx +5 -5
  262. package/template/src/components/precall/textInput.tsx +17 -19
  263. package/template/src/components/precall/usePreCall.tsx +33 -1
  264. package/template/src/components/recording-bot/RecordingBotRoute.tsx +42 -0
  265. package/template/src/components/recordings/RecordingsDateTable.tsx +62 -0
  266. package/template/src/components/recordings/RecordingsModal.tsx +135 -0
  267. package/template/src/components/recordings/ViewRecordingsModal.tsx +51 -0
  268. package/template/src/components/recordings/recording-table.tsx +154 -0
  269. package/template/src/components/recordings/style.ts +183 -0
  270. package/template/src/components/recordings/utils.ts +80 -0
  271. package/template/src/components/room-info/useRoomInfo.tsx +128 -0
  272. package/template/src/components/{meeting-info/useSetMeetingInfo.tsx → room-info/useSetRoomInfo.tsx} +12 -12
  273. package/template/src/components/useShareLink.tsx +28 -63
  274. package/template/src/components/useUserPreference.tsx +82 -16
  275. package/template/src/components/useVideoCall.tsx +93 -1
  276. package/template/src/components/virtual-background/VBButton.tsx +64 -0
  277. package/template/src/components/virtual-background/VBCard.native.tsx +282 -0
  278. package/template/src/components/virtual-background/VBCard.tsx +272 -0
  279. package/template/src/components/virtual-background/VBPanel.tsx +279 -0
  280. package/template/src/components/virtual-background/VButils.native.ts +37 -0
  281. package/template/src/components/virtual-background/VButils.ts +104 -0
  282. package/template/src/components/virtual-background/VideoPreview.native.tsx +43 -0
  283. package/template/src/components/virtual-background/VideoPreview.tsx +106 -0
  284. package/template/src/components/virtual-background/imagePaths.ts +87 -0
  285. package/template/src/components/virtual-background/images/beachImageBase64.ts +1 -0
  286. package/template/src/components/virtual-background/images/bedroomImageBase64.ts +1 -0
  287. package/template/src/components/virtual-background/images/bookImageBase64.ts +1 -0
  288. package/template/src/components/virtual-background/images/earthImageBase64.ts +1 -0
  289. package/template/src/components/virtual-background/images/index.ts +37 -0
  290. package/template/src/components/virtual-background/images/lampImageBase64.ts +1 -0
  291. package/template/src/components/virtual-background/images/mountainsImageBase64.ts +1 -0
  292. package/template/src/components/virtual-background/images/office1ImageBase64.ts +1 -0
  293. package/template/src/components/virtual-background/images/officeImageBase64.ts +1 -0
  294. package/template/src/components/virtual-background/images/plantsImageBase64.ts +1 -0
  295. package/template/src/components/virtual-background/images/skyImageBase64.ts +1 -0
  296. package/template/src/components/virtual-background/images/wallImageBase64.ts +1 -0
  297. package/template/src/components/virtual-background/useVB.native.tsx +185 -0
  298. package/template/src/components/virtual-background/useVB.tsx +267 -0
  299. package/template/src/components/whiteboard/StrokeWidthTool.tsx +137 -0
  300. package/template/src/components/whiteboard/WhiteboardButton.tsx +93 -0
  301. package/template/src/components/whiteboard/WhiteboardCanvas.tsx +99 -0
  302. package/template/src/components/whiteboard/WhiteboardConfigure.native.tsx +148 -0
  303. package/template/src/components/whiteboard/WhiteboardConfigure.tsx +446 -0
  304. package/template/src/components/whiteboard/WhiteboardCursor.tsx +152 -0
  305. package/template/src/components/whiteboard/WhiteboardToolBox.tsx +1246 -0
  306. package/template/src/components/whiteboard/WhiteboardView.native.tsx +188 -0
  307. package/template/src/components/whiteboard/WhiteboardView.tsx +81 -0
  308. package/template/src/components/whiteboard/WhiteboardWidget.tsx +685 -0
  309. package/template/src/components/whiteboard/WhiteboardWrapper.tsx +38 -0
  310. package/template/src/language/default-labels/commonLabels.ts +51 -14
  311. package/template/src/language/default-labels/createScreenLabels.ts +97 -17
  312. package/template/src/language/default-labels/joinScreenLabels.ts +45 -6
  313. package/template/src/language/default-labels/precallScreenLabels.ts +149 -25
  314. package/template/src/language/default-labels/shareLinkScreenLabels.ts +85 -37
  315. package/template/src/language/default-labels/videoCallScreenLabels.ts +1195 -158
  316. package/template/src/pages/Create.tsx +136 -106
  317. package/template/src/pages/Endcall.tsx +2 -2
  318. package/template/src/pages/Join.tsx +82 -40
  319. package/template/src/pages/Login.tsx +26 -0
  320. package/template/src/pages/VideoCall.tsx +329 -127
  321. package/template/src/pages/video-call/ActionSheet.native.tsx +54 -6
  322. package/template/src/pages/video-call/ActionSheet.tsx +55 -15
  323. package/template/src/pages/video-call/ActionSheetContent.tsx +498 -308
  324. package/template/src/pages/video-call/ActionSheetHandle.tsx +7 -1
  325. package/template/src/pages/video-call/DefaultLayouts.ts +20 -8
  326. package/template/src/pages/video-call/NameWithMicIcon.tsx +41 -64
  327. package/template/src/pages/video-call/PinchableView.tsx +119 -0
  328. package/template/src/pages/video-call/RenderComponent.tsx +14 -30
  329. package/template/src/pages/video-call/SidePanelHeader.tsx +227 -29
  330. package/template/src/pages/video-call/VideoCallMobileView.tsx +231 -89
  331. package/template/src/pages/video-call/VideoCallScreen.native.tsx +3 -2
  332. package/template/src/pages/video-call/VideoCallScreen.tsx +233 -84
  333. package/template/src/pages/video-call/VideoCallScreenWrapper.tsx +41 -0
  334. package/template/src/pages/video-call/VideoComponent.tsx +60 -8
  335. package/template/src/pages/video-call/VideoRenderer.tsx +343 -57
  336. package/template/src/pages/video-call/VisibilitySensor.tsx +104 -0
  337. package/template/src/pages/video-call/ZoomableWrapper.native.tsx +34 -0
  338. package/template/src/pages/video-call/ZoomableWrapper.tsx +5 -0
  339. package/template/src/pages/video-call/index.ts +42 -8
  340. package/template/src/rtm/RTMEngine.ts +17 -4
  341. package/template/src/rtm-events/constants.ts +21 -3
  342. package/template/src/rtm-events-api/Events.ts +7 -4
  343. package/template/src/rtm-events-api/LocalEvents.ts +14 -0
  344. package/template/src/rtm-events-api/types.ts +5 -5
  345. package/template/src/selection.json +1 -0
  346. package/template/src/subComponents/ChatBubble.tsx +87 -67
  347. package/template/src/subComponents/ChatContainer.tsx +70 -49
  348. package/template/src/subComponents/ChatInput.ios.tsx +32 -85
  349. package/template/src/subComponents/ChatInput.tsx +31 -80
  350. package/template/src/subComponents/Checkbox.native.tsx +46 -46
  351. package/template/src/subComponents/Checkbox.tsx +7 -6
  352. package/template/src/subComponents/CopyJoinInfo.tsx +31 -11
  353. package/template/src/subComponents/EndcallPopup.tsx +83 -12
  354. package/template/src/subComponents/FallbackLogo.tsx +2 -2
  355. package/template/src/subComponents/LanguageSelector.tsx +34 -30
  356. package/template/src/subComponents/LayoutIconButton.tsx +34 -17
  357. package/template/src/subComponents/LayoutIconDropdown.tsx +21 -8
  358. package/template/src/subComponents/Loading.tsx +60 -0
  359. package/template/src/subComponents/LocalAudioMute.tsx +87 -34
  360. package/template/src/subComponents/LocalEndCall.tsx +61 -24
  361. package/template/src/subComponents/LocalSwitchCamera.tsx +57 -13
  362. package/template/src/subComponents/LocalVideoMute.tsx +105 -36
  363. package/template/src/subComponents/LogoutButton.tsx +1 -1
  364. package/template/src/subComponents/NetworkQualityPill.tsx +22 -38
  365. package/template/src/subComponents/Recording.tsx +29 -9
  366. package/template/src/subComponents/RemoteAudioMute.tsx +5 -5
  367. package/template/src/subComponents/RemoteMutePopup.tsx +55 -14
  368. package/template/src/subComponents/RemoteVideoMute.tsx +5 -5
  369. package/template/src/subComponents/RemoveMeetingPopup.tsx +19 -6
  370. package/template/src/subComponents/RemoveScreensharePopup.tsx +20 -5
  371. package/template/src/subComponents/ScreenShareNotice.tsx +11 -6
  372. package/template/src/subComponents/SelectDevice.tsx +103 -34
  373. package/template/src/subComponents/SelectDeviceSettings.backup.tsx +9 -6
  374. package/template/src/subComponents/SidePanelButtons.ts +0 -3
  375. package/template/src/subComponents/SidePanelEnum.tsx +2 -0
  376. package/template/src/subComponents/SidePanelHeader.tsx +97 -63
  377. package/template/src/subComponents/ToastConfig.tsx +70 -61
  378. package/template/src/subComponents/caption/Caption.tsx +132 -0
  379. package/template/src/subComponents/caption/CaptionContainer.tsx +302 -0
  380. package/template/src/subComponents/caption/CaptionIcon.tsx +111 -0
  381. package/template/src/subComponents/caption/CaptionText.tsx +182 -0
  382. package/template/src/subComponents/caption/DownloadTranscriptBtn.tsx +65 -0
  383. package/template/src/subComponents/caption/LanguageSelectorPopup.tsx +192 -0
  384. package/template/src/subComponents/caption/Transcript.tsx +452 -0
  385. package/template/src/subComponents/caption/TranscriptIcon.tsx +123 -0
  386. package/template/src/subComponents/caption/TranscriptText.tsx +98 -0
  387. package/template/src/subComponents/caption/index.ts +3 -0
  388. package/template/src/subComponents/caption/proto/ptoto.js +91 -0
  389. package/template/src/subComponents/caption/proto/test.proto +23 -0
  390. package/template/src/subComponents/caption/useCaption.tsx +123 -0
  391. package/template/src/subComponents/caption/useCaptionWidth.ts +27 -0
  392. package/template/src/subComponents/caption/useSTTAPI.tsx +179 -0
  393. package/template/src/subComponents/caption/useStreamMessageUtils.native.ts +211 -0
  394. package/template/src/subComponents/caption/useStreamMessageUtils.ts +235 -0
  395. package/template/src/subComponents/caption/useTranscriptDownload.native.ts +63 -0
  396. package/template/src/subComponents/caption/useTranscriptDownload.ts +52 -0
  397. package/template/src/subComponents/caption/utils.ts +126 -0
  398. package/template/src/subComponents/chat/ChatParticipants.tsx +60 -24
  399. package/template/src/subComponents/livestream/ApprovedLiveStreamControlsView.tsx +2 -2
  400. package/template/src/subComponents/livestream/CurrentLiveStreamRequestsView.tsx +19 -20
  401. package/template/src/subComponents/livestream/controls/LocalRaiseHand.tsx +66 -35
  402. package/template/src/subComponents/livestream/controls/RemoteLiveStreamApprovedRequestRecall.tsx +3 -2
  403. package/template/src/subComponents/livestream/controls/RemoteLiveStreamRequestApprove.tsx +10 -6
  404. package/template/src/subComponents/livestream/controls/RemoteLiveStreamRequestReject.tsx +28 -19
  405. package/template/src/subComponents/recording/useIsRecordingBot.tsx +38 -0
  406. package/template/src/subComponents/recording/useRecording.tsx +251 -138
  407. package/template/src/subComponents/recording/useRecordingLayoutQuery.tsx +0 -1
  408. package/template/src/subComponents/screenshare/ScreenshareButton.tsx +39 -15
  409. package/template/src/subComponents/screenshare/ScreenshareConfigure.native.tsx +275 -69
  410. package/template/src/subComponents/screenshare/ScreenshareConfigure.tsx +193 -124
  411. package/template/src/subComponents/screenshare/useScreenshare.tsx +2 -0
  412. package/template/src/subComponents/waiting-rooms/WaitingRoomControls.tsx +85 -0
  413. package/template/src/subComponents/waiting-rooms/useWaitingRoomAPI.ts +75 -0
  414. package/template/src/theme/index.ts +13 -0
  415. package/template/src/utils/SdkEvents.ts +37 -14
  416. package/template/src/utils/SdkMethodEvents.ts +101 -0
  417. package/template/src/utils/axiomLogger.ts +117 -0
  418. package/template/src/utils/book.jpg +0 -0
  419. package/template/src/utils/common.tsx +118 -6
  420. package/template/src/utils/constants.ts +4 -0
  421. package/template/src/utils/getCustomRoute.ts +7 -0
  422. package/template/src/utils/index.tsx +34 -0
  423. package/template/src/utils/useActionSheet.tsx +50 -0
  424. package/template/src/utils/useActiveSpeaker.ts +38 -0
  425. package/template/src/utils/useAppState.ts +17 -0
  426. package/template/src/utils/useAsyncEffect.ts +138 -0
  427. package/template/src/utils/{useCreateMeeting.ts → useCreateRoom.ts} +27 -26
  428. package/template/src/utils/useEndCall.ts +65 -0
  429. package/template/src/utils/useFindActiveSpeaker.native.ts +4 -0
  430. package/template/src/utils/useFindActiveSpeaker.ts +335 -0
  431. package/template/src/utils/useGetMeetingPhrase.ts +10 -10
  432. package/template/src/utils/useIsAudioEnabled.ts +3 -3
  433. package/template/src/utils/useIsLocalUserSpeaking.native.ts +4 -0
  434. package/template/src/utils/useIsLocalUserSpeaking.ts +103 -0
  435. package/template/src/utils/useIsPSTN.ts +3 -3
  436. package/template/src/utils/useIsVideoEnabled.ts +3 -3
  437. package/template/src/utils/useJoinRoom.ts +199 -0
  438. package/template/src/utils/{useIsActiveSpeaker.ts → useLocalAudio.ts} +23 -12
  439. package/template/src/{components/OAuth.tsx → utils/useMenu.tsx} +16 -15
  440. package/template/src/utils/useModal.tsx +8 -0
  441. package/template/src/utils/useMutePSTN.ts +2 -2
  442. package/template/src/utils/useMuteToggleLocal.ts +121 -96
  443. package/template/src/utils/useRemoteEndCall.ts +4 -4
  444. package/template/src/utils/useRemoteEndScreenshare.ts +4 -4
  445. package/template/src/utils/useRemoteMute.ts +7 -7
  446. package/template/src/utils/useRemoteRequest.ts +7 -7
  447. package/template/src/utils/useSearchParams.tsx +18 -0
  448. package/template/src/utils/useString.ts +13 -3
  449. package/template/src/utils/useSwitchCamera.native.tsx +25 -0
  450. package/template/src/{subComponents/screenshare/ScreenshareButton.native.tsx → utils/useSwitchCamera.tsx} +12 -11
  451. package/template/src/utils/useToolbar.tsx +59 -0
  452. package/template/src/wasms/agora-virtual-background.wasm +0 -0
  453. package/template/static.d.ts +42 -0
  454. package/template/tsconfig_rsdk_index.json +3 -3
  455. package/template/tsconfig_wsdk_index.json +1 -1
  456. package/template/web/index.html +20 -0
  457. package/template/webpack.commons.js +21 -10
  458. package/template/webpack.rsdk.config.js +1 -2
  459. package/template/webpack.web.config.js +7 -3
  460. package/template/_buckconfig +0 -6
  461. package/template/_gitattributes +0 -1
  462. package/template/agora-rn-uikit/src/Contexts/RenderContext.tsx +0 -10
  463. package/template/agora-rn-uikit/src/Reducer/ActiveSpeakerDetected.ts +0 -11
  464. package/template/android/app/_BUCK +0 -55
  465. package/template/android/app/build_defs.bzl +0 -19
  466. package/template/bridge/rtc/webNg/LocalView.tsx +0 -20
  467. package/template/ios/HelloWorld/AppDelegate.m +0 -74
  468. package/template/src/components/OAuth.electron.tsx +0 -41
  469. package/template/src/components/OAuth.native.tsx +0 -55
  470. package/template/src/components/OAuthConfig.ts +0 -77
  471. package/template/src/components/StoreToken.tsx +0 -39
  472. package/template/src/components/meeting-info/useMeetingInfo.tsx +0 -70
  473. package/template/src/pages/video-call/CustomUserContextHolder.tsx +0 -20
  474. package/template/src/utils/useButtonTemplate.tsx +0 -44
  475. package/template/src/utils/useJoinMeeting.ts +0 -132
@@ -17,30 +17,33 @@ import {useString} from '../utils/useString';
17
17
  import {useChatMessages} from '../components/chat-messages/useChatMessages';
18
18
  import {isIOS, isValidReactComponent, isWebInternal} from '../utils/common';
19
19
  import {useCustomization} from 'customization-implementation';
20
- import {useChatUIControl} from '../components/chat-ui/useChatUIControl';
21
- import {useRender, useUserName} from 'customization-api';
20
+ import {
21
+ ChatType,
22
+ useChatUIControls,
23
+ } from '../components/chat-ui/useChatUIControls';
24
+ import {useContent, useUserName} from 'customization-api';
22
25
  import ImageIcon from '../atoms/ImageIcon';
23
26
  import ThemeConfig from '../theme';
24
27
  import {BottomSheetTextInput} from '@gorhom/bottom-sheet';
28
+ import {
29
+ groupChatInputPlaceHolderText,
30
+ privateChatInputPlaceHolderText,
31
+ } from '../language/default-labels/videoCallScreenLabels';
25
32
 
26
33
  export interface ChatSendButtonProps {
27
34
  render?: (onPress: () => void) => JSX.Element;
28
35
  }
29
36
 
30
37
  export const ChatSendButton = (props: ChatSendButtonProps) => {
31
- const {
32
- selectedChatUserId: selectedUserId,
33
- message,
34
- setMessage,
35
- inputActive,
36
- } = useChatUIControl();
38
+ const {privateChatUser, message, setMessage, inputActive} =
39
+ useChatUIControls();
37
40
  const {sendChatMessage} = useChatMessages();
38
41
  const onPress = () => {
39
- if (!selectedUserId) {
42
+ if (!privateChatUser) {
40
43
  sendChatMessage(message);
41
44
  setMessage && setMessage('');
42
45
  } else {
43
- sendChatMessage(message, selectedUserId);
46
+ sendChatMessage(message, privateChatUser);
44
47
  setMessage && setMessage('');
45
48
  }
46
49
  };
@@ -70,34 +73,35 @@ export interface ChatTextInputProps {
70
73
  }
71
74
  export const ChatTextInput = (props: ChatTextInputProps) => {
72
75
  let chatInputRef = useRef(null);
73
- const {
74
- selectedChatUserId: selectedUserId,
75
- message,
76
- setMessage,
77
- inputActive,
78
- privateActive,
79
- } = useChatUIControl();
76
+ const {privateChatUser, message, setMessage, chatType, inputActive} =
77
+ useChatUIControls();
80
78
  const {sendChatMessage} = useChatMessages();
81
- const {renderList} = useRender();
79
+ const {defaultContent} = useContent();
82
80
  //commented for v1 release
83
81
  // const chatMessageInputPlaceholder = useString(
84
82
  // 'chatMessageInputPlaceholder',
85
83
  // )();
86
84
  const [name] = useUserName();
87
- const chatMessageInputPlaceholder = privateActive
88
- ? `Private Message to ${renderList[selectedUserId].name}`
89
- : `Chat publicly as ${name}...`;
85
+ const groupChatInputPlaceHolder = useString(groupChatInputPlaceHolderText);
86
+ const privateChatInputPlaceHolder = useString(
87
+ privateChatInputPlaceHolderText,
88
+ );
89
+
90
+ const chatMessageInputPlaceholder =
91
+ chatType === ChatType.Private
92
+ ? privateChatInputPlaceHolder(defaultContent[privateChatUser]?.name)
93
+ : groupChatInputPlaceHolder(name);
90
94
  const onChangeText = (text: string) => setMessage(text);
91
95
  const onSubmitEditing = () => {
92
- if (!selectedUserId) {
96
+ if (!privateChatUser) {
93
97
  sendChatMessage(message);
94
98
  setMessage('');
95
99
  } else {
96
- sendChatMessage(message, selectedUserId);
100
+ sendChatMessage(message, privateChatUser);
97
101
  setMessage('');
98
102
  }
99
103
  };
100
- const {setInputActive} = useChatUIControl();
104
+ const {setInputActive} = useChatUIControls();
101
105
 
102
106
  useEffect(() => {
103
107
  setTimeout(() => {
@@ -148,69 +152,12 @@ export const ChatTextInput = (props: ChatTextInputProps) => {
148
152
  /**
149
153
  * Input component for the Chat interface
150
154
  */
151
- const ChatInput = (props: {
152
- chatInput?: React.ComponentType<ChatTextInputProps>;
153
- chatSendButton?: React.ComponentType<ChatSendButtonProps>;
154
- }) => {
155
- const {primaryColor} = useContext(ColorContext);
156
- const {ChatInputComponent, ChatSendButtonComponent} = useCustomization(
157
- (data) => {
158
- let components: {
159
- ChatInputComponent: React.ComponentType<ChatTextInputProps>;
160
- ChatSendButtonComponent: React.ComponentType<ChatSendButtonProps>;
161
- } = {
162
- ChatInputComponent: ChatTextInput,
163
- ChatSendButtonComponent: ChatSendButton,
164
- };
165
- if (
166
- data?.components?.videoCall &&
167
- typeof data?.components?.videoCall === 'object'
168
- ) {
169
- if (
170
- data?.components?.videoCall?.chat &&
171
- typeof data?.components?.videoCall?.chat === 'object'
172
- ) {
173
- if (
174
- data?.components?.videoCall?.chat?.chatInput &&
175
- typeof data?.components?.videoCall?.chat?.chatInput !== 'object' &&
176
- isValidReactComponent(data?.components?.videoCall?.chat?.chatInput)
177
- ) {
178
- components.ChatInputComponent =
179
- data?.components?.videoCall?.chat?.chatInput;
180
- }
181
- if (
182
- data?.components?.videoCall?.chat?.chatSendButton &&
183
- typeof data?.components?.videoCall?.chat?.chatSendButton !==
184
- 'object' &&
185
- isValidReactComponent(
186
- data?.components?.videoCall?.chat?.chatSendButton,
187
- )
188
- ) {
189
- components.ChatSendButtonComponent =
190
- data?.components?.videoCall?.chat?.chatSendButton;
191
- }
192
- }
193
- } else {
194
- if (props?.chatInput && isValidReactComponent(props.chatInput)) {
195
- components.ChatInputComponent = props.chatInput;
196
- }
197
- if (
198
- props?.chatSendButton &&
199
- isValidReactComponent(props.chatSendButton)
200
- ) {
201
- components.ChatSendButtonComponent = props.chatSendButton;
202
- }
203
- }
204
- return components;
205
- },
206
- );
207
-
208
- const {inputActive} = useChatUIControl();
209
-
155
+ export const ChatInput = () => {
156
+ const {inputActive} = useChatUIControls();
210
157
  return (
211
158
  <View style={[style.inputView, inputActive ? style.inputActiveView : {}]}>
212
- <ChatInputComponent />
213
- <ChatSendButtonComponent />
159
+ <ChatTextInput />
160
+ <ChatSendButton />
214
161
  </View>
215
162
  );
216
163
  };
@@ -17,10 +17,17 @@ import {useString} from '../utils/useString';
17
17
  import {useChatMessages} from '../components/chat-messages/useChatMessages';
18
18
  import {isValidReactComponent, isWebInternal} from '../utils/common';
19
19
  import {useCustomization} from 'customization-implementation';
20
- import {useChatUIControl} from '../components/chat-ui/useChatUIControl';
21
- import {useRender, useUserName} from 'customization-api';
20
+ import {
21
+ ChatType,
22
+ useChatUIControls,
23
+ } from '../components/chat-ui/useChatUIControls';
24
+ import {useContent, useUserName} from 'customization-api';
22
25
  import ImageIcon from '../atoms/ImageIcon';
23
26
  import ThemeConfig from '../theme';
27
+ import {
28
+ groupChatInputPlaceHolderText,
29
+ privateChatInputPlaceHolderText,
30
+ } from '../language/default-labels/videoCallScreenLabels';
24
31
 
25
32
  export interface ChatSendButtonProps {
26
33
  render?: (onPress: () => void) => JSX.Element;
@@ -28,11 +35,11 @@ export interface ChatSendButtonProps {
28
35
 
29
36
  export const ChatSendButton = (props: ChatSendButtonProps) => {
30
37
  const {
31
- selectedChatUserId: selectedUserId,
38
+ privateChatUser: selectedUserId,
32
39
  message,
33
40
  setMessage,
34
41
  inputActive,
35
- } = useChatUIControl();
42
+ } = useChatUIControls();
36
43
  const {sendChatMessage} = useChatMessages();
37
44
  const onPress = () => {
38
45
  if (!selectedUserId) {
@@ -69,34 +76,35 @@ export interface ChatTextInputProps {
69
76
  }
70
77
  export const ChatTextInput = (props: ChatTextInputProps) => {
71
78
  let chatInputRef = useRef(null);
72
- const {
73
- selectedChatUserId: selectedUserId,
74
- message,
75
- setMessage,
76
- inputActive,
77
- privateActive,
78
- } = useChatUIControl();
79
+ const {privateChatUser, message, setMessage, inputActive, chatType} =
80
+ useChatUIControls();
79
81
  const {sendChatMessage} = useChatMessages();
80
- const {renderList} = useRender();
82
+ const {defaultContent} = useContent();
81
83
  //commented for v1 release
82
84
  // const chatMessageInputPlaceholder = useString(
83
85
  // 'chatMessageInputPlaceholder',
84
86
  // )();
85
87
  const [name] = useUserName();
86
- const chatMessageInputPlaceholder = privateActive
87
- ? `Private Message to ${renderList[selectedUserId].name}`
88
- : `Chat publicly as ${name}...`;
88
+ const groupChatInputPlaceHolder = useString(groupChatInputPlaceHolderText);
89
+ const privateChatInputPlaceHolder = useString(
90
+ privateChatInputPlaceHolderText,
91
+ );
92
+
93
+ const chatMessageInputPlaceholder =
94
+ chatType === ChatType.Private
95
+ ? privateChatInputPlaceHolder(defaultContent[privateChatUser]?.name)
96
+ : groupChatInputPlaceHolder(name);
89
97
  const onChangeText = (text: string) => setMessage(text);
90
98
  const onSubmitEditing = () => {
91
- if (!selectedUserId) {
99
+ if (!privateChatUser) {
92
100
  sendChatMessage(message);
93
101
  setMessage('');
94
102
  } else {
95
- sendChatMessage(message, selectedUserId);
103
+ sendChatMessage(message, privateChatUser);
96
104
  setMessage('');
97
105
  }
98
106
  };
99
- const {setInputActive} = useChatUIControl();
107
+ const {setInputActive} = useChatUIControls();
100
108
 
101
109
  useEffect(() => {
102
110
  setTimeout(() => {
@@ -115,7 +123,7 @@ export const ChatTextInput = (props: ChatTextInputProps) => {
115
123
  )
116
124
  ) : (
117
125
  <TextInput
118
- setRef={(ref) => (chatInputRef.current = ref)}
126
+ setRef={ref => (chatInputRef.current = ref)}
119
127
  onFocus={() => setInputActive(true)}
120
128
  onBlur={() => setInputActive(false)}
121
129
  value={message}
@@ -148,69 +156,12 @@ export const ChatTextInput = (props: ChatTextInputProps) => {
148
156
  /**
149
157
  * Input component for the Chat interface
150
158
  */
151
- const ChatInput = (props: {
152
- chatInput?: React.ComponentType<ChatTextInputProps>;
153
- chatSendButton?: React.ComponentType<ChatSendButtonProps>;
154
- }) => {
155
- const {primaryColor} = useContext(ColorContext);
156
- const {ChatInputComponent, ChatSendButtonComponent} = useCustomization(
157
- (data) => {
158
- let components: {
159
- ChatInputComponent: React.ComponentType<ChatTextInputProps>;
160
- ChatSendButtonComponent: React.ComponentType<ChatSendButtonProps>;
161
- } = {
162
- ChatInputComponent: ChatTextInput,
163
- ChatSendButtonComponent: ChatSendButton,
164
- };
165
- if (
166
- data?.components?.videoCall &&
167
- typeof data?.components?.videoCall === 'object'
168
- ) {
169
- if (
170
- data?.components?.videoCall?.chat &&
171
- typeof data?.components?.videoCall?.chat === 'object'
172
- ) {
173
- if (
174
- data?.components?.videoCall?.chat?.chatInput &&
175
- typeof data?.components?.videoCall?.chat?.chatInput !== 'object' &&
176
- isValidReactComponent(data?.components?.videoCall?.chat?.chatInput)
177
- ) {
178
- components.ChatInputComponent =
179
- data?.components?.videoCall?.chat?.chatInput;
180
- }
181
- if (
182
- data?.components?.videoCall?.chat?.chatSendButton &&
183
- typeof data?.components?.videoCall?.chat?.chatSendButton !==
184
- 'object' &&
185
- isValidReactComponent(
186
- data?.components?.videoCall?.chat?.chatSendButton,
187
- )
188
- ) {
189
- components.ChatSendButtonComponent =
190
- data?.components?.videoCall?.chat?.chatSendButton;
191
- }
192
- }
193
- } else {
194
- if (props?.chatInput && isValidReactComponent(props.chatInput)) {
195
- components.ChatInputComponent = props.chatInput;
196
- }
197
- if (
198
- props?.chatSendButton &&
199
- isValidReactComponent(props.chatSendButton)
200
- ) {
201
- components.ChatSendButtonComponent = props.chatSendButton;
202
- }
203
- }
204
- return components;
205
- },
206
- );
207
-
208
- const {inputActive} = useChatUIControl();
209
-
159
+ export const ChatInput = () => {
160
+ const {inputActive} = useChatUIControls();
210
161
  return (
211
162
  <View style={[style.inputView, inputActive ? style.inputActiveView : {}]}>
212
- <ChatInputComponent />
213
- <ChatSendButtonComponent />
163
+ <ChatTextInput />
164
+ <ChatSendButton />
214
165
  </View>
215
166
  );
216
167
  };
@@ -1,47 +1,47 @@
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, {useContext} from 'react';
13
- import CheckBox from '@react-native-community/checkbox';
14
- import hexadecimalTransparency from '../utils/hexadecimalTransparency';
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, {useContext} from 'react';
13
+ // import CheckBox from '@react-native-community/checkbox';
14
+ // import hexadecimalTransparency from '../utils/hexadecimalTransparency';
15
15
 
16
- /**
17
- * A checkbox component for mobile
18
- */
19
- const Checkbox = (props: any) => {
20
- const urlCheckbox = props.value;
21
- const setUrlCheckbox = props.onValueChange;
22
- return (
23
- <CheckBox
24
- value={urlCheckbox}
25
- onValueChange={setUrlCheckbox}
26
- disabled={props?.disabled}
27
- tintColors={{
28
- true: props?.disabled ? 'grey' : $config.PRIMARY_ACTION_BRAND_COLOR,
29
- false: props?.disabled
30
- ? 'grey'
31
- : $config.FONT_COLOR + hexadecimalTransparency['80%'],
32
- }}
33
- tintColor={
34
- props?.disabled
35
- ? 'grey'
36
- : $config.FONT_COLOR + hexadecimalTransparency['80%']
37
- }
38
- onCheckColor={
39
- props?.disabled ? 'grey' : $config.PRIMARY_ACTION_BRAND_COLOR
40
- }
41
- onTintColor={
42
- props?.disabled ? 'grey' : $config.PRIMARY_ACTION_BRAND_COLOR
43
- }
44
- />
45
- );
46
- };
47
- export default Checkbox;
16
+ // /**
17
+ // * A checkbox component for mobile
18
+ // */
19
+ // const Checkbox = (props: any) => {
20
+ // const urlCheckbox = props.value;
21
+ // const setUrlCheckbox = props.onValueChange;
22
+ // return (
23
+ // <CheckBox
24
+ // value={urlCheckbox}
25
+ // onValueChange={setUrlCheckbox}
26
+ // disabled={props?.disabled}
27
+ // tintColors={{
28
+ // true: props?.disabled ? 'grey' : $config.PRIMARY_ACTION_BRAND_COLOR,
29
+ // false: props?.disabled
30
+ // ? 'grey'
31
+ // : $config.FONT_COLOR + hexadecimalTransparency['80%'],
32
+ // }}
33
+ // tintColor={
34
+ // props?.disabled
35
+ // ? 'grey'
36
+ // : $config.FONT_COLOR + hexadecimalTransparency['80%']
37
+ // }
38
+ // onCheckColor={
39
+ // props?.disabled ? 'grey' : $config.PRIMARY_ACTION_BRAND_COLOR
40
+ // }
41
+ // onTintColor={
42
+ // props?.disabled ? 'grey' : $config.PRIMARY_ACTION_BRAND_COLOR
43
+ // }
44
+ // />
45
+ // );
46
+ // };
47
+ // export default Checkbox;
@@ -1,15 +1,16 @@
1
1
  /*
2
2
  ********************************************
3
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.
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
10
  *********************************************
11
11
  */
12
12
  import React, {useContext} from 'react';
13
+ //@ts-ignore
13
14
  import {CheckBox, StyleSheet} from 'react-native';
14
15
  import ColorContext from '../components/ColorContext';
15
16
 
@@ -15,23 +15,23 @@ import useGetMeetingPhrase from '../utils/useGetMeetingPhrase';
15
15
  import TertiaryButton from '../atoms/TertiaryButton';
16
16
  import IconButton, {IconButtonProps} from '../atoms/IconButton';
17
17
  import {useVideoCall} from '../components/useVideoCall';
18
+ import {useToolbarMenu} from '../utils/useMenu';
19
+ import ToolbarMenuItem from '../atoms/ToolbarMenuItem';
20
+ import {useActionSheet} from '../utils/useActionSheet';
21
+ import {useString} from '../utils/useString';
22
+ import {toolbarItemInviteText} from '../language/default-labels/videoCallScreenLabels';
18
23
 
19
24
  export interface CopyJoinInfoProps {
20
- showLabel?: boolean;
21
25
  showTeritaryButton?: boolean;
22
26
  render?: (onPress: () => void) => JSX.Element;
23
- isOnActionSheet?: boolean;
24
27
  }
25
28
 
26
29
  const CopyJoinInfo = (props: CopyJoinInfoProps) => {
27
- const {
28
- showLabel = $config.ICON_TEXT || false,
29
- showTeritaryButton = false,
30
- isOnActionSheet = false,
31
- } = props;
32
- //commented for v1 release
33
- //const copyMeetingInviteButton = useString('copyMeetingInviteButton')();
34
- const copyMeetingInviteButton = 'Invite';
30
+ const {isOnActionSheet, showLabel} = useActionSheet();
31
+ const {isToolbarMenuItem} = useToolbarMenu();
32
+
33
+ const {showTeritaryButton = false} = props;
34
+ const copyMeetingInviteButton = useString(toolbarItemInviteText)();
35
35
  const {setShowInvitePopup} = useVideoCall();
36
36
 
37
37
  const onPress = () => {
@@ -49,6 +49,24 @@ const CopyJoinInfo = (props: CopyJoinInfoProps) => {
49
49
  },
50
50
  };
51
51
 
52
+ if (isOnActionSheet) {
53
+ // iconButtonProps.containerStyle = {
54
+ // backgroundColor: $config.CARD_LAYER_2_COLOR,
55
+ // width: 52,
56
+ // height: 52,
57
+ // borderRadius: 26,
58
+ // justifyContent: 'center',
59
+ // alignItems: 'center',
60
+ // };
61
+ iconButtonProps.btnTextProps.textStyle = {
62
+ color: $config.FONT_COLOR,
63
+ marginTop: 8,
64
+ fontSize: 12,
65
+ fontWeight: '400',
66
+ fontFamily: 'Source Sans Pro',
67
+ textAlign: 'center',
68
+ };
69
+ }
52
70
  iconButtonProps.isOnActionSheet = isOnActionSheet;
53
71
 
54
72
  return props?.render ? (
@@ -56,7 +74,9 @@ const CopyJoinInfo = (props: CopyJoinInfoProps) => {
56
74
  ) : (
57
75
  <>
58
76
  {showTeritaryButton ? (
59
- <TertiaryButton text="Invite" onPress={onPress} />
77
+ <TertiaryButton text={copyMeetingInviteButton} onPress={onPress} />
78
+ ) : isToolbarMenuItem ? (
79
+ <ToolbarMenuItem {...iconButtonProps} />
60
80
  ) : (
61
81
  <IconButton {...iconButtonProps} />
62
82
  )}
@@ -1,4 +1,4 @@
1
- import React, {SetStateAction, useContext} from 'react';
1
+ import React, {SetStateAction, useContext, useState} from 'react';
2
2
  import {StyleSheet, Text, View} from 'react-native';
3
3
  import Spacer from '../atoms/Spacer';
4
4
  import Popup from '../atoms/Popup';
@@ -6,20 +6,61 @@ import TertiaryButton from '../atoms/TertiaryButton';
6
6
  import PrimaryButton from '../atoms/PrimaryButton';
7
7
  import ThemeConfig from '../theme';
8
8
  import {useIsDesktop} from '../utils/common';
9
+ import DownloadTranscriptBtn from './caption/DownloadTranscriptBtn';
10
+ import ImageIcon from '../atoms/ImageIcon';
11
+ import {useCaption} from './caption/useCaption';
12
+ import {useString} from '../utils/useString';
13
+ import {
14
+ leavePopupHeading,
15
+ leavePopupPrimaryBtnText,
16
+ leavePopupSubHeading,
17
+ sttDownloadBtnText,
18
+ sttTranscriptPanelHeaderText,
19
+ } from '../language/default-labels/videoCallScreenLabels';
20
+ import {cancelText} from '../language/default-labels/commonLabels';
9
21
 
10
22
  interface EndcallPopupProps {
11
23
  modalVisible: boolean;
12
24
  setModalVisible: React.Dispatch<SetStateAction<boolean>>;
13
25
  endCall: () => void;
14
26
  }
27
+
28
+ const DownloadTranscript = () => {
29
+ const label = useString(sttTranscriptPanelHeaderText)();
30
+ const downloadLabel = useString(sttDownloadBtnText)();
31
+ return (
32
+ <View style={[styles.btnDownloadContainer, styles.row]}>
33
+ <View style={styles.row}>
34
+ <ImageIcon
35
+ iconType="plain"
36
+ name={'transcript-mode'}
37
+ tintColor={$config.FONT_COLOR}
38
+ iconSize={20}
39
+ />
40
+ <Spacer size={4} horizontal />
41
+ <Text style={styles.label}>{label}</Text>
42
+ </View>
43
+ <DownloadTranscriptBtn
44
+ textStyle={[styles.label, styles.downloadBtnText] as Object}
45
+ containerStyle={styles.downloadBtn}
46
+ iconName=""
47
+ text={downloadLabel}
48
+ />
49
+ </View>
50
+ );
51
+ };
52
+
15
53
  const EndcallPopup = (props: EndcallPopupProps) => {
16
54
  const isDesktop = useIsDesktop()('popup');
17
- const leaveMeetingLabelHeading = 'Leave Meeting?';
18
- const leaveMeetingLabelSubHeading =
19
- 'Are you sure you want to leave this meeting?';
55
+ const leaveMeetingLabelHeading = useString(leavePopupHeading)();
56
+ const leaveMeetingLabelSubHeading = useString<boolean>(leavePopupSubHeading);
57
+ const leaveMeetingPopupActionButton = useString(leavePopupPrimaryBtnText)();
58
+ const cancelLabel = useString(cancelText)();
59
+ const {isSTTActive} = useCaption();
60
+ const isTranscriptAvailable = $config.ENABLE_STT && isSTTActive;
20
61
 
21
- const stayBtnLabel = 'CANCEL';
22
- const leaveBtnLabel = 'LEAVE';
62
+ const stayBtnLabel = cancelLabel;
63
+ const leaveBtnLabel = leaveMeetingPopupActionButton;
23
64
  return (
24
65
  <Popup
25
66
  modalVisible={props.modalVisible}
@@ -28,16 +69,19 @@ const EndcallPopup = (props: EndcallPopupProps) => {
28
69
  contentContainerStyle={styles.contentContainer}>
29
70
  <Text style={styles.heading}>{leaveMeetingLabelHeading}</Text>
30
71
  <Spacer size={8} />
31
- <Text style={styles.subHeading}>{leaveMeetingLabelSubHeading}</Text>
32
- <Spacer size={32} />
72
+ <Text style={styles.subHeading}>
73
+ {leaveMeetingLabelSubHeading(isTranscriptAvailable)}
74
+ </Text>
75
+ {isTranscriptAvailable ? <DownloadTranscript /> : <></>}
76
+ <Spacer size={40} />
33
77
  <View style={isDesktop ? styles.btnContainer : styles.btnContainerMobile}>
34
78
  <View style={isDesktop && {flex: 1}}>
35
79
  <TertiaryButton
36
80
  containerStyle={{
37
81
  width: '100%',
38
82
  height: 48,
39
- paddingVertical: 12,
40
- paddingHorizontal: 12,
83
+ paddingVertical: 8,
84
+ paddingHorizontal: 40,
41
85
  borderRadius: ThemeConfig.BorderRadius.medium,
42
86
  }}
43
87
  text={stayBtnLabel}
@@ -57,8 +101,8 @@ const EndcallPopup = (props: EndcallPopupProps) => {
57
101
  borderRadius: ThemeConfig.BorderRadius.medium,
58
102
  height: 48,
59
103
  backgroundColor: $config.SEMANTIC_ERROR,
60
- paddingVertical: 12,
61
- paddingHorizontal: 12,
104
+ paddingVertical: 8,
105
+ paddingHorizontal: 36,
62
106
  }}
63
107
  text={leaveBtnLabel}
64
108
  textStyle={styles.btnText}
@@ -103,5 +147,32 @@ const styles = StyleSheet.create({
103
147
  fontWeight: '400',
104
148
  fontSize: ThemeConfig.FontSize.small,
105
149
  color: $config.FONT_COLOR,
150
+ maxWidth: 336,
151
+ },
152
+ downloadBtn: {
153
+ minWidth: 'auto',
154
+ },
155
+ btnDownloadContainer: {
156
+ paddingHorizontal: 16,
157
+ paddingVertical: 12,
158
+ backgroundColor: $config.CARD_LAYER_2_COLOR,
159
+
160
+ justifyContent: 'space-between',
161
+ alignItems: 'center',
162
+ borderRadius: 6,
163
+ marginTop: 20,
164
+ },
165
+ downloadBtnText: {
166
+ color: $config.PRIMARY_ACTION_BRAND_COLOR,
167
+ },
168
+ label: {
169
+ color: $config.FONT_COLOR,
170
+ fontSize: ThemeConfig.FontSize.tiny,
171
+ lineHeight: 20,
172
+ fontWeight: '600',
173
+ fontFamily: ThemeConfig.FontFamily.sansPro,
174
+ },
175
+ row: {
176
+ flexDirection: 'row',
106
177
  },
107
178
  });