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
@@ -48,6 +48,11 @@ import ThemeConfig from '../theme';
48
48
  import UserAvatar from '../atoms/UserAvatar';
49
49
  import Spacer from '../atoms/Spacer';
50
50
  import {useChatNotification} from '../components/chat-notification/useChatNotification';
51
+ import {
52
+ chatPanelUnreadMessageText,
53
+ chatPanelUserOfflineText,
54
+ groupChatWelcomeContent,
55
+ } from '../language/default-labels/videoCallScreenLabels';
51
56
 
52
57
  /**
53
58
  * Chat container is the component which renders all the chat messages
@@ -57,6 +62,7 @@ import {useChatNotification} from '../components/chat-notification/useChatNotifi
57
62
  const ChatContainer = (props?: {
58
63
  chatBubble?: React.ComponentType<ChatBubbleProps>;
59
64
  }) => {
65
+ const info1 = useString<boolean>(groupChatWelcomeContent);
60
66
  const [scrollToEnd, setScrollToEnd] = useState(false);
61
67
  const {dispatch} = useContext(DispatchContext);
62
68
  const [grpUnreadCount, setGrpUnreadCount] = useState(0);
@@ -77,9 +83,6 @@ const ChatContainer = (props?: {
77
83
  setUnreadIndividualMessageCount,
78
84
  } = useChatNotification();
79
85
  const localUid = useLocalUid();
80
- //commented for v1 release
81
- //const remoteUserDefaultLabel = useString('remoteUserDefaultLabel')();
82
- const remoteUserDefaultLabel = 'User';
83
86
  const scrollViewRef = useRef<ScrollView>(null);
84
87
 
85
88
  useEffect(() => {
@@ -92,7 +95,7 @@ const ChatContainer = (props?: {
92
95
  useEffect(() => {
93
96
  if (privateChatUser) {
94
97
  setPrivateUnreadCount(unreadIndividualMessageCount[privateChatUser]);
95
- setUnreadIndividualMessageCount((prevState) => {
98
+ setUnreadIndividualMessageCount(prevState => {
96
99
  return {
97
100
  ...prevState,
98
101
  [privateChatUser]: 0,
@@ -111,7 +114,7 @@ const ChatContainer = (props?: {
111
114
  dispatch({type: 'UpdateRenderList', value: [uid, data]});
112
115
  };
113
116
 
114
- const {ChatBubbleComponent} = useCustomization((data) => {
117
+ const {ChatBubbleComponent} = useCustomization(data => {
115
118
  let components: {
116
119
  ChatBubbleComponent: React.ComponentType<ChatBubbleProps>;
117
120
  } = {
@@ -142,9 +145,9 @@ const ChatContainer = (props?: {
142
145
  }
143
146
  return components;
144
147
  });
145
- //commented for v1 release
146
- //const userOfflineLabel = useString('userOfflineLabel')();
147
- const userOfflineLabel = 'User is offline';
148
+
149
+ const userOfflineLabel = useString(chatPanelUserOfflineText)();
150
+ const unreadMessageLabel = useString(chatPanelUnreadMessageText)();
148
151
 
149
152
  //if we don't have unread count then enable scroll to end
150
153
  useEffect(() => {
@@ -202,9 +205,7 @@ const ChatContainer = (props?: {
202
205
  <>
203
206
  <View style={style.defaultMessageContainer}>
204
207
  <Text style={style.defaultMessageText}>
205
- {!messageStore?.length
206
- ? `Welcome to Chat! \nAll messages are deleted when call ends.`
207
- : 'All messages are deleted when call ends.'}
208
+ {info1(messageStore?.length ? false : true)}
208
209
  </Text>
209
210
  </View>
210
211
  {messageStore.map((message: any, index) => (
@@ -216,7 +217,7 @@ const ChatContainer = (props?: {
216
217
  style={style.unreadMessageContainer}
217
218
  onLayout={unreadViewOnLayout}>
218
219
  <Text style={style.unreadMessageText}>
219
- {grpUnreadCount} Unread Message
220
+ {grpUnreadCount} {unreadMessageLabel}
220
221
  </Text>
221
222
  </View>
222
223
  ) : (
@@ -229,6 +230,12 @@ const ChatContainer = (props?: {
229
230
  ? true
230
231
  : false
231
232
  }
233
+ previousMessageCreatedTimestamp={
234
+ index !== 0
235
+ ? (messageStore[index - 1]
236
+ .createdTimestamp as unknown as string)
237
+ : ''
238
+ }
232
239
  message={message.msg}
233
240
  createdTimestamp={message.createdTimestamp}
234
241
  updatedTimestamp={message.updatedTimestamp}
@@ -264,7 +271,7 @@ const ChatContainer = (props?: {
264
271
  style={style.unreadMessageContainer}
265
272
  onLayout={unreadViewOnLayout}>
266
273
  <Text style={style.unreadMessageText}>
267
- {privateUnreadCount} Unread Message
274
+ {privateUnreadCount} {unreadMessageLabel}
268
275
  </Text>
269
276
  </View>
270
277
  ) : (
@@ -25,6 +25,10 @@ import {useContent, useUserName} from 'customization-api';
25
25
  import ImageIcon from '../atoms/ImageIcon';
26
26
  import ThemeConfig from '../theme';
27
27
  import {BottomSheetTextInput} from '@gorhom/bottom-sheet';
28
+ import {
29
+ groupChatInputPlaceHolderText,
30
+ privateChatInputPlaceHolderText,
31
+ } from '../language/default-labels/videoCallScreenLabels';
28
32
 
29
33
  export interface ChatSendButtonProps {
30
34
  render?: (onPress: () => void) => JSX.Element;
@@ -78,10 +82,15 @@ export const ChatTextInput = (props: ChatTextInputProps) => {
78
82
  // 'chatMessageInputPlaceholder',
79
83
  // )();
80
84
  const [name] = useUserName();
85
+ const groupChatInputPlaceHolder = useString(groupChatInputPlaceHolderText);
86
+ const privateChatInputPlaceHolder = useString(
87
+ privateChatInputPlaceHolderText,
88
+ );
89
+
81
90
  const chatMessageInputPlaceholder =
82
91
  chatType === ChatType.Private
83
- ? `Private Message to ${defaultContent[privateChatUser].name}`
84
- : `Chat publicly as ${name}...`;
92
+ ? privateChatInputPlaceHolder(defaultContent[privateChatUser]?.name)
93
+ : groupChatInputPlaceHolder(name);
85
94
  const onChangeText = (text: string) => setMessage(text);
86
95
  const onSubmitEditing = () => {
87
96
  if (!privateChatUser) {
@@ -24,6 +24,10 @@ import {
24
24
  import {useContent, useUserName} from 'customization-api';
25
25
  import ImageIcon from '../atoms/ImageIcon';
26
26
  import ThemeConfig from '../theme';
27
+ import {
28
+ groupChatInputPlaceHolderText,
29
+ privateChatInputPlaceHolderText,
30
+ } from '../language/default-labels/videoCallScreenLabels';
27
31
 
28
32
  export interface ChatSendButtonProps {
29
33
  render?: (onPress: () => void) => JSX.Element;
@@ -81,10 +85,15 @@ export const ChatTextInput = (props: ChatTextInputProps) => {
81
85
  // 'chatMessageInputPlaceholder',
82
86
  // )();
83
87
  const [name] = useUserName();
88
+ const groupChatInputPlaceHolder = useString(groupChatInputPlaceHolderText);
89
+ const privateChatInputPlaceHolder = useString(
90
+ privateChatInputPlaceHolderText,
91
+ );
92
+
84
93
  const chatMessageInputPlaceholder =
85
94
  chatType === ChatType.Private
86
- ? `Private Message to ${defaultContent[privateChatUser].name}`
87
- : `Chat publicly as ${name}...`;
95
+ ? privateChatInputPlaceHolder(defaultContent[privateChatUser]?.name)
96
+ : groupChatInputPlaceHolder(name);
88
97
  const onChangeText = (text: string) => setMessage(text);
89
98
  const onSubmitEditing = () => {
90
99
  if (!privateChatUser) {
@@ -114,7 +123,7 @@ export const ChatTextInput = (props: ChatTextInputProps) => {
114
123
  )
115
124
  ) : (
116
125
  <TextInput
117
- setRef={(ref) => (chatInputRef.current = ref)}
126
+ setRef={ref => (chatInputRef.current = ref)}
118
127
  onFocus={() => setInputActive(true)}
119
128
  onBlur={() => setInputActive(false)}
120
129
  value={message}
@@ -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
 
@@ -17,24 +17,21 @@ import IconButton, {IconButtonProps} from '../atoms/IconButton';
17
17
  import {useVideoCall} from '../components/useVideoCall';
18
18
  import {useToolbarMenu} from '../utils/useMenu';
19
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';
20
23
 
21
24
  export interface CopyJoinInfoProps {
22
- showLabel?: boolean;
23
25
  showTeritaryButton?: boolean;
24
26
  render?: (onPress: () => void) => JSX.Element;
25
- isOnActionSheet?: boolean;
26
27
  }
27
28
 
28
29
  const CopyJoinInfo = (props: CopyJoinInfoProps) => {
30
+ const {isOnActionSheet, showLabel} = useActionSheet();
29
31
  const {isToolbarMenuItem} = useToolbarMenu();
30
- const {
31
- showLabel = $config.ICON_TEXT || false,
32
- showTeritaryButton = false,
33
- isOnActionSheet = false,
34
- } = props;
35
- //commented for v1 release
36
- //const copyMeetingInviteButton = useString('copyMeetingInviteButton')();
37
- const copyMeetingInviteButton = 'Invite';
32
+
33
+ const {showTeritaryButton = false} = props;
34
+ const copyMeetingInviteButton = useString(toolbarItemInviteText)();
38
35
  const {setShowInvitePopup} = useVideoCall();
39
36
 
40
37
  const onPress = () => {
@@ -52,6 +49,24 @@ const CopyJoinInfo = (props: CopyJoinInfoProps) => {
52
49
  },
53
50
  };
54
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
+ }
55
70
  iconButtonProps.isOnActionSheet = isOnActionSheet;
56
71
 
57
72
  return props?.render ? (
@@ -59,7 +74,7 @@ const CopyJoinInfo = (props: CopyJoinInfoProps) => {
59
74
  ) : (
60
75
  <>
61
76
  {showTeritaryButton ? (
62
- <TertiaryButton text="Invite" onPress={onPress} />
77
+ <TertiaryButton text={copyMeetingInviteButton} onPress={onPress} />
63
78
  ) : isToolbarMenuItem ? (
64
79
  <ToolbarMenuItem {...iconButtonProps} />
65
80
  ) : (
@@ -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 Room?';
18
- const leaveMeetingLabelSubHeading =
19
- 'Are you sure you want to leave this room?';
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
  });
@@ -10,20 +10,20 @@
10
10
  *********************************************
11
11
  */
12
12
  import React, {useContext} from 'react';
13
- import {Picker, StyleSheet, Text} from 'react-native';
13
+ import {StyleSheet, Text, View} from 'react-native';
14
14
  import ColorContext from '../components/ColorContext';
15
15
  import {useLanguage} from '../language/useLanguage';
16
16
  import {useCustomization} from 'customization-implementation';
17
17
  import {useString} from '../utils/useString';
18
18
  import {DEFAULT_I18_DATA} from '../language';
19
+ import ThemeConfig from '../theme';
20
+ import Dropdown from '../atoms/Dropdown';
21
+ import {settingsPanelLanguageLabel} from '../language/default-labels/precallScreenLabels';
19
22
 
20
23
  const LanguageSelector = () => {
21
- const {primaryColor} = useContext(ColorContext);
22
24
  const {languageCode, setLanguageCode} = useLanguage();
23
- const languageData = useCustomization((data) => data?.i18n);
24
- //commented for v1 release
25
- //const languageText = useString('language')();
26
- const languageText = 'Language';
25
+ const languageData = useCustomization(data => data?.i18n);
26
+ const languageText = useString(settingsPanelLanguageLabel)();
27
27
  if (!languageData || !languageData.length) {
28
28
  return <></>;
29
29
  }
@@ -35,36 +35,40 @@ const LanguageSelector = () => {
35
35
  return <></>;
36
36
  }
37
37
 
38
+ const data = [];
39
+
40
+ languageData.forEach(element => {
41
+ data.push({
42
+ label: element.label || element.locale,
43
+ value: element.locale,
44
+ });
45
+ });
46
+
38
47
  return (
39
- <>
40
- <Text style={style.heading}>{languageText}</Text>
41
- <Picker
48
+ <View>
49
+ <Text style={style.label}>{languageText}</Text>
50
+ <Dropdown
51
+ icon={'lang-select'}
52
+ enabled={true}
42
53
  selectedValue={languageCode}
43
- style={[{borderColor: primaryColor}, style.popupPicker]}
44
- onValueChange={(itemValue) => setLanguageCode(itemValue)}>
45
- {languageData.map((item) => {
46
- return (
47
- <Picker.Item
48
- label={item.label || item.locale}
49
- value={item.locale}
50
- key={item.locale}
51
- />
52
- );
53
- })}
54
- {!languageData.filter((i) => i.locale === DEFAULT_I18_DATA.locale)
55
- .length ? (
56
- <Picker.Item
57
- label={DEFAULT_I18_DATA.label || DEFAULT_I18_DATA.locale}
58
- value={DEFAULT_I18_DATA.locale}
59
- key={DEFAULT_I18_DATA.locale}
60
- />
61
- ) : null}
62
- </Picker>
63
- </>
54
+ label={''}
55
+ data={data}
56
+ onSelect={({value}) => {
57
+ setLanguageCode(value);
58
+ }}
59
+ />
60
+ </View>
64
61
  );
65
62
  };
66
63
 
67
64
  const style = StyleSheet.create({
65
+ label: {
66
+ fontWeight: '400',
67
+ fontSize: ThemeConfig.FontSize.small,
68
+ color: $config.FONT_COLOR,
69
+ fontFamily: ThemeConfig.FontFamily.sansPro,
70
+ marginBottom: 12,
71
+ },
68
72
  heading: {
69
73
  fontSize: 20,
70
74
  fontWeight: '700',
@@ -9,23 +9,28 @@ import {isMobileUA} from '../utils/common';
9
9
  import isMobileOrTablet from '../utils/isMobileOrTablet';
10
10
  import {useWindowDimensions} from 'react-native';
11
11
  import {useContent} from 'customization-api';
12
+ import {useActionSheet} from '../utils/useActionSheet';
13
+ import {useString} from '../utils/useString';
14
+ import {toolbarItemLayoutText} from '../language/default-labels/videoCallScreenLabels';
12
15
 
13
16
  export interface LayoutIconButtonInterface {
14
17
  render?: (onPress: () => void) => JSX.Element;
15
- showLabel?: boolean;
16
18
  }
17
19
 
18
20
  const LayoutIconButton = (props: LayoutIconButtonInterface) => {
19
- const {activeUids} = useContent();
21
+ const {activeUids, customContent} = useContent();
22
+ //const activeUidsLen = activeUids?.filter((i) => !customContent[i])?.length;
20
23
  const {height: windowHeight} = useWindowDimensions();
21
24
  const [modalPosition, setModalPosition] = useState(null);
22
25
  const layoutBtnRef = useRef();
23
26
  const [isHovered, setIsHoveredLocal] = useState(false);
24
27
  const [isHoveredOnModal, setIsHoveredOnModal] = useState(false);
25
28
  const isMobileView = isMobileUA();
26
- const {showLabel = $config.ICON_TEXT} = props;
29
+ const {isOnActionSheet} = useActionSheet();
30
+ const showLabel = $config.ICON_TEXT ? true : false;
27
31
  const setIsHovered = (hovered: boolean) => {
28
32
  if (layoutBtnRef && layoutBtnRef.current) {
33
+ //@ts-ignore
29
34
  layoutBtnRef?.current?.measure((_fx, _fy, _w, h, _px, _py) => {
30
35
  setModalPosition({
31
36
  bottom: isMobileOrTablet()
@@ -37,14 +42,12 @@ const LayoutIconButton = (props: LayoutIconButtonInterface) => {
37
42
  });
38
43
  }
39
44
  };
40
- //commented for v1 release
41
- //const layoutLabel = useString('layoutLabel')('');
42
- const layoutLabel = 'Layout';
45
+ const layoutLabel = useString(toolbarItemLayoutText)('');
43
46
  const layouts = useLayoutsData();
44
47
  const changeLayout = useChangeDefaultLayout();
45
48
  const {currentLayout, setLayout} = useLayout();
46
49
 
47
- const layout = layouts.findIndex((item) => item.name === currentLayout);
50
+ const layout = layouts.findIndex(item => item.name === currentLayout);
48
51
  const renderLayoutIcon = (showDropdown?: boolean) => {
49
52
  let onPress = () => {};
50
53
  let renderContent = [];
@@ -67,6 +70,25 @@ const LayoutIconButton = (props: LayoutIconButtonInterface) => {
67
70
  textColor: $config.FONT_COLOR,
68
71
  },
69
72
  };
73
+ iconButtonProps.isOnActionSheet = isOnActionSheet;
74
+ if (isOnActionSheet) {
75
+ // iconButtonProps.containerStyle = {
76
+ // backgroundColor: $config.CARD_LAYER_2_COLOR,
77
+ // width: 52,
78
+ // height: 52,
79
+ // borderRadius: 26,
80
+ // justifyContent: 'center',
81
+ // alignItems: 'center',
82
+ // };
83
+ iconButtonProps.btnTextProps.textStyle = {
84
+ color: $config.FONT_COLOR,
85
+ marginTop: 8,
86
+ fontSize: 12,
87
+ fontWeight: '400',
88
+ fontFamily: 'Source Sans Pro',
89
+ textAlign: 'center',
90
+ };
91
+ }
70
92
  const iconName = renderContent.push(
71
93
  props?.render ? (
72
94
  props.render(onPress)
@@ -95,7 +117,7 @@ const LayoutIconButton = (props: LayoutIconButtonInterface) => {
95
117
  containerStyle={{
96
118
  opacity: !activeUids || activeUids.length === 0 ? 0.6 : 1,
97
119
  }}
98
- setRef={(ref) => {
120
+ setRef={ref => {
99
121
  layoutBtnRef.current = ref;
100
122
  }}
101
123
  key={'defaultLayoutIconWithName'}