agora-appbuilder-core 4.0.0-test.2 → 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 (442) 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 +22 -22
  5. package/template/_eslintrc.js +3 -3
  6. package/template/_gitignore +12 -11
  7. package/template/_package-lock.json +20328 -20229
  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 +78 -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 +39 -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 +117 -111
  45. package/template/agora-rn-uikit/src/Rtc/Join.tsx +46 -27
  46. package/template/agora-rn-uikit/src/RtcConfigure.tsx +174 -75
  47. package/template/agora-rn-uikit/src/Utils/isBotUser.ts +15 -0
  48. package/template/agora-rn-uikit/src/Utils/quality.tsx +2 -2
  49. package/template/agora-rn-uikit/src/Views/MaxVideoView.native.tsx +41 -19
  50. package/template/agora-rn-uikit/src/Views/MaxVideoView.tsx +37 -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 +17 -31
  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 +191 -71
  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 +32 -45
  84. package/template/customization-api/types.ts +26 -0
  85. package/template/customization-api/utils.ts +4 -0
  86. package/template/customization-implementation/index.ts +0 -1
  87. package/template/defaultConfig.js +72 -0
  88. package/template/global.d.ts +9 -1
  89. package/template/index.js +1 -4
  90. package/template/index.web.js +0 -5
  91. package/template/ios/.xcode.env +11 -0
  92. package/template/ios/HelloWorld/AppDelegate.h +2 -4
  93. package/template/ios/HelloWorld/AppDelegate.mm +64 -0
  94. package/template/ios/HelloWorld/HelloWorldDebug.entitlements +10 -0
  95. package/template/ios/HelloWorld/Info.plist +7 -1
  96. package/template/ios/HelloWorld/main.m +2 -1
  97. package/template/ios/HelloWorld.xcodeproj/project.pbxproj +81 -119
  98. package/template/ios/HelloWorld.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  99. package/template/ios/HelloWorld.xcworkspace/contents.xcworkspacedata +10 -0
  100. package/template/ios/HelloWorld.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  101. package/template/ios/HelloWorldTests/HelloWorldTests.m +14 -13
  102. package/template/ios/HelloWorldTests/Info.plist +2 -2
  103. package/template/ios/Podfile +51 -21
  104. package/template/ios/Podfile.lock +553 -294
  105. package/template/jest.config.js +4 -0
  106. package/template/metro.config.js +7 -32
  107. package/template/package.json +48 -39
  108. package/template/react-native-toast-message/index.d.ts +3 -1
  109. package/template/react-native-toast-message/index.js +1 -0
  110. package/template/react-native-toast-message/src/components/base/index.js +20 -32
  111. package/template/react-native-toast-message/src/components/base/styles.js +18 -21
  112. package/template/react-native-toast-message/src/components/checkbox.js +24 -19
  113. package/template/react-native-toast-message/src/index.js +3 -1
  114. package/template/react-native-toast-message/src/index.sdk.tsx +4 -1
  115. package/template/src/App.tsx +79 -22
  116. package/template/src/AppRoutes.tsx +48 -3
  117. package/template/src/AppWrapper.tsx +25 -21
  118. package/template/src/SDKAppWrapper.tsx +11 -11
  119. package/template/src/app-state/useLocalUserInfo.ts +3 -3
  120. package/template/src/app-state/useNoiseSupression.native.tsx +67 -0
  121. package/template/src/app-state/useNoiseSupression.tsx +107 -0
  122. package/template/src/app-state/useVideoQuality.tsx +39 -0
  123. package/template/src/assets/font-styles.css +174 -3
  124. package/template/src/assets/fonts/icomoon.ttf +0 -0
  125. package/template/src/assets/selection.json +1 -1
  126. package/template/src/atoms/ActionMenu.tsx +50 -11
  127. package/template/src/atoms/Avatar.tsx +51 -0
  128. package/template/src/atoms/Card.tsx +21 -8
  129. package/template/src/atoms/Carousel.native.tsx +105 -0
  130. package/template/src/atoms/Carousel.tsx +103 -0
  131. package/template/src/atoms/Checkbox.tsx +98 -0
  132. package/template/src/atoms/CircularProgress.tsx +0 -1
  133. package/template/src/atoms/ClipboardIconButton.tsx +91 -0
  134. package/template/src/atoms/CustomIcon.tsx +46 -0
  135. package/template/src/atoms/DropDownMulti.tsx +349 -0
  136. package/template/src/atoms/Dropdown.tsx +3 -3
  137. package/template/src/atoms/IconButton.tsx +52 -9
  138. package/template/src/atoms/ImageIcon.tsx +18 -5
  139. package/template/src/atoms/InlineNotification.tsx +81 -0
  140. package/template/src/atoms/InviteInfo.tsx +4 -4
  141. package/template/src/atoms/MeetingLink.tsx +160 -0
  142. package/template/src/atoms/ParticipantsCount.tsx +20 -8
  143. package/template/src/atoms/Popup.tsx +46 -26
  144. package/template/src/atoms/PrimaryButton.tsx +19 -5
  145. package/template/src/atoms/RecordingInfo.tsx +8 -5
  146. package/template/src/atoms/SecondaryButton.tsx +2 -0
  147. package/template/src/atoms/Spacer.tsx +1 -0
  148. package/template/src/atoms/TertiaryButton.tsx +35 -5
  149. package/template/src/atoms/TextInput.tsx +2 -1
  150. package/template/src/atoms/Toolbar.tsx +102 -0
  151. package/template/src/atoms/ToolbarItem.tsx +85 -0
  152. package/template/src/atoms/ToolbarMenu.tsx +40 -0
  153. package/template/src/atoms/ToolbarMenuItem.tsx +104 -0
  154. package/template/src/atoms/ToolbarPreset.tsx +71 -0
  155. package/template/src/atoms/Tooltip.tsx +30 -13
  156. package/template/src/atoms/pagination/Pagination.tsx +127 -0
  157. package/template/src/atoms/pagination/usePagination.tsx +88 -0
  158. package/template/src/auth/AuthProvider.tsx +30 -32
  159. package/template/src/auth/AuthRoute.tsx +11 -3
  160. package/template/src/auth/IDPAuth.electron.tsx +4 -3
  161. package/template/src/auth/IDPAuth.tsx +10 -2
  162. package/template/src/auth/IDPLogoutComponent.tsx +14 -5
  163. package/template/src/auth/UserCancelPopup.tsx +11 -4
  164. package/template/src/auth/openIDPURL.electron.tsx +5 -4
  165. package/template/src/auth/openIDPURL.tsx +1 -1
  166. package/template/src/auth/useIDPAuth.electron.tsx +6 -3
  167. package/template/src/auth/useIDPAuth.tsx +0 -4
  168. package/template/src/auth/useTokenAuth.tsx +10 -8
  169. package/template/src/components/Chat.tsx +97 -78
  170. package/template/src/components/ChatContext.ts +2 -0
  171. package/template/src/components/ColorConfigure.tsx +0 -1
  172. package/template/src/components/CommonStyles.ts +9 -2
  173. package/template/src/components/Controls.tsx +914 -182
  174. package/template/src/components/Controls1.native.tsx +9 -5
  175. package/template/src/components/DeviceConfigure.native.tsx +2 -2
  176. package/template/src/components/DeviceConfigure.tsx +88 -43
  177. package/template/src/components/DeviceContext.tsx +2 -0
  178. package/template/src/components/EventsConfigure.tsx +685 -81
  179. package/template/src/components/GraphQLProvider.tsx +51 -33
  180. package/template/src/components/GridVideo.tsx +30 -16
  181. package/template/src/components/HostControlView.tsx +11 -14
  182. package/template/src/components/JoinPhrase.tsx +0 -1
  183. package/template/src/components/Leftbar.tsx +110 -0
  184. package/template/src/components/Navbar.tsx +296 -149
  185. package/template/src/components/NavbarMobile.tsx +119 -0
  186. package/template/src/components/NetworkQualityContext.tsx +12 -6
  187. package/template/src/components/ParticipantsView.tsx +62 -55
  188. package/template/src/components/PinnedVideo.tsx +191 -119
  189. package/template/src/components/Precall.native.tsx +155 -72
  190. package/template/src/components/Precall.tsx +225 -73
  191. package/template/src/components/RTMConfigure.tsx +180 -63
  192. package/template/src/components/Rightbar.tsx +112 -0
  193. package/template/src/components/SdkApiContext.tsx +26 -24
  194. package/template/src/components/SdkMuteToggleListener.tsx +8 -12
  195. package/template/src/components/SessionContext.tsx +0 -1
  196. package/template/src/components/Settings.tsx +33 -4
  197. package/template/src/components/SettingsView.tsx +42 -9
  198. package/template/src/components/Share.tsx +130 -72
  199. package/template/src/components/StorageContext.tsx +5 -4
  200. package/template/src/components/ToastComponent.tsx +7 -1
  201. package/template/src/components/WhiteboardLayout.tsx +291 -0
  202. package/template/src/components/chat-messages/useChatMessages.tsx +454 -239
  203. package/template/src/components/chat-ui/{useChatUIControl.tsx → useChatUIControls.tsx} +29 -29
  204. package/template/src/components/common/Error.tsx +2 -0
  205. package/template/src/components/common/Logo.tsx +2 -2
  206. package/template/src/components/contexts/LiveStreamDataContext.tsx +13 -12
  207. package/template/src/components/contexts/ScreenShareContext.tsx +1 -0
  208. package/template/src/components/contexts/VideoMeetingDataContext.tsx +6 -6
  209. package/template/src/components/contexts/WaitingRoomContext.tsx +50 -0
  210. package/template/src/components/contexts/WhiteboardContext.tsx +54 -54
  211. package/template/src/components/disable-chat/useDisableChat.tsx +32 -0
  212. package/template/src/components/livestream/LiveStreamContext.tsx +314 -220
  213. package/template/src/components/livestream/Types.ts +36 -20
  214. package/template/src/components/livestream/views/LiveStreamAttendeeLandingTile.tsx +295 -0
  215. package/template/src/components/livestream/views/LiveStreamControls.tsx +5 -10
  216. package/template/src/components/meeting-info-invite/MeetingInfo.tsx +82 -0
  217. package/template/src/components/meeting-info-invite/MeetingInfoCardHeader.tsx +86 -0
  218. package/template/src/components/meeting-info-invite/MeetingInfoGridTile.tsx +218 -0
  219. package/template/src/components/meeting-info-invite/MeetingInfoLinks.tsx +122 -0
  220. package/template/src/components/participants/AllAudienceParticipants.tsx +19 -20
  221. package/template/src/components/participants/AllHostParticipants.tsx +20 -19
  222. package/template/src/components/participants/Participant.tsx +45 -16
  223. package/template/src/components/participants/ParticipantSectionTitle.tsx +5 -2
  224. package/template/src/components/participants/ScreenshareParticipants.tsx +17 -19
  225. package/template/src/components/participants/UserActionMenuOptions.tsx +173 -62
  226. package/template/src/components/participants/WaitingRoomParticipants.tsx +74 -0
  227. package/template/src/components/popups/InvitePopup.tsx +105 -44
  228. package/template/src/components/popups/StartScreenSharePopup.native.tsx +26 -23
  229. package/template/src/components/popups/StopRecordingPopup.tsx +11 -5
  230. package/template/src/components/popups/StopScreenSharePopup.native.tsx +17 -5
  231. package/template/src/components/popups/WhiteboardClearAllPopup.tsx +123 -0
  232. package/template/src/components/precall/LocalMute.tsx +69 -45
  233. package/template/src/components/precall/PermissionHelper.tsx +31 -28
  234. package/template/src/components/precall/PreCallSettings.tsx +1 -0
  235. package/template/src/components/precall/VideoFallback.tsx +173 -0
  236. package/template/src/components/precall/VideoPreview.native.tsx +19 -53
  237. package/template/src/components/precall/VideoPreview.tsx +29 -164
  238. package/template/src/components/precall/index.tsx +2 -0
  239. package/template/src/components/precall/joinCallBtn.native.tsx +9 -4
  240. package/template/src/components/precall/joinCallBtn.tsx +9 -4
  241. package/template/src/components/precall/joinWaitingRoomBtn.native.tsx +210 -0
  242. package/template/src/components/precall/joinWaitingRoomBtn.tsx +250 -0
  243. package/template/src/components/precall/meetingTitle.tsx +37 -11
  244. package/template/src/components/precall/selectDevice.tsx +5 -5
  245. package/template/src/components/precall/textInput.tsx +17 -19
  246. package/template/src/components/precall/usePreCall.tsx +4 -4
  247. package/template/src/components/recording-bot/RecordingBotRoute.tsx +42 -0
  248. package/template/src/components/recordings/RecordingsDateTable.tsx +62 -0
  249. package/template/src/components/recordings/RecordingsModal.tsx +135 -0
  250. package/template/src/components/recordings/ViewRecordingsModal.tsx +51 -0
  251. package/template/src/components/recordings/recording-table.tsx +154 -0
  252. package/template/src/components/recordings/style.ts +183 -0
  253. package/template/src/components/recordings/utils.ts +80 -0
  254. package/template/src/components/{meeting-info/useMeetingInfo.tsx → room-info/useRoomInfo.tsx} +46 -12
  255. package/template/src/components/{meeting-info/useSetMeetingInfo.tsx → room-info/useSetRoomInfo.tsx} +12 -12
  256. package/template/src/components/useShareLink.tsx +23 -60
  257. package/template/src/components/useUserPreference.tsx +54 -17
  258. package/template/src/components/useVideoCall.tsx +52 -7
  259. package/template/src/components/virtual-background/VBButton.tsx +64 -0
  260. package/template/src/components/virtual-background/VBCard.native.tsx +282 -0
  261. package/template/src/components/virtual-background/VBCard.tsx +272 -0
  262. package/template/src/components/virtual-background/VBPanel.tsx +279 -0
  263. package/template/src/components/virtual-background/VButils.native.ts +37 -0
  264. package/template/src/components/virtual-background/VButils.ts +104 -0
  265. package/template/src/components/virtual-background/VideoPreview.native.tsx +43 -0
  266. package/template/src/components/virtual-background/VideoPreview.tsx +106 -0
  267. package/template/src/components/virtual-background/imagePaths.ts +87 -0
  268. package/template/src/components/virtual-background/images/beachImageBase64.ts +1 -0
  269. package/template/src/components/virtual-background/images/bedroomImageBase64.ts +1 -0
  270. package/template/src/components/virtual-background/images/bookImageBase64.ts +1 -0
  271. package/template/src/components/virtual-background/images/earthImageBase64.ts +1 -0
  272. package/template/src/components/virtual-background/images/index.ts +37 -0
  273. package/template/src/components/virtual-background/images/lampImageBase64.ts +1 -0
  274. package/template/src/components/virtual-background/images/mountainsImageBase64.ts +1 -0
  275. package/template/src/components/virtual-background/images/office1ImageBase64.ts +1 -0
  276. package/template/src/components/virtual-background/images/officeImageBase64.ts +1 -0
  277. package/template/src/components/virtual-background/images/plantsImageBase64.ts +1 -0
  278. package/template/src/components/virtual-background/images/skyImageBase64.ts +1 -0
  279. package/template/src/components/virtual-background/images/wallImageBase64.ts +1 -0
  280. package/template/src/components/virtual-background/useVB.native.tsx +185 -0
  281. package/template/src/components/virtual-background/useVB.tsx +267 -0
  282. package/template/src/components/whiteboard/StrokeWidthTool.tsx +137 -0
  283. package/template/src/components/whiteboard/WhiteboardButton.tsx +93 -0
  284. package/template/src/components/whiteboard/WhiteboardCanvas.tsx +99 -0
  285. package/template/src/components/whiteboard/WhiteboardConfigure.native.tsx +148 -0
  286. package/template/src/components/whiteboard/WhiteboardConfigure.tsx +446 -0
  287. package/template/src/components/whiteboard/WhiteboardCursor.tsx +152 -0
  288. package/template/src/components/whiteboard/WhiteboardToolBox.tsx +1246 -0
  289. package/template/src/components/whiteboard/WhiteboardView.native.tsx +188 -0
  290. package/template/src/components/whiteboard/WhiteboardView.tsx +81 -0
  291. package/template/src/components/whiteboard/WhiteboardWidget.tsx +685 -0
  292. package/template/src/components/whiteboard/WhiteboardWrapper.tsx +38 -0
  293. package/template/src/language/default-labels/commonLabels.ts +51 -14
  294. package/template/src/language/default-labels/createScreenLabels.ts +97 -17
  295. package/template/src/language/default-labels/joinScreenLabels.ts +45 -6
  296. package/template/src/language/default-labels/precallScreenLabels.ts +149 -25
  297. package/template/src/language/default-labels/shareLinkScreenLabels.ts +85 -37
  298. package/template/src/language/default-labels/videoCallScreenLabels.ts +1195 -158
  299. package/template/src/pages/Create.tsx +118 -92
  300. package/template/src/pages/Endcall.tsx +2 -2
  301. package/template/src/pages/Join.tsx +67 -45
  302. package/template/src/pages/VideoCall.tsx +240 -132
  303. package/template/src/pages/video-call/ActionSheet.native.tsx +33 -3
  304. package/template/src/pages/video-call/ActionSheet.tsx +54 -15
  305. package/template/src/pages/video-call/ActionSheetContent.tsx +487 -313
  306. package/template/src/pages/video-call/ActionSheetHandle.tsx +7 -1
  307. package/template/src/pages/video-call/DefaultLayouts.ts +20 -8
  308. package/template/src/pages/video-call/NameWithMicIcon.tsx +41 -64
  309. package/template/src/pages/video-call/RenderComponent.tsx +14 -30
  310. package/template/src/pages/video-call/SidePanelHeader.tsx +227 -29
  311. package/template/src/pages/video-call/VideoCallMobileView.tsx +199 -99
  312. package/template/src/pages/video-call/VideoCallScreen.native.tsx +2 -25
  313. package/template/src/pages/video-call/VideoCallScreen.tsx +233 -57
  314. package/template/src/pages/video-call/VideoCallScreenWrapper.tsx +41 -0
  315. package/template/src/pages/video-call/VideoComponent.tsx +60 -8
  316. package/template/src/pages/video-call/VideoRenderer.tsx +237 -98
  317. package/template/src/pages/video-call/VisibilitySensor.tsx +104 -0
  318. package/template/src/pages/video-call/index.ts +42 -8
  319. package/template/src/rtm/RTMEngine.ts +9 -4
  320. package/template/src/rtm-events/constants.ts +21 -3
  321. package/template/src/rtm-events-api/Events.ts +6 -4
  322. package/template/src/rtm-events-api/LocalEvents.ts +14 -0
  323. package/template/src/rtm-events-api/types.ts +5 -5
  324. package/template/src/selection.json +1 -0
  325. package/template/src/subComponents/ChatBubble.tsx +87 -67
  326. package/template/src/subComponents/ChatContainer.tsx +70 -49
  327. package/template/src/subComponents/ChatInput.ios.tsx +32 -85
  328. package/template/src/subComponents/ChatInput.tsx +31 -80
  329. package/template/src/subComponents/Checkbox.native.tsx +46 -46
  330. package/template/src/subComponents/Checkbox.tsx +7 -6
  331. package/template/src/subComponents/CopyJoinInfo.tsx +31 -11
  332. package/template/src/subComponents/EndcallPopup.tsx +83 -12
  333. package/template/src/subComponents/FallbackLogo.tsx +2 -2
  334. package/template/src/subComponents/LanguageSelector.tsx +34 -30
  335. package/template/src/subComponents/LayoutIconButton.tsx +34 -17
  336. package/template/src/subComponents/LayoutIconDropdown.tsx +21 -8
  337. package/template/src/subComponents/Loading.tsx +22 -9
  338. package/template/src/subComponents/LocalAudioMute.tsx +87 -34
  339. package/template/src/subComponents/LocalEndCall.tsx +48 -31
  340. package/template/src/subComponents/LocalSwitchCamera.tsx +49 -11
  341. package/template/src/subComponents/LocalVideoMute.tsx +87 -35
  342. package/template/src/subComponents/NetworkQualityPill.tsx +22 -38
  343. package/template/src/subComponents/Recording.tsx +29 -9
  344. package/template/src/subComponents/RemoteAudioMute.tsx +5 -5
  345. package/template/src/subComponents/RemoteMutePopup.tsx +55 -14
  346. package/template/src/subComponents/RemoteVideoMute.tsx +5 -5
  347. package/template/src/subComponents/RemoveMeetingPopup.tsx +19 -6
  348. package/template/src/subComponents/RemoveScreensharePopup.tsx +20 -5
  349. package/template/src/subComponents/ScreenShareNotice.tsx +11 -6
  350. package/template/src/subComponents/SelectDevice.tsx +103 -34
  351. package/template/src/subComponents/SelectDeviceSettings.backup.tsx +9 -6
  352. package/template/src/subComponents/SidePanelButtons.ts +0 -3
  353. package/template/src/subComponents/SidePanelEnum.tsx +2 -0
  354. package/template/src/subComponents/SidePanelHeader.tsx +97 -63
  355. package/template/src/subComponents/ToastConfig.tsx +70 -61
  356. package/template/src/subComponents/caption/Caption.tsx +132 -0
  357. package/template/src/subComponents/caption/CaptionContainer.tsx +302 -0
  358. package/template/src/subComponents/caption/CaptionIcon.tsx +111 -0
  359. package/template/src/subComponents/caption/CaptionText.tsx +182 -0
  360. package/template/src/subComponents/caption/DownloadTranscriptBtn.tsx +65 -0
  361. package/template/src/subComponents/caption/LanguageSelectorPopup.tsx +192 -0
  362. package/template/src/subComponents/caption/Transcript.tsx +452 -0
  363. package/template/src/subComponents/caption/TranscriptIcon.tsx +123 -0
  364. package/template/src/subComponents/caption/TranscriptText.tsx +98 -0
  365. package/template/src/subComponents/caption/index.ts +3 -0
  366. package/template/src/subComponents/caption/proto/ptoto.js +91 -0
  367. package/template/src/subComponents/caption/proto/test.proto +23 -0
  368. package/template/src/subComponents/caption/useCaption.tsx +123 -0
  369. package/template/src/subComponents/caption/useCaptionWidth.ts +27 -0
  370. package/template/src/subComponents/caption/useSTTAPI.tsx +179 -0
  371. package/template/src/subComponents/caption/useStreamMessageUtils.native.ts +211 -0
  372. package/template/src/subComponents/caption/useStreamMessageUtils.ts +235 -0
  373. package/template/src/subComponents/caption/useTranscriptDownload.native.ts +63 -0
  374. package/template/src/subComponents/caption/useTranscriptDownload.ts +52 -0
  375. package/template/src/subComponents/caption/utils.ts +126 -0
  376. package/template/src/subComponents/chat/ChatParticipants.tsx +60 -24
  377. package/template/src/subComponents/livestream/ApprovedLiveStreamControlsView.tsx +2 -2
  378. package/template/src/subComponents/livestream/CurrentLiveStreamRequestsView.tsx +19 -20
  379. package/template/src/subComponents/livestream/controls/LocalRaiseHand.tsx +66 -35
  380. package/template/src/subComponents/livestream/controls/RemoteLiveStreamApprovedRequestRecall.tsx +3 -2
  381. package/template/src/subComponents/livestream/controls/RemoteLiveStreamRequestApprove.tsx +10 -6
  382. package/template/src/subComponents/livestream/controls/RemoteLiveStreamRequestReject.tsx +28 -19
  383. package/template/src/subComponents/recording/useIsRecordingBot.tsx +38 -0
  384. package/template/src/subComponents/recording/useRecording.tsx +251 -150
  385. package/template/src/subComponents/recording/useRecordingLayoutQuery.tsx +0 -1
  386. package/template/src/subComponents/screenshare/ScreenshareButton.tsx +18 -13
  387. package/template/src/subComponents/screenshare/ScreenshareConfigure.native.tsx +164 -93
  388. package/template/src/subComponents/screenshare/ScreenshareConfigure.tsx +163 -108
  389. package/template/src/subComponents/waiting-rooms/WaitingRoomControls.tsx +85 -0
  390. package/template/src/subComponents/waiting-rooms/useWaitingRoomAPI.ts +75 -0
  391. package/template/src/theme/index.ts +13 -0
  392. package/template/src/utils/SdkMethodEvents.ts +5 -5
  393. package/template/src/utils/axiomLogger.ts +117 -0
  394. package/template/src/utils/book.jpg +0 -0
  395. package/template/src/utils/common.tsx +96 -1
  396. package/template/src/utils/constants.ts +4 -0
  397. package/template/src/utils/getCustomRoute.ts +7 -0
  398. package/template/src/utils/index.tsx +34 -0
  399. package/template/src/utils/useActionSheet.tsx +50 -0
  400. package/template/src/utils/useActiveSpeaker.ts +38 -0
  401. package/template/src/utils/useAppState.ts +17 -0
  402. package/template/src/utils/useAsyncEffect.ts +138 -0
  403. package/template/src/utils/{useCreateMeeting.ts → useCreateRoom.ts} +19 -14
  404. package/template/src/utils/useEndCall.ts +65 -0
  405. package/template/src/utils/useFindActiveSpeaker.native.ts +4 -0
  406. package/template/src/utils/useFindActiveSpeaker.ts +335 -0
  407. package/template/src/utils/useGetMeetingPhrase.ts +10 -10
  408. package/template/src/utils/useIsAudioEnabled.ts +3 -3
  409. package/template/src/utils/useIsLocalUserSpeaking.native.ts +4 -0
  410. package/template/src/utils/useIsLocalUserSpeaking.ts +103 -0
  411. package/template/src/utils/useIsPSTN.ts +3 -3
  412. package/template/src/utils/useIsVideoEnabled.ts +3 -3
  413. package/template/src/utils/useJoinRoom.ts +199 -0
  414. package/template/src/utils/{useIsActiveSpeaker.ts → useLocalAudio.ts} +23 -12
  415. package/template/src/{components/Settings.native.tsx → utils/useMenu.tsx} +16 -6
  416. package/template/src/utils/useModal.tsx +8 -0
  417. package/template/src/utils/useMutePSTN.ts +2 -2
  418. package/template/src/utils/useMuteToggleLocal.ts +21 -9
  419. package/template/src/utils/useRemoteEndCall.ts +4 -4
  420. package/template/src/utils/useRemoteEndScreenshare.ts +4 -4
  421. package/template/src/utils/useRemoteMute.ts +7 -7
  422. package/template/src/utils/useRemoteRequest.ts +7 -7
  423. package/template/src/utils/useSearchParams.tsx +18 -0
  424. package/template/src/utils/useString.ts +13 -3
  425. package/template/src/utils/useSwitchCamera.native.tsx +25 -0
  426. package/template/src/utils/useSwitchCamera.tsx +19 -0
  427. package/template/src/utils/useToolbar.tsx +59 -0
  428. package/template/src/wasms/agora-virtual-background.wasm +0 -0
  429. package/template/static.d.ts +42 -0
  430. package/template/web/index.html +20 -0
  431. package/template/webpack.commons.js +21 -10
  432. package/template/_buckconfig +0 -6
  433. package/template/_gitattributes +0 -1
  434. package/template/agora-rn-uikit/src/Contexts/RenderContext.tsx +0 -10
  435. package/template/agora-rn-uikit/src/Reducer/ActiveSpeakerDetected.ts +0 -11
  436. package/template/android/app/_BUCK +0 -55
  437. package/template/android/app/build_defs.bzl +0 -19
  438. package/template/bridge/rtc/webNg/LocalView.tsx +0 -20
  439. package/template/ios/HelloWorld/AppDelegate.m +0 -74
  440. package/template/src/pages/video-call/CustomUserContextHolder.tsx +0 -20
  441. package/template/src/utils/useButtonTemplate.tsx +0 -44
  442. package/template/src/utils/useJoinMeeting.ts +0 -142
@@ -32,6 +32,11 @@ import SDKMethodEventsManager from '../utils/SdkMethodEvents';
32
32
  import StorageContext from '../components/StorageContext';
33
33
  import UserCancelPopup from './UserCancelPopup';
34
34
  import {exitApp} from './openIDPURL';
35
+ import {useString} from '../utils/useString';
36
+ import {
37
+ authSessionTimeoutToastHeading,
38
+ loadingText,
39
+ } from '../language/default-labels/commonLabels';
35
40
 
36
41
  export const GET_USER = gql`
37
42
  query getUser {
@@ -58,6 +63,8 @@ interface AuthContextInterface {
58
63
  const AuthContext = createContext<AuthContextInterface | null>(null);
59
64
 
60
65
  const AuthProvider = (props: AuthProviderProps) => {
66
+ const loadingLabel = useString(loadingText)();
67
+ const timeoutHeading = useString(authSessionTimeoutToastHeading)();
61
68
  const regEvent = useRef(true);
62
69
  const refreshTimeoutWeb = useRef(null);
63
70
  const [showNativePopup, setShowNativePopup] = useState(false);
@@ -92,7 +99,6 @@ const AuthProvider = (props: AuthProviderProps) => {
92
99
  //production - 59min 1 sec
93
100
  // if (authenticated && $config.ENABLE_IDP_AUTH && isWeb()) {
94
101
  // refreshTimeoutWeb.current = setTimeout(() => {
95
- // console.log('debugging calling refresh');
96
102
  // fetch(`${$config.BACKEND_ENDPOINT}/v1/token/refresh`, {
97
103
  // method: 'POST',
98
104
  // credentials: 'include',
@@ -103,19 +109,15 @@ const AuthProvider = (props: AuthProviderProps) => {
103
109
  // .then((data) => {
104
110
  // clearTimeout(refreshTimeoutWeb.current);
105
111
  // tokenRefreshWeb();
106
- // console.log('debugging cookie set');
107
112
  // })
108
113
  // .catch((error) => {
109
- // console.log('debugging error', error);
110
114
  // });
111
115
  // }, timeout);
112
116
  // } else if (!authenticated && $config.ENABLE_IDP_AUTH && isWeb()) {
113
117
  // //not authenticated
114
118
  // if (refreshTimeoutWeb.current) {
115
- // console.log('debugging clearing the interval');
116
119
  // clearTimeout(refreshTimeoutWeb.current);
117
120
  // } else {
118
- // console.log('debugging no interval to clear');
119
121
  // }
120
122
  // }
121
123
  };
@@ -136,20 +138,18 @@ const AuthProvider = (props: AuthProviderProps) => {
136
138
  }, [store?.token]);
137
139
 
138
140
  const deepLinkUrl = (link: string | null) => {
139
- console.log('debugging Deep-linking url: ', link);
140
-
141
141
  if (link !== null) {
142
142
  //deeplinking handling with authentication enabled
143
143
  if ($config.ENABLE_IDP_AUTH) {
144
144
  const url = processDeepLinkURI(link);
145
- console.log('debugging Deep-linking processed url', url);
146
145
  try {
147
146
  //login link expiry fix
148
147
  if (url?.indexOf('msg') !== -1) {
149
148
  //adding time delay to open in app browser
150
149
  Toast.show({
150
+ leadingIconName: 'alert',
151
151
  type: 'error',
152
- text1: 'Your session has timed out, Retrying...',
152
+ text1: timeoutHeading,
153
153
  visibilityTime: 3000,
154
154
  });
155
155
  setTimeout(() => {
@@ -158,7 +158,6 @@ const AuthProvider = (props: AuthProviderProps) => {
158
158
  } else if (url?.indexOf('authorize') !== -1) {
159
159
  const token = getParamFromURL(url, 'token');
160
160
  if (token) {
161
- console.log('debugging deep-linking got token');
162
161
  enableTokenAuth(token)
163
162
  .then(() => {
164
163
  setIsAuthenticated(true);
@@ -188,7 +187,6 @@ const AuthProvider = (props: AuthProviderProps) => {
188
187
  }
189
188
  } else {
190
189
  //deeplinking handling with authentication enabled
191
- console.log('debugging path', processDeepLinkURI(link));
192
190
  const url = processDeepLinkURI(link);
193
191
  setReturnTo(url);
194
192
  }
@@ -200,9 +198,7 @@ const AuthProvider = (props: AuthProviderProps) => {
200
198
  if (isIOS() || isAndroid()) {
201
199
  const deepLink = async () => {
202
200
  const initialUrl = await Linking.getInitialURL();
203
- console.log('debugging getting initialUrl', initialUrl);
204
- Linking.addEventListener('url', (e) => {
205
- console.log('debugging url from listener', e.url);
201
+ Linking.addEventListener('url', e => {
206
202
  deepLinkUrl(e.url);
207
203
  });
208
204
  deepLinkUrl(initialUrl);
@@ -216,7 +212,7 @@ const AuthProvider = (props: AuthProviderProps) => {
216
212
  regEvent.current = false;
217
213
  SDKMethodEventsManager.on('login', async (res, rej, token) => {
218
214
  try {
219
- setStore((prevState) => {
215
+ setStore(prevState => {
220
216
  return {...prevState, token};
221
217
  });
222
218
  setTimeout(async () => {
@@ -224,7 +220,7 @@ const AuthProvider = (props: AuthProviderProps) => {
224
220
  .then(() => {
225
221
  res();
226
222
  })
227
- .catch((error) => {
223
+ .catch(error => {
228
224
  rej('SDK Login failed' + JSON.stringify(error));
229
225
  });
230
226
  });
@@ -244,6 +240,7 @@ const AuthProvider = (props: AuthProviderProps) => {
244
240
 
245
241
  if (!isSDK() && $config.ENABLE_TOKEN_AUTH) {
246
242
  Toast.show({
243
+ leadingIconName: 'alert',
247
244
  type: 'error',
248
245
  text1: 'Token Server Authentication only supports SDK integration',
249
246
  text2: 'Please use Auth0 Authentication.',
@@ -252,6 +249,7 @@ const AuthProvider = (props: AuthProviderProps) => {
252
249
  }
253
250
  if (isSDK() && $config.ENABLE_IDP_AUTH) {
254
251
  Toast.show({
252
+ leadingIconName: 'alert',
255
253
  type: 'error',
256
254
  text1: 'Auth0 Authentication does not support SDK integration',
257
255
  text2: 'Please use Token Server Authentication.',
@@ -263,6 +261,7 @@ const AuthProvider = (props: AuthProviderProps) => {
263
261
  useEffect(() => {
264
262
  if (!authenticated && authError) {
265
263
  Toast.show({
264
+ leadingIconName: 'alert',
266
265
  type: 'error',
267
266
  text1: authError,
268
267
  visibilityTime: 3000,
@@ -285,7 +284,8 @@ const AuthProvider = (props: AuthProviderProps) => {
285
284
 
286
285
  useEffect(() => {
287
286
  // Ignore if on sdk since IDP flow is not supported
288
- if (isSDK()) {
287
+ // For unauthenticated flow authLogin should be called to get the token
288
+ if (isSDK() && ENABLE_AUTH) {
289
289
  setIsAuthenticated(true);
290
290
  setLoading(false);
291
291
  return () => {};
@@ -300,7 +300,7 @@ const AuthProvider = (props: AuthProviderProps) => {
300
300
  ) {
301
301
  //fetch user details
302
302
  getUserDetails()
303
- .then((_) => {
303
+ .then(_ => {
304
304
  //Each time user refresh the page we have to redirect the user to IDP login.then only we can able to refresh the token
305
305
  //because we can't read the cookie so we don't know expirytime.
306
306
  //so each time page refresh will get new token
@@ -319,8 +319,9 @@ const AuthProvider = (props: AuthProviderProps) => {
319
319
  } else {
320
320
  if (location?.search?.indexOf('msg') !== -1) {
321
321
  Toast.show({
322
+ leadingIconName: 'alert',
322
323
  type: 'error',
323
- text1: 'Your session has timed out, Retrying...',
324
+ text1: timeoutHeading,
324
325
  visibilityTime: 3000,
325
326
  });
326
327
  setTimeout(() => {
@@ -350,6 +351,7 @@ const AuthProvider = (props: AuthProviderProps) => {
350
351
  : isIOS() || isAndroid()
351
352
  ? deepLinkUrl
352
353
  : '',
354
+ timeoutHeading,
353
355
  )?.then((response: any) => {
354
356
  if (isAndroid() || isIOS()) {
355
357
  if (response && response?.showNativePopup) {
@@ -363,11 +365,11 @@ const AuthProvider = (props: AuthProviderProps) => {
363
365
  //AUTH -> IDP -> SDK ONLY
364
366
  else if ($config.ENABLE_TOKEN_AUTH && isSDK()) {
365
367
  enableTokenAuth()
366
- .then((res) => {
368
+ .then(res => {
367
369
  setIsAuthenticated(true);
368
370
  history.push('/create');
369
371
  })
370
- .catch((error) => {
372
+ .catch(error => {
371
373
  //don't show token expire/not found toast in the sdk
372
374
  //we have event emitter to inform the customer application
373
375
  //they have to listen for those events
@@ -389,8 +391,8 @@ const AuthProvider = (props: AuthProviderProps) => {
389
391
  fetch(GET_UNAUTH_FLOW_API_ENDPOINT(), {
390
392
  credentials: 'include',
391
393
  })
392
- .then((response) => response.json())
393
- .then((response) => {
394
+ .then(response => response.json())
395
+ .then(response => {
394
396
  // unauthenticated flow all platform we will have to handle the token manually
395
397
  // we need to store token manually
396
398
  if (!response.token) {
@@ -398,10 +400,9 @@ const AuthProvider = (props: AuthProviderProps) => {
398
400
  } else {
399
401
  enableTokenAuth(response.token)
400
402
  .then(() => {
401
- console.log('debugging token auth enabled');
402
403
  //set auth enabled on useEffect
403
404
  })
404
- .catch((error) => {
405
+ .catch(error => {
405
406
  //we don't need to show token expire/not found toast in the sdk
406
407
  //we have event emitter to inform the customer application
407
408
  //they have to listen for those events
@@ -416,7 +417,7 @@ const AuthProvider = (props: AuthProviderProps) => {
416
417
  });
417
418
  }
418
419
  })
419
- .catch((error) => {
420
+ .catch(error => {
420
421
  if (error instanceof Error) {
421
422
  setAuthError(error.message);
422
423
  } else {
@@ -430,8 +431,7 @@ const AuthProvider = (props: AuthProviderProps) => {
430
431
  const authLogout = () => {
431
432
  if (ENABLE_AUTH && $config.ENABLE_IDP_AUTH && !isSDK()) {
432
433
  idpLogout(isAndroid() || isIOS() ? setShowNativePopup : {})
433
- .then((res) => {
434
- console.log('user successfully logged out');
434
+ .then(res => {
435
435
  setIsAuthenticated(false);
436
436
  })
437
437
  .catch(() => {
@@ -450,9 +450,7 @@ const AuthProvider = (props: AuthProviderProps) => {
450
450
  history.push('/create');
451
451
  } else {
452
452
  tokenLogout()
453
- .then((res) => {
454
- console.log('user successfully logged out');
455
- })
453
+ .then(res => {})
456
454
  .catch(() => {
457
455
  console.error('user logout failed');
458
456
  setAuthError('Error occured on Logout, please try again.');
@@ -490,7 +488,7 @@ const AuthProvider = (props: AuthProviderProps) => {
490
488
  <></>
491
489
  )}
492
490
  {(!authenticated && !ENABLE_AUTH) || (ENABLE_AUTH && loading) ? (
493
- <Loading text={'Loading...'} />
491
+ <Loading text={loadingLabel} />
494
492
  ) : (
495
493
  props.children
496
494
  )}
@@ -18,21 +18,29 @@ import isSDK from '../utils/isSDK';
18
18
  import Loading from '../subComponents/Loading';
19
19
  import Login from '../pages/Login';
20
20
  import {isAndroid, isIOS} from '../utils/common';
21
+ import {useString} from '../utils/useString';
22
+ import {
23
+ authAuthenticationFailedText,
24
+ loadingText,
25
+ } from '../language/default-labels/commonLabels';
21
26
 
22
27
  interface PrivateRouteProps extends RouteProps {
23
28
  children: React.ReactNode;
24
29
  }
25
30
 
26
- const AuthRoute: React.FC<PrivateRouteProps> = (props) => {
31
+ const AuthRoute: React.FC<PrivateRouteProps> = props => {
27
32
  const didMountRef = useRef(false);
28
33
  const {authenticated} = useAuth();
34
+ const loadingLabel = useString(loadingText)();
35
+ const failedtext = useString(authAuthenticationFailedText)();
29
36
 
30
37
  useEffect(() => {
31
38
  if (!didMountRef.current) return;
32
39
  if (!authenticated) {
33
40
  Toast.show({
41
+ leadingIconName: 'alert',
34
42
  type: 'error',
35
- text1: 'Authentication failed',
43
+ text1: failedtext,
36
44
  visibilityTime: 1000,
37
45
  });
38
46
  }
@@ -55,7 +63,7 @@ const AuthRoute: React.FC<PrivateRouteProps> = (props) => {
55
63
  //if user closes inapp browser then show login/signup button
56
64
  // <Login />
57
65
  //)
58
- <Loading text={'Loading...'} />
66
+ <Loading text={loadingLabel} />
59
67
  );
60
68
  // <Redirect
61
69
  // to={{
@@ -3,20 +3,21 @@ import {useAuth} from './AuthProvider';
3
3
  import {useHistory, useParams} from '../components/Router';
4
4
  import Loading from '../subComponents/Loading';
5
5
  import useTokenAuth from './useTokenAuth';
6
+ import {useString} from '../utils/useString';
7
+ import {authAuthorizingApplicationText} from '../language/default-labels/commonLabels';
6
8
 
7
9
  export const IDPAuth = () => {
8
10
  const {setIsAuthenticated} = useAuth();
9
11
  const {enableTokenAuth} = useTokenAuth();
10
12
  const history = useHistory();
11
13
  const {token}: {token: string} = useParams();
14
+ const text = useString(authAuthorizingApplicationText)();
12
15
 
13
16
  useEffect(() => {
14
- console.log('debugging electron token', token);
15
17
  if (token) {
16
18
  enableTokenAuth(token)
17
19
  .then(() => {
18
20
  setIsAuthenticated(true);
19
- console.log('debugging electron login success');
20
21
  history.push('/');
21
22
  })
22
23
  .catch(() => {
@@ -26,5 +27,5 @@ export const IDPAuth = () => {
26
27
  }
27
28
  }, []);
28
29
 
29
- return <Loading text={'Authorizing app...'} />;
30
+ return <Loading text={text} />;
30
31
  };
@@ -6,8 +6,15 @@ import {useApolloClient} from '@apollo/client';
6
6
  import Toast from '../../react-native-toast-message';
7
7
  import {getParamFromURL} from '../utils/common';
8
8
  import useTokenAuth from './useTokenAuth';
9
+ import {useString} from '../utils/useString';
10
+ import {
11
+ authAuthorizingApplicationText,
12
+ authErrorOnLoginToastHeading,
13
+ } from '../language/default-labels/commonLabels';
9
14
 
10
15
  export const IDPAuth = () => {
16
+ const toastheading = useString(authErrorOnLoginToastHeading)();
17
+ const text = useString(authAuthorizingApplicationText)();
11
18
  const {setIsAuthenticated, authLogin} = useAuth();
12
19
  const history = useHistory();
13
20
  const {token: returnTo}: {token: string} = useParams();
@@ -45,8 +52,9 @@ export const IDPAuth = () => {
45
52
  } else {
46
53
  setIsAuthenticated(false);
47
54
  Toast.show({
55
+ leadingIconName: 'alert',
48
56
  type: 'error',
49
- text1: 'Error occured on Login, Please login again.',
57
+ text1: toastheading,
50
58
  visibilityTime: 3000,
51
59
  });
52
60
  setTimeout(() => {
@@ -55,5 +63,5 @@ export const IDPAuth = () => {
55
63
  }
56
64
  }, []);
57
65
 
58
- return <Loading text={'Authorizing app...'} />;
66
+ return <Loading text={text} />;
59
67
  };
@@ -8,6 +8,14 @@ import {isMobileUA, useIsDesktop} from '../utils/common';
8
8
  import TertiaryButton from '../atoms/TertiaryButton';
9
9
  import isSDK from '../utils/isSDK';
10
10
  import {useAuth} from './AuthProvider';
11
+ import {useString} from '../utils/useString';
12
+ import {
13
+ authLogoutPopupHeading,
14
+ authLogoutPopupPrimaryBtnText,
15
+ authLogoutPopupSubHeading,
16
+ cancelText,
17
+ logoutText,
18
+ } from '../language/default-labels/commonLabels';
11
19
 
12
20
  interface LogoutPopupProps {
13
21
  modalVisible: boolean;
@@ -16,11 +24,11 @@ interface LogoutPopupProps {
16
24
  }
17
25
  const LogoutPopup = (props: LogoutPopupProps) => {
18
26
  const isDesktop = useIsDesktop()('popup');
19
- const logoutLabelHeading = 'Logout?';
20
- const logoutLabelSubHeading = 'Are you sure you wanna log out?';
27
+ const logoutLabelHeading = useString(authLogoutPopupHeading)();
28
+ const logoutLabelSubHeading = useString(authLogoutPopupSubHeading)();
21
29
 
22
- const cancelBtnLabel = 'CANCEL';
23
- const confirmBtnLabel = 'CONFIRM';
30
+ const cancelBtnLabel = useString(cancelText)();
31
+ const confirmBtnLabel = useString(authLogoutPopupPrimaryBtnText)();
24
32
  return (
25
33
  <Popup
26
34
  modalVisible={props.modalVisible}
@@ -114,6 +122,7 @@ interface IDPLogoutComponentProps {
114
122
  }
115
123
 
116
124
  const IDPLogoutComponent = (props?: IDPLogoutComponentProps) => {
125
+ const logoutLabel = useString(logoutText)();
117
126
  const {authenticated, authLogout} = useAuth();
118
127
  const [modalVisible, setModalVisible] = useState(false);
119
128
  return authenticated && $config.ENABLE_IDP_AUTH && !isSDK() ? (
@@ -136,7 +145,7 @@ const IDPLogoutComponent = (props?: IDPLogoutComponentProps) => {
136
145
  setModalVisible={setModalVisible}
137
146
  />
138
147
  <TertiaryButton
139
- text="Logout"
148
+ text={logoutLabel}
140
149
  onPress={() => {
141
150
  setModalVisible(true);
142
151
  }}
@@ -6,6 +6,13 @@ import PrimaryButton from '../atoms/PrimaryButton';
6
6
  import ThemeConfig from '../theme';
7
7
  import {useIsDesktop} from '../utils/common';
8
8
  import TertiaryButton from '../atoms/TertiaryButton';
9
+ import {useString} from '../utils/useString';
10
+ import {
11
+ authLogInRequiredPopupHeading,
12
+ authLogInRequiredPopupPrimaryBtnText,
13
+ authLogInRequiredPopupSecondaryBtnText,
14
+ authLogInRequiredPopupSubHeading,
15
+ } from '../language/default-labels/commonLabels';
9
16
 
10
17
  interface UserCancelPopupProps {
11
18
  modalVisible: boolean;
@@ -15,11 +22,11 @@ interface UserCancelPopupProps {
15
22
  }
16
23
  const UserCancelPopup = (props: UserCancelPopupProps) => {
17
24
  const isDesktop = useIsDesktop()('popup');
18
- const logoutLabelHeading = 'Login Required';
19
- const logoutLabelSubHeading = 'Log-in to your organization to contiue';
25
+ const logoutLabelHeading = useString(authLogInRequiredPopupHeading)();
26
+ const logoutLabelSubHeading = useString(authLogInRequiredPopupSubHeading)();
20
27
 
21
- const closeAppBtnLabel = 'CLOSE APP';
22
- const loginBtnLabel = 'LOGIN';
28
+ const loginBtnLabel = useString(authLogInRequiredPopupPrimaryBtnText)();
29
+ const closeAppBtnLabel = useString(authLogInRequiredPopupSecondaryBtnText)();
23
30
  return (
24
31
  <Popup
25
32
  cancelable={false}
@@ -8,7 +8,7 @@ export const getIDPAuthLoginURL = () => {
8
8
  }&origin_url=${getOriginURL()}&platform_id=${getPlatformId()}`;
9
9
  };
10
10
 
11
- export const addEventListenerForToken = (history) => {
11
+ export const addEventListenerForToken = (history, heading) => {
12
12
  window.addEventListener(
13
13
  'message',
14
14
  ({data, origin}: {data: {token: string; msg: string}; origin: string}) => {
@@ -16,8 +16,9 @@ export const addEventListenerForToken = (history) => {
16
16
  history.push(`/authorize/${data.token}`);
17
17
  } else if (data?.msg && data?.msg === 'login_link_expired') {
18
18
  Toast.show({
19
+ leadingIconName: 'alert',
19
20
  type: 'error',
20
- text1: 'Your session has timed out, Retrying...',
21
+ text1: heading ? heading : 'Your session has timed out, Retrying...',
21
22
  visibilityTime: 3000,
22
23
  });
23
24
  setTimeout(() => {
@@ -30,8 +31,8 @@ export const addEventListenerForToken = (history) => {
30
31
  );
31
32
  };
32
33
 
33
- export const enableIDPAuth = async (history) => {
34
- addEventListenerForToken(history);
34
+ export const enableIDPAuth = async (history, heading) => {
35
+ addEventListenerForToken(history, heading);
35
36
  //open the auth login in the popup
36
37
  window.open(getIDPAuthLoginURL(), 'modal');
37
38
  };
@@ -13,7 +13,7 @@ export const getIDPAuthLoginURL = (returnTo?: any) => {
13
13
  }&redirect_url=${finalRedirectURL}&origin_url=${getOriginURL()}&platform_id=${getPlatformId()}`;
14
14
  };
15
15
 
16
- export const enableIDPAuth = async (returnTo?: any) => {
16
+ export const enableIDPAuth = async (returnTo?: any, heading?: string) => {
17
17
  Linking.openURL(getIDPAuthLoginURL(returnTo));
18
18
  };
19
19
 
@@ -7,10 +7,13 @@ import {
7
7
  import StorageContext from '../components/StorageContext';
8
8
  import useTokenAuth from './useTokenAuth';
9
9
  import {useHistory} from '../components/Router';
10
+ import {useString} from '../utils/useString';
11
+ import {authSessionTimeoutToastHeading} from '../language/default-labels/commonLabels';
10
12
 
11
13
  export const useIDPAuth = () => {
12
14
  const {store, setStore} = useContext(StorageContext);
13
15
  const {tokenLogout} = useTokenAuth();
16
+ const headingText = useString(authSessionTimeoutToastHeading)();
14
17
  const history = useHistory();
15
18
  const idpLogout = () => {
16
19
  return new Promise((resolve, reject) => {
@@ -21,7 +24,7 @@ export const useIDPAuth = () => {
21
24
  authorization: store?.token ? `Bearer ${store?.token}` : '',
22
25
  },
23
26
  })
24
- .then((response) => response.json())
27
+ .then(response => response.json())
25
28
  .then((res: any) => {
26
29
  if (res && res?.url) {
27
30
  //Storing the URL in the local variable
@@ -33,7 +36,7 @@ export const useIDPAuth = () => {
33
36
  tokenLogout()
34
37
  .then(() => {
35
38
  //call IDP logout url
36
- addEventListenerForToken(history);
39
+ addEventListenerForToken(history, headingText);
37
40
  setTimeout(() => {
38
41
  window.open(IDPAuthLogoutURL, 'modal');
39
42
  });
@@ -46,7 +49,7 @@ export const useIDPAuth = () => {
46
49
  reject(false);
47
50
  }
48
51
  })
49
- .catch((_) => {
52
+ .catch(_ => {
50
53
  reject(false);
51
54
  });
52
55
  } catch (error) {
@@ -30,10 +30,6 @@ export const useIDPAuth = () => {
30
30
  `&returnTo=${encodeURIComponent(
31
31
  getIDPAuthLoginURL(location.pathname),
32
32
  )}`;
33
- console.log(
34
- 'debugging non native IDPAuthLogoutURL',
35
- IDPAuthLogoutURL,
36
- );
37
33
  //manage backend logout
38
34
  //it will invalid the user session from the manage backend
39
35
  //cookie logout -> true
@@ -12,12 +12,13 @@ const useTokenAuth = () => {
12
12
  const [tokenExpiresAt, setTokenExpiresAt] = React.useState(0);
13
13
  const timerRef = useRef(null);
14
14
  const updateToken = (token: string) => {
15
- setStore && setStore((store) => ({...store, token}));
15
+ setStore && setStore(store => ({...store, token}));
16
16
  };
17
17
 
18
18
  const validateToken = (token: string) => {
19
19
  if (token && token.trim() !== '') {
20
20
  const decoded = jwt_decode(token);
21
+ // @ts-ignore
21
22
  const expiresAt = decoded?.exp * 1000;
22
23
  if (Date.now() >= expiresAt) {
23
24
  if (isSDK()) {
@@ -44,8 +45,8 @@ const useTokenAuth = () => {
44
45
  'X-Platform-ID': getPlatformId(),
45
46
  },
46
47
  })
47
- .then((response) => response.json())
48
- .then((data) => {
48
+ .then(response => response.json())
49
+ .then(data => {
49
50
  if (data?.token) {
50
51
  updateToken(data.token);
51
52
  if (isSDK()) {
@@ -54,7 +55,7 @@ const useTokenAuth = () => {
54
55
  }
55
56
  });
56
57
  } else {
57
- console.log('debugging no token to refresh');
58
+ //'debugging no token to refresh'
58
59
  }
59
60
  };
60
61
 
@@ -99,12 +100,13 @@ const useTokenAuth = () => {
99
100
  }
100
101
  } else {
101
102
  const decoded = jwt_decode(store.token);
103
+ // @ts-ignore
102
104
  const expiresAt = decoded?.exp * 1000;
103
105
  if (Date.now() >= expiresAt) {
104
106
  if (isSDK()) {
105
107
  SdkEvents.emit('did-token-expire');
106
108
  }
107
- console.log('token expired');
109
+ //token expired
108
110
  } else {
109
111
  setTokenExpiresAt(expiresAt);
110
112
  }
@@ -169,12 +171,12 @@ const useTokenAuth = () => {
169
171
  },
170
172
  },
171
173
  )
172
- .then((response) => response.text())
173
- .then((_) => {
174
+ .then(response => response.text())
175
+ .then(_ => {
174
176
  resolve(true);
175
177
  updateToken(null);
176
178
  })
177
- .catch((_) => {
179
+ .catch(_ => {
178
180
  reject(false);
179
181
  });
180
182
  } catch (error) {