agora-appbuilder-core 3.0.13 → 3.0.28-beta-9

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 (572) hide show
  1. package/Readme.md +6 -0
  2. package/package.json +3 -3
  3. package/template/.bundle/config +2 -0
  4. package/template/Gemfile +4 -0
  5. package/template/Gulpfile.js +31 -30
  6. package/template/_eslintrc.js +3 -3
  7. package/template/_gitignore +12 -11
  8. package/template/_package-lock.json +34387 -27128
  9. package/template/_prettierrc.js +2 -2
  10. package/template/agora-rn-uikit/.eslintrc.js +5 -0
  11. package/template/agora-rn-uikit/package-lock.json +25024 -0
  12. package/template/agora-rn-uikit/package.json +14 -14
  13. package/template/agora-rn-uikit/src/AgoraUIKit.tsx +6 -6
  14. package/template/agora-rn-uikit/src/Contexts/ContentContext.tsx +10 -0
  15. package/template/agora-rn-uikit/src/Contexts/DispatchContext.tsx +22 -0
  16. package/template/agora-rn-uikit/src/Contexts/LocalUserContext.tsx +10 -6
  17. package/template/agora-rn-uikit/src/Contexts/PropsContext.tsx +98 -37
  18. package/template/agora-rn-uikit/src/Contexts/RtcContext.tsx +27 -16
  19. package/template/agora-rn-uikit/src/Controls/BtnTemplate.tsx +31 -26
  20. package/template/agora-rn-uikit/src/Controls/Icons.ts +81 -83
  21. package/template/agora-rn-uikit/src/Controls/ImageIcon.tsx +6 -6
  22. package/template/agora-rn-uikit/src/Controls/Local/EndCall.tsx +6 -4
  23. package/template/agora-rn-uikit/src/Controls/Local/FullScreen.tsx +3 -1
  24. package/template/agora-rn-uikit/src/Controls/Local/LocalAudioMute.tsx +5 -2
  25. package/template/agora-rn-uikit/src/Controls/Local/LocalVideoMute.tsx +5 -2
  26. package/template/agora-rn-uikit/src/Controls/Local/Recording.tsx +0 -2
  27. package/template/agora-rn-uikit/src/Controls/Local/SwitchCamera.tsx +7 -6
  28. package/template/agora-rn-uikit/src/Controls/LocalControls.tsx +5 -5
  29. package/template/agora-rn-uikit/src/Controls/Remote/RemoteAudioMute.tsx +5 -4
  30. package/template/agora-rn-uikit/src/Controls/Remote/RemoteSwap.tsx +3 -1
  31. package/template/agora-rn-uikit/src/Controls/Remote/RemoteVideoMute.tsx +5 -4
  32. package/template/agora-rn-uikit/src/Controls/RemoteControls.tsx +2 -2
  33. package/template/agora-rn-uikit/src/Reducer/ActiveSpeaker.ts +30 -0
  34. package/template/agora-rn-uikit/src/Reducer/LocalMuteAudio.ts +8 -6
  35. package/template/agora-rn-uikit/src/Reducer/LocalMuteVideo.ts +8 -6
  36. package/template/agora-rn-uikit/src/Reducer/LocalPermissionState.ts +23 -0
  37. package/template/agora-rn-uikit/src/Reducer/RemoteAudioStateChanged.ts +7 -7
  38. package/template/agora-rn-uikit/src/Reducer/RemoteVideoStateChanged.ts +9 -8
  39. package/template/agora-rn-uikit/src/Reducer/UpdateDualStreamMode.ts +7 -7
  40. package/template/agora-rn-uikit/src/Reducer/UserJoined.ts +24 -14
  41. package/template/agora-rn-uikit/src/Reducer/UserMuteRemoteAudio.ts +6 -6
  42. package/template/agora-rn-uikit/src/Reducer/UserMuteRemoteVideo.ts +6 -6
  43. package/template/agora-rn-uikit/src/Reducer/UserOffline.ts +14 -5
  44. package/template/agora-rn-uikit/src/Reducer/UserPin.ts +28 -0
  45. package/template/agora-rn-uikit/src/Reducer/UserSecondaryPin.ts +23 -0
  46. package/template/agora-rn-uikit/src/Reducer/index.ts +4 -0
  47. package/template/agora-rn-uikit/src/Rtc/Create.tsx +197 -66
  48. package/template/agora-rn-uikit/src/Rtc/Join.tsx +60 -33
  49. package/template/agora-rn-uikit/src/RtcConfigure.tsx +194 -57
  50. package/template/agora-rn-uikit/src/Utils/isBotUser.ts +15 -0
  51. package/template/agora-rn-uikit/src/Utils/quality.tsx +8 -0
  52. package/template/agora-rn-uikit/src/Views/MaxVideoView.native.tsx +67 -13
  53. package/template/agora-rn-uikit/src/Views/MaxVideoView.tsx +53 -17
  54. package/template/agora-rn-uikit/src/Views/MinVideoView.tsx +19 -11
  55. package/template/agora-rn-uikit/src/index.ts +19 -10
  56. package/template/android/app/build.gradle +67 -155
  57. package/template/android/app/src/debug/AndroidManifest.xml +6 -1
  58. package/template/android/app/src/debug/java/com/helloworld/ReactNativeFlipper.java +7 -4
  59. package/template/android/app/src/main/AndroidManifest.xml +21 -27
  60. package/template/android/app/src/main/assets/fonts/SourceSansPro-Regular.ttf +0 -0
  61. package/template/android/app/src/main/assets/fonts/icomoon.ttf +0 -0
  62. package/template/android/app/src/main/java/com/helloworld/MainActivity.java +67 -0
  63. package/template/android/app/src/main/java/com/helloworld/MainApplication.java +22 -36
  64. package/template/android/app/src/main/java/com/helloworld/SSLPinningFactory.java +30 -0
  65. package/template/android/app/src/main/res/values/colors.xml +7 -0
  66. package/template/android/app/src/main/res/values/strings.xml +3 -0
  67. package/template/android/app/src/release/java/com/helloworld/ReactNativeFlipper.java +20 -0
  68. package/template/android/build.gradle +20 -31
  69. package/template/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  70. package/template/android/gradle/wrapper/gradle-wrapper.properties +3 -2
  71. package/template/android/gradle.properties +18 -4
  72. package/template/android/gradlew +165 -104
  73. package/template/android/gradlew.bat +12 -23
  74. package/template/android/link-assets-manifest.json +13 -0
  75. package/template/android/settings.gradle +1 -0
  76. package/template/babel.config.js +1 -0
  77. package/template/bridge/rtc/webNg/RtcEngine.ts +940 -98
  78. package/template/bridge/rtc/webNg/{SurfaceView.tsx → RtcSurfaceView.tsx} +20 -27
  79. package/template/bridge/rtc/webNg/Types.ts +20 -5
  80. package/template/bridge/rtc/webNg/index.ts +81 -14
  81. package/template/bridge/rtm/web/index.ts +86 -35
  82. package/template/configTransform.js +16 -1
  83. package/template/customization-api/action-library.ts +4 -16
  84. package/template/customization-api/app-state.ts +18 -8
  85. package/template/customization-api/atoms.ts +8 -0
  86. package/template/customization-api/customEvents.ts +7 -2
  87. package/template/customization-api/customize.ts +30 -11
  88. package/template/customization-api/index.ts +5 -0
  89. package/template/customization-api/sub-components.ts +43 -18
  90. package/template/customization-api/temp.ts +51 -0
  91. package/template/customization-api/typeDefinition.ts +65 -49
  92. package/template/customization-api/types.ts +48 -0
  93. package/template/customization-api/utils.ts +19 -1
  94. package/template/customization-implementation/createHook.ts +24 -6
  95. package/template/customization-implementation/index.ts +1 -2
  96. package/template/customization-implementation/useCustomization.tsx +5 -7
  97. package/template/defaultConfig.js +84 -0
  98. package/template/electron/index.html +27 -27
  99. package/template/electron/renderer/index.js +1 -0
  100. package/template/global.d.ts +97 -6
  101. package/template/index.js +18 -1
  102. package/template/index.rsdk.tsx +1 -0
  103. package/template/index.web.js +1 -0
  104. package/template/index.wsdk.tsx +2 -13
  105. package/template/ios/.xcode.env +11 -0
  106. package/template/ios/HelloWorld/AppDelegate.h +2 -4
  107. package/template/ios/HelloWorld/AppDelegate.mm +64 -0
  108. package/template/ios/HelloWorld/HelloWorldDebug.entitlements +10 -0
  109. package/template/ios/HelloWorld/Info.plist +20 -1
  110. package/template/ios/HelloWorld/main.m +2 -1
  111. package/template/ios/HelloWorld.xcodeproj/project.pbxproj +596 -11
  112. package/template/ios/HelloWorld.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  113. package/template/ios/HelloWorld.xcodeproj/xcshareddata/xcschemes/ScreenSharing.xcscheme +95 -0
  114. package/template/ios/HelloWorld.xcworkspace/contents.xcworkspacedata +10 -0
  115. package/template/ios/HelloWorld.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  116. package/template/ios/HelloWorldTests/HelloWorldTests.m +14 -13
  117. package/template/ios/HelloWorldTests/Info.plist +2 -2
  118. package/template/ios/Podfile +54 -20
  119. package/template/ios/Podfile.lock +975 -0
  120. package/template/ios/ScreenSharing/Info.plist +15 -0
  121. package/template/ios/ScreenSharing/SampleHandler.h +5 -0
  122. package/template/ios/ScreenSharing/SampleHandler.m +39 -0
  123. package/template/ios/link-assets-manifest.json +13 -0
  124. package/template/jest.config.js +4 -0
  125. package/template/metro.config.js +7 -32
  126. package/template/package-lock.json +57746 -0
  127. package/template/package.json +71 -35
  128. package/template/react-native-toast-message/index.d.ts +46 -44
  129. package/template/react-native-toast-message/index.js +1 -0
  130. package/template/react-native-toast-message/package-lock.json +10553 -0
  131. package/template/react-native-toast-message/src/colors/index.js +3 -2
  132. package/template/react-native-toast-message/src/components/base/index.js +38 -63
  133. package/template/react-native-toast-message/src/components/base/styles.js +20 -39
  134. package/template/react-native-toast-message/src/components/checkbox.js +183 -0
  135. package/template/react-native-toast-message/src/components/error.js +3 -2
  136. package/template/react-native-toast-message/src/components/info.js +3 -2
  137. package/template/react-native-toast-message/src/components/success.js +3 -2
  138. package/template/react-native-toast-message/src/index.js +125 -32
  139. package/template/react-native-toast-message/src/index.sdk.tsx +129 -36
  140. package/template/react-native-toast-message/src/styles.js +3 -4
  141. package/template/react-native-toast-message/src/styles.sdk.ts +3 -4
  142. package/template/react-native.config.js +7 -0
  143. package/template/src/App.tsx +53 -63
  144. package/template/src/AppRoutes.tsx +101 -0
  145. package/template/src/AppWrapper.tsx +83 -29
  146. package/template/src/SDKAppWrapper.tsx +145 -58
  147. package/template/src/app-state/useBeautyEffects.ts +30 -0
  148. package/template/src/app-state/useLocalUserInfo.ts +3 -3
  149. package/template/src/app-state/useMessages.ts +49 -9
  150. package/template/src/app-state/useNoiseSupression.native.tsx +73 -0
  151. package/template/src/app-state/useNoiseSupression.tsx +151 -0
  152. package/template/src/app-state/useVideoQuality.tsx +182 -0
  153. package/template/src/app-state/useVirtualBackground.ts +152 -0
  154. package/template/src/assets/font-styles.css +677 -0
  155. package/template/src/assets/fonts/SourceSansPro-Regular.ttf +0 -0
  156. package/template/src/assets/fonts/icomoon.ttf +0 -0
  157. package/template/src/assets/permission.png +0 -0
  158. package/template/src/assets/selection.json +3491 -0
  159. package/template/src/atoms/ActionMenu.tsx +326 -0
  160. package/template/src/atoms/AnimatedActiveSpeaker.native.tsx +71 -0
  161. package/template/src/atoms/AnimatedActiveSpeaker.tsx +84 -0
  162. package/template/src/atoms/AnimatedRings.native.tsx +68 -0
  163. package/template/src/atoms/AnimatedRings.tsx +70 -0
  164. package/template/src/atoms/Avatar.tsx +51 -0
  165. package/template/src/atoms/Card.tsx +74 -0
  166. package/template/src/atoms/Carousel.native.tsx +105 -0
  167. package/template/src/atoms/Carousel.tsx +109 -0
  168. package/template/src/atoms/Checkbox.tsx +98 -0
  169. package/template/src/atoms/CircularProgress.native.tsx +121 -0
  170. package/template/src/atoms/CircularProgress.tsx +101 -0
  171. package/template/src/atoms/ClipboardIconButton.tsx +91 -0
  172. package/template/src/atoms/CustomIcon.tsx +153 -0
  173. package/template/src/atoms/CustomSwitch.tsx +287 -0
  174. package/template/src/atoms/DropDownMulti.tsx +349 -0
  175. package/template/src/atoms/Dropdown.tsx +307 -0
  176. package/template/src/atoms/HorizontalRule.tsx +3 -1
  177. package/template/src/atoms/IconButton.tsx +205 -0
  178. package/template/src/atoms/ImageIcon.tsx +127 -0
  179. package/template/src/atoms/InfoBubble.tsx +291 -0
  180. package/template/src/atoms/InlineNotification.tsx +81 -0
  181. package/template/src/atoms/InlinePopup.tsx +185 -0
  182. package/template/src/atoms/Input.tsx +87 -0
  183. package/template/src/atoms/InviteInfo.tsx +166 -0
  184. package/template/src/atoms/LinkButton.tsx +29 -0
  185. package/template/src/atoms/MeetingLink.tsx +160 -0
  186. package/template/src/atoms/OutlineButton.tsx +61 -0
  187. package/template/src/atoms/ParticipantsCount.tsx +78 -0
  188. package/template/src/atoms/Popup.tsx +178 -0
  189. package/template/src/atoms/PrimaryButton.tsx +65 -26
  190. package/template/src/atoms/RecordingInfo.tsx +47 -0
  191. package/template/src/atoms/SecondaryButton.tsx +10 -5
  192. package/template/src/atoms/Spacer.tsx +23 -0
  193. package/template/src/atoms/TertiaryButton.tsx +108 -0
  194. package/template/src/atoms/TextInput.tsx +13 -14
  195. package/template/src/atoms/Toggle.tsx +47 -0
  196. package/template/src/atoms/Toolbar.tsx +94 -0
  197. package/template/src/atoms/ToolbarItem.tsx +99 -0
  198. package/template/src/atoms/ToolbarMenu.tsx +40 -0
  199. package/template/src/atoms/ToolbarMenuItem.tsx +104 -0
  200. package/template/src/atoms/ToolbarPreset.tsx +147 -0
  201. package/template/src/atoms/Tooltip.native.tsx +65 -0
  202. package/template/src/atoms/Tooltip.tsx +111 -0
  203. package/template/src/atoms/UserAvatar.tsx +60 -0
  204. package/template/src/atoms/pagination/Pagination.tsx +127 -0
  205. package/template/src/atoms/pagination/usePagination.tsx +88 -0
  206. package/template/src/auth/AuthProvider.tsx +710 -0
  207. package/template/src/auth/AuthRoute.tsx +94 -0
  208. package/template/src/auth/IDPAuth.electron.tsx +32 -0
  209. package/template/src/auth/IDPAuth.tsx +73 -0
  210. package/template/src/auth/IDPLogoutComponent.tsx +158 -0
  211. package/template/src/auth/UserCancelPopup.tsx +115 -0
  212. package/template/src/auth/config.ts +53 -0
  213. package/template/src/auth/openIDPURL.electron.tsx +39 -0
  214. package/template/src/auth/openIDPURL.native.tsx +62 -0
  215. package/template/src/auth/openIDPURL.tsx +20 -0
  216. package/template/src/auth/useIDPAuth.electron.tsx +125 -0
  217. package/template/src/auth/useIDPAuth.native.tsx +130 -0
  218. package/template/src/auth/useIDPAuth.tsx +124 -0
  219. package/template/src/auth/useTokenAuth.tsx +267 -0
  220. package/template/src/components/Chat.tsx +177 -279
  221. package/template/src/components/ChatContext.ts +22 -1
  222. package/template/src/components/ColorConfigure.tsx +1 -2
  223. package/template/src/components/ColorContext.ts +1 -1
  224. package/template/src/components/CommonStyles.ts +51 -0
  225. package/template/src/components/Controls.tsx +1275 -108
  226. package/template/src/components/{Controls.native.tsx → Controls1.native.tsx} +15 -9
  227. package/template/src/components/CustomSidePanel.tsx +82 -0
  228. package/template/src/components/DeviceConfigure.native.tsx +2 -2
  229. package/template/src/components/DeviceConfigure.tsx +789 -122
  230. package/template/src/components/DeviceContext.tsx +10 -4
  231. package/template/src/components/EventsConfigure.tsx +773 -12
  232. package/template/src/components/GraphQLProvider.tsx +83 -37
  233. package/template/src/components/GridVideo.tsx +86 -53
  234. package/template/src/components/HostControlView.tsx +118 -42
  235. package/template/src/components/JoinPhrase.tsx +0 -1
  236. package/template/src/components/Leftbar.tsx +129 -0
  237. package/template/src/components/Navbar.tsx +469 -488
  238. package/template/src/components/NavbarMobile.tsx +138 -0
  239. package/template/src/components/Navigation.native.tsx +1 -14
  240. package/template/src/components/{Settings.native.tsx → Navigation.sdk.tsx} +17 -6
  241. package/template/src/components/NetworkQualityContext.tsx +32 -26
  242. package/template/src/components/ParticipantsView.tsx +195 -165
  243. package/template/src/components/PinnedVideo.tsx +317 -122
  244. package/template/src/components/Precall.native.tsx +472 -116
  245. package/template/src/components/Precall.tsx +493 -154
  246. package/template/src/components/RTMConfigure.tsx +477 -83
  247. package/template/src/components/Rightbar.tsx +129 -0
  248. package/template/src/components/Router.electron.ts +2 -0
  249. package/template/src/components/Router.native.ts +2 -0
  250. package/template/src/components/Router.sdk.ts +2 -0
  251. package/template/src/components/Router.ts +2 -0
  252. package/template/src/components/SdkApiContext.tsx +319 -0
  253. package/template/src/components/SdkMuteToggleListener.tsx +88 -0
  254. package/template/src/components/SessionContext.tsx +0 -1
  255. package/template/src/components/Settings.tsx +51 -114
  256. package/template/src/components/SettingsView.tsx +293 -54
  257. package/template/src/components/Share.tsx +415 -297
  258. package/template/src/components/StorageContext.tsx +82 -7
  259. package/template/src/components/ToastComponent.tsx +17 -0
  260. package/template/src/components/WhiteboardLayout.tsx +291 -0
  261. package/template/src/components/beauty-effect/useBeautyEffects.native.tsx +119 -0
  262. package/template/src/components/beauty-effect/useBeautyEffects.tsx +152 -0
  263. package/template/src/components/chat/chatConfigure.native.tsx +511 -0
  264. package/template/src/components/chat/chatConfigure.tsx +529 -0
  265. package/template/src/components/chat-messages/useChatMessages.tsx +513 -386
  266. package/template/src/components/chat-ui/useChatUIControls.tsx +132 -0
  267. package/template/src/components/common/Error.tsx +36 -6
  268. package/template/src/components/common/Logo.tsx +16 -15
  269. package/template/src/components/contexts/LiveStreamDataContext.tsx +23 -17
  270. package/template/src/components/contexts/ScreenShareContext.tsx +15 -1
  271. package/template/src/components/contexts/VideoMeetingDataContext.tsx +41 -11
  272. package/template/src/components/contexts/WaitingRoomContext.tsx +61 -0
  273. package/template/src/components/contexts/WhiteboardContext.tsx +54 -54
  274. package/template/src/components/disable-chat/useDisableChat.tsx +32 -0
  275. package/template/src/components/livestream/LiveStreamContext.tsx +493 -165
  276. package/template/src/components/livestream/Types.ts +58 -17
  277. package/template/src/components/livestream/index.ts +1 -0
  278. package/template/src/components/livestream/views/LiveStreamAttendeeLandingTile.tsx +295 -0
  279. package/template/src/components/livestream/views/LiveStreamControls.tsx +8 -4
  280. package/template/src/components/meeting-info-invite/MeetingInfo.tsx +82 -0
  281. package/template/src/components/meeting-info-invite/MeetingInfoCardHeader.tsx +86 -0
  282. package/template/src/components/meeting-info-invite/MeetingInfoGridTile.tsx +221 -0
  283. package/template/src/components/meeting-info-invite/MeetingInfoLinks.tsx +122 -0
  284. package/template/src/components/participants/AllAudienceParticipants.tsx +105 -35
  285. package/template/src/components/participants/AllHostParticipants.tsx +108 -38
  286. package/template/src/components/participants/Participant.tsx +330 -0
  287. package/template/src/components/participants/ParticipantName.tsx +13 -7
  288. package/template/src/components/participants/ParticipantSectionTitle.tsx +38 -10
  289. package/template/src/components/participants/ScreenshareParticipants.tsx +142 -12
  290. package/template/src/components/participants/UserActionMenuOptions.tsx +510 -0
  291. package/template/src/components/participants/WaitingRoomParticipants.tsx +74 -0
  292. package/template/src/components/popups/InvitePopup.tsx +196 -0
  293. package/template/src/components/popups/StartScreenSharePopup.native.tsx +182 -0
  294. package/template/src/components/popups/StartScreenSharePopup.tsx +6 -0
  295. package/template/src/components/popups/StopRecordingPopup.tsx +120 -0
  296. package/template/src/components/popups/StopScreenSharePopup.native.tsx +135 -0
  297. package/template/src/components/popups/StopScreenSharePopup.tsx +6 -0
  298. package/template/src/components/popups/WhiteboardClearAllPopup.tsx +123 -0
  299. package/template/src/components/precall/LocalMute.tsx +109 -15
  300. package/template/src/components/precall/{LocalMute.native.tsx → LocalMute1.native.tsx} +21 -5
  301. package/template/src/components/precall/PermissionHelper.native.tsx +5 -0
  302. package/template/src/components/precall/PermissionHelper.tsx +154 -0
  303. package/template/src/components/precall/PreCallSettings.tsx +53 -0
  304. package/template/src/components/precall/VideoFallback.tsx +173 -0
  305. package/template/src/components/precall/VideoPreview.native.tsx +19 -8
  306. package/template/src/components/precall/VideoPreview.tsx +28 -7
  307. package/template/src/components/precall/index.tsx +2 -0
  308. package/template/src/components/precall/joinCallBtn.native.tsx +12 -5
  309. package/template/src/components/precall/joinCallBtn.tsx +34 -6
  310. package/template/src/components/precall/joinWaitingRoomBtn.native.tsx +215 -0
  311. package/template/src/components/precall/joinWaitingRoomBtn.tsx +255 -0
  312. package/template/src/components/precall/meetingTitle.tsx +42 -13
  313. package/template/src/components/precall/selectDevice.tsx +5 -25
  314. package/template/src/components/precall/textInput.tsx +40 -14
  315. package/template/src/components/precall/usePreCall.tsx +66 -2
  316. package/template/src/components/recording-bot/RecordingBotRoute.tsx +48 -0
  317. package/template/src/components/recordings/RecordingsDateTable.tsx +62 -0
  318. package/template/src/components/recordings/RecordingsModal.tsx +135 -0
  319. package/template/src/components/recordings/ViewRecordingsModal.tsx +51 -0
  320. package/template/src/components/recordings/recording-table.tsx +250 -0
  321. package/template/src/components/recordings/style.ts +238 -0
  322. package/template/src/components/recordings/utils.ts +122 -0
  323. package/template/src/components/room-info/useRoomInfo.tsx +142 -0
  324. package/template/src/components/{meeting-info/useSetMeetingInfo.tsx → room-info/useSetRoomInfo.tsx} +12 -12
  325. package/template/src/components/styles.ts +42 -21
  326. package/template/src/components/useShareLink.tsx +33 -70
  327. package/template/src/{utils/useButtonTemplate.tsx → components/useToast.tsx} +18 -20
  328. package/template/src/components/useUserPreference.tsx +157 -16
  329. package/template/src/components/useVideoCall.tsx +157 -0
  330. package/template/src/components/useWakeLock.tsx +18 -4
  331. package/template/src/components/virtual-background/VBButton.tsx +62 -0
  332. package/template/src/components/virtual-background/VBCard.native.tsx +280 -0
  333. package/template/src/components/virtual-background/VBCard.tsx +308 -0
  334. package/template/src/components/virtual-background/VBPanel.tsx +282 -0
  335. package/template/src/components/virtual-background/VButils.native.ts +72 -0
  336. package/template/src/components/virtual-background/VButils.ts +144 -0
  337. package/template/src/components/virtual-background/VideoPreview.native.tsx +43 -0
  338. package/template/src/components/virtual-background/VideoPreview.tsx +116 -0
  339. package/template/src/components/virtual-background/imagePaths.ts +82 -0
  340. package/template/src/components/virtual-background/images/beachImageBase64.ts +1 -0
  341. package/template/src/components/virtual-background/images/bedroomImageBase64.ts +1 -0
  342. package/template/src/components/virtual-background/images/bookImageBase64.ts +1 -0
  343. package/template/src/components/virtual-background/images/earthImageBase64.ts +1 -0
  344. package/template/src/components/virtual-background/images/index.ts +37 -0
  345. package/template/src/components/virtual-background/images/lampImageBase64.ts +1 -0
  346. package/template/src/components/virtual-background/images/mountainsImageBase64.ts +1 -0
  347. package/template/src/components/virtual-background/images/office1ImageBase64.ts +1 -0
  348. package/template/src/components/virtual-background/images/officeImageBase64.ts +1 -0
  349. package/template/src/components/virtual-background/images/plantsImageBase64.ts +1 -0
  350. package/template/src/components/virtual-background/images/skyImageBase64.ts +1 -0
  351. package/template/src/components/virtual-background/images/wallImageBase64.ts +1 -0
  352. package/template/src/components/virtual-background/useVB.native.tsx +205 -0
  353. package/template/src/components/virtual-background/useVB.tsx +294 -0
  354. package/template/src/components/whiteboard/StrokeWidthTool.tsx +137 -0
  355. package/template/src/components/whiteboard/WhiteboardButton.tsx +93 -0
  356. package/template/src/components/whiteboard/WhiteboardCanvas.tsx +99 -0
  357. package/template/src/components/whiteboard/WhiteboardConfigure.native.tsx +148 -0
  358. package/template/src/components/whiteboard/WhiteboardConfigure.tsx +473 -0
  359. package/template/src/components/whiteboard/WhiteboardCursor.tsx +152 -0
  360. package/template/src/components/whiteboard/WhiteboardToolBox.tsx +1448 -0
  361. package/template/src/components/whiteboard/WhiteboardView.native.tsx +212 -0
  362. package/template/src/components/whiteboard/WhiteboardView.tsx +81 -0
  363. package/template/src/components/whiteboard/WhiteboardWidget.tsx +729 -0
  364. package/template/src/components/whiteboard/WhiteboardWrapper.tsx +38 -0
  365. package/template/src/language/default-labels/commonLabels.ts +51 -14
  366. package/template/src/language/default-labels/createScreenLabels.ts +97 -17
  367. package/template/src/language/default-labels/joinScreenLabels.ts +45 -6
  368. package/template/src/language/default-labels/precallScreenLabels.ts +158 -25
  369. package/template/src/language/default-labels/shareLinkScreenLabels.ts +85 -37
  370. package/template/src/language/default-labels/videoCallScreenLabels.ts +1290 -158
  371. package/template/src/language/i18nTypes.ts +1 -1
  372. package/template/src/language/useLanguage.tsx +10 -4
  373. package/template/src/logger/AppBuilderLogger.tsx +313 -0
  374. package/template/src/logger/constants.ts +18 -0
  375. package/template/src/logger/transports/agora-transport.native.ts +64 -0
  376. package/template/src/logger/transports/agora-transport.ts +36 -0
  377. package/template/src/logger/transports/customer-transport.ts +162 -0
  378. package/template/src/pages/Authenticate.tsx +5 -15
  379. package/template/src/pages/Create.tsx +394 -202
  380. package/template/src/pages/Endcall.tsx +153 -0
  381. package/template/src/pages/Join.tsx +188 -78
  382. package/template/src/pages/Login.tsx +26 -0
  383. package/template/src/pages/VideoCall.tsx +381 -130
  384. package/template/src/pages/video-call/ActionSheet.native.tsx +343 -0
  385. package/template/src/pages/video-call/ActionSheet.tsx +349 -0
  386. package/template/src/pages/video-call/ActionSheetContent.tsx +655 -0
  387. package/template/src/pages/video-call/ActionSheetHandle.tsx +54 -0
  388. package/template/src/pages/video-call/ActionSheetStyles.css +138 -0
  389. package/template/src/pages/video-call/DefaultLayouts.ts +32 -12
  390. package/template/src/pages/video-call/NameWithMicIcon.tsx +104 -51
  391. package/template/src/pages/video-call/PinchableView.tsx +119 -0
  392. package/template/src/pages/video-call/RenderComponent.tsx +16 -31
  393. package/template/src/pages/video-call/SidePanelHeader.tsx +424 -0
  394. package/template/src/pages/video-call/VideoCallMobileView.tsx +299 -0
  395. package/template/src/pages/video-call/VideoCallScreen.native.tsx +38 -0
  396. package/template/src/pages/video-call/VideoCallScreen.tsx +379 -74
  397. package/template/src/pages/video-call/VideoCallScreenWrapper.tsx +51 -0
  398. package/template/src/pages/video-call/VideoComponent.tsx +81 -6
  399. package/template/src/pages/video-call/VideoRenderer.tsx +525 -63
  400. package/template/src/pages/video-call/VisibilitySensor.tsx +104 -0
  401. package/template/src/pages/video-call/ZoomableWrapper.native.tsx +34 -0
  402. package/template/src/pages/video-call/ZoomableWrapper.tsx +5 -0
  403. package/template/src/pages/video-call/index.ts +51 -7
  404. package/template/src/rtm/RTMEngine.ts +22 -4
  405. package/template/src/rtm-events/constants.ts +26 -9
  406. package/template/src/rtm-events-api/Events.ts +114 -23
  407. package/template/src/rtm-events-api/LocalEvents.ts +15 -0
  408. package/template/src/rtm-events-api/types.ts +10 -5
  409. package/template/src/selection.json +1 -0
  410. package/template/src/subComponents/BlockUI.tsx +70 -0
  411. package/template/src/subComponents/ChatBubble.tsx +413 -96
  412. package/template/src/subComponents/ChatContainer.tsx +305 -101
  413. package/template/src/subComponents/ChatInput.native.tsx +269 -0
  414. package/template/src/subComponents/ChatInput.tsx +308 -156
  415. package/template/src/subComponents/Checkbox.native.tsx +46 -35
  416. package/template/src/subComponents/Checkbox.tsx +9 -8
  417. package/template/src/subComponents/CopyJoinInfo.tsx +52 -62
  418. package/template/src/subComponents/EndcallPopup.tsx +182 -0
  419. package/template/src/subComponents/FallbackLogo.tsx +122 -40
  420. package/template/src/subComponents/LanguageSelector.tsx +35 -31
  421. package/template/src/subComponents/LayoutIconButton.tsx +210 -0
  422. package/template/src/subComponents/LayoutIconDropdown.tsx +149 -133
  423. package/template/src/subComponents/{LayoutIconDropdown.native.tsx → LayoutIconDropdown1.native.tsx} +4 -18
  424. package/template/src/subComponents/Loading.tsx +60 -0
  425. package/template/src/subComponents/LocalAudioMute.tsx +181 -30
  426. package/template/src/subComponents/LocalEndCall.tsx +118 -36
  427. package/template/src/subComponents/LocalSwitchCamera.tsx +72 -40
  428. package/template/src/subComponents/LocalVideoMute.tsx +177 -30
  429. package/template/src/subComponents/Logo.tsx +3 -4
  430. package/template/src/subComponents/LogoutButton.tsx +2 -2
  431. package/template/src/subComponents/NetworkQualityPill.tsx +65 -84
  432. package/template/src/subComponents/OpenInNativeButton.tsx +3 -3
  433. package/template/src/subComponents/Recording.tsx +44 -31
  434. package/template/src/subComponents/RemoteAudioMute.tsx +83 -29
  435. package/template/src/subComponents/RemoteEndCall.tsx +8 -5
  436. package/template/src/subComponents/RemoteMutePopup.tsx +115 -0
  437. package/template/src/subComponents/RemoteVideoMute.tsx +74 -21
  438. package/template/src/subComponents/RemoveMeetingPopup.tsx +122 -0
  439. package/template/src/subComponents/RemoveScreensharePopup.tsx +124 -0
  440. package/template/src/subComponents/ScreenShareNotice.tsx +95 -12
  441. package/template/src/subComponents/SelectDevice.tsx +548 -66
  442. package/template/src/subComponents/SelectDeviceSettings.backup.tsx +210 -0
  443. package/template/src/subComponents/SelectOAuth.tsx +9 -8
  444. package/template/src/subComponents/SidePanelButtons.ts +0 -3
  445. package/template/src/subComponents/SidePanelEnum.tsx +6 -4
  446. package/template/src/subComponents/SidePanelHeader.tsx +146 -0
  447. package/template/src/subComponents/ToastConfig.tsx +160 -11
  448. package/template/src/subComponents/caption/Caption.tsx +132 -0
  449. package/template/src/subComponents/caption/CaptionContainer.tsx +331 -0
  450. package/template/src/subComponents/caption/CaptionIcon.tsx +115 -0
  451. package/template/src/subComponents/caption/CaptionText.tsx +182 -0
  452. package/template/src/subComponents/caption/DownloadTranscriptBtn.tsx +65 -0
  453. package/template/src/subComponents/caption/LanguageSelectorPopup.tsx +192 -0
  454. package/template/src/subComponents/caption/Transcript.tsx +452 -0
  455. package/template/src/subComponents/caption/TranscriptIcon.tsx +126 -0
  456. package/template/src/subComponents/caption/TranscriptText.tsx +98 -0
  457. package/template/src/subComponents/caption/index.ts +3 -0
  458. package/template/src/subComponents/caption/proto/ptoto.js +91 -0
  459. package/template/src/subComponents/caption/proto/test.proto +23 -0
  460. package/template/src/subComponents/caption/useCaption.tsx +123 -0
  461. package/template/src/subComponents/caption/useCaptionWidth.ts +27 -0
  462. package/template/src/subComponents/caption/useSTTAPI.tsx +275 -0
  463. package/template/src/subComponents/caption/useStreamMessageUtils.native.ts +211 -0
  464. package/template/src/subComponents/caption/useStreamMessageUtils.ts +235 -0
  465. package/template/src/subComponents/caption/useTranscriptDownload.native.ts +93 -0
  466. package/template/src/subComponents/caption/useTranscriptDownload.ts +62 -0
  467. package/template/src/subComponents/caption/utils.ts +126 -0
  468. package/template/src/subComponents/chat/ChatActionMenu.tsx +224 -0
  469. package/template/src/subComponents/chat/ChatAttachment.native.tsx +237 -0
  470. package/template/src/subComponents/chat/ChatAttachment.tsx +205 -0
  471. package/template/src/subComponents/chat/ChatEmoji.native.tsx +75 -0
  472. package/template/src/subComponents/chat/ChatEmoji.tsx +182 -0
  473. package/template/src/subComponents/chat/ChatParticipants.tsx +232 -81
  474. package/template/src/subComponents/chat/ChatSendButton.tsx +209 -0
  475. package/template/src/subComponents/chat/ChatUploadStatus.tsx +84 -0
  476. package/template/src/subComponents/chat/ImagePopup.tsx +400 -0
  477. package/template/src/subComponents/livestream/ApprovedLiveStreamControlsView.tsx +2 -2
  478. package/template/src/subComponents/livestream/CurrentLiveStreamRequestsView.tsx +109 -47
  479. package/template/src/subComponents/livestream/controls/LocalRaiseHand.tsx +61 -45
  480. package/template/src/subComponents/livestream/controls/RemoteLiveStreamApprovedRequestRecall.tsx +9 -8
  481. package/template/src/subComponents/livestream/controls/RemoteLiveStreamRequestApprove.tsx +29 -12
  482. package/template/src/subComponents/livestream/controls/RemoteLiveStreamRequestReject.tsx +33 -17
  483. package/template/src/subComponents/recording/useIsRecordingBot.tsx +76 -0
  484. package/template/src/subComponents/recording/useRecording.tsx +761 -108
  485. package/template/src/subComponents/recording/useRecordingLayoutQuery.tsx +93 -9
  486. package/template/src/subComponents/screenshare/ScreenshareButton.tsx +82 -75
  487. package/template/src/subComponents/screenshare/ScreenshareConfigure.native.tsx +494 -78
  488. package/template/src/subComponents/screenshare/ScreenshareConfigure.tsx +247 -110
  489. package/template/src/subComponents/screenshare/useScreenshare.tsx +6 -4
  490. package/template/src/subComponents/waiting-rooms/WaitingRoomControls.tsx +85 -0
  491. package/template/src/subComponents/waiting-rooms/useWaitingRoomAPI.ts +126 -0
  492. package/template/src/theme/index.ts +59 -0
  493. package/template/src/utils/PlatformWrapper.tsx +21 -0
  494. package/template/src/utils/SdkEvents.ts +37 -14
  495. package/template/src/utils/SdkMethodEvents.ts +105 -0
  496. package/template/src/utils/axiomLogger.ts +122 -0
  497. package/template/src/utils/book.jpg +0 -0
  498. package/template/src/utils/common.tsx +350 -7
  499. package/template/src/utils/constants.ts +4 -0
  500. package/template/src/utils/fetch-retry.ts +23 -0
  501. package/template/src/utils/getCustomRoute.ts +7 -0
  502. package/template/src/utils/hexadecimalTransparency.ts +108 -0
  503. package/template/src/utils/index.tsx +83 -0
  504. package/template/src/utils/isMobileOrTablet.ts +7 -2
  505. package/template/src/utils/pendingStateUpdateHelper.ts +19 -0
  506. package/template/src/utils/useActionSheet.tsx +50 -0
  507. package/template/src/utils/useActiveSpeaker.ts +38 -0
  508. package/template/src/utils/useAppState.ts +17 -0
  509. package/template/src/utils/useAsyncEffect.ts +138 -0
  510. package/template/src/utils/useCreateRoom.ts +152 -0
  511. package/template/src/utils/useEndCall.ts +74 -0
  512. package/template/src/utils/useFindActiveSpeaker.native.ts +4 -0
  513. package/template/src/utils/useFindActiveSpeaker.ts +373 -0
  514. package/template/src/utils/useFocus.tsx +51 -0
  515. package/template/src/utils/useFullScreen.native.ts +12 -0
  516. package/template/src/utils/useFullScreen.ts +161 -0
  517. package/template/src/utils/useGetMeetingPhrase.ts +61 -10
  518. package/template/src/utils/useIsAudioEnabled.ts +3 -3
  519. package/template/src/utils/useIsHandRaised.ts +13 -0
  520. package/template/src/utils/useIsLocalUserSpeaking.native.ts +4 -0
  521. package/template/src/utils/useIsLocalUserSpeaking.ts +119 -0
  522. package/template/src/utils/useIsPSTN.ts +3 -3
  523. package/template/src/utils/useIsVideoEnabled.ts +3 -3
  524. package/template/src/utils/useJoinRoom.ts +304 -0
  525. package/template/src/utils/useLayout.tsx +9 -3
  526. package/template/src/utils/useLocalAudio.ts +69 -0
  527. package/template/src/utils/useLocalVideo.ts +69 -0
  528. package/template/src/{subComponents/screenshare/ScreenshareButton.native.tsx → utils/useMenu.tsx} +16 -3
  529. package/template/src/utils/useModal.tsx +8 -0
  530. package/template/src/utils/useMutePSTN.ts +45 -2
  531. package/template/src/utils/useMuteToggleLocal.ts +125 -49
  532. package/template/src/utils/useOrientation.native.tsx +3 -0
  533. package/template/src/utils/useOrientation.tsx +59 -0
  534. package/template/src/utils/useRemoteEndCall.ts +4 -4
  535. package/template/src/utils/useRemoteEndScreenshare.ts +26 -0
  536. package/template/src/utils/useRemoteMute.ts +7 -7
  537. package/template/src/utils/useRemoteRequest.ts +84 -0
  538. package/template/src/utils/useSearchParams.tsx +28 -0
  539. package/template/src/utils/useSidePanel.tsx +16 -5
  540. package/template/src/utils/useSpeechToText.ts +102 -0
  541. package/template/src/utils/useString.ts +19 -7
  542. package/template/src/utils/useSwitchCamera.native.tsx +25 -0
  543. package/template/src/utils/useSwitchCamera.tsx +19 -0
  544. package/template/src/utils/useToolbar.tsx +59 -0
  545. package/template/src/wasms/agora-virtual-background.wasm +0 -0
  546. package/template/static.d.ts +42 -0
  547. package/template/tsconfig_rsdk_index.json +3 -3
  548. package/template/tsconfig_wsdk_index.json +3 -3
  549. package/template/web/index.html +45 -17
  550. package/template/webpack.commons.js +16 -0
  551. package/template/webpack.rsdk.config.js +1 -2
  552. package/template/webpack.web.config.js +8 -3
  553. package/template/_buckconfig +0 -6
  554. package/template/_gitattributes +0 -1
  555. package/template/agora-rn-uikit/src/Contexts/RenderContext.tsx +0 -10
  556. package/template/android/app/_BUCK +0 -55
  557. package/template/android/app/build_defs.bzl +0 -19
  558. package/template/bridge/rtc/webNg/LocalView.tsx +0 -20
  559. package/template/ios/HelloWorld/AppDelegate.m +0 -74
  560. package/template/src/assets/icons.ts +0 -102
  561. package/template/src/components/OAuth.electron.tsx +0 -40
  562. package/template/src/components/OAuth.native.tsx +0 -53
  563. package/template/src/components/OAuth.tsx +0 -29
  564. package/template/src/components/OAuthConfig.ts +0 -77
  565. package/template/src/components/StoreToken.tsx +0 -38
  566. package/template/src/components/chat-ui/useChatUIControl.tsx +0 -69
  567. package/template/src/components/meeting-info/useMeetingInfo.tsx +0 -70
  568. package/template/src/components/participants/MeParticipant.tsx +0 -38
  569. package/template/src/components/participants/RemoteParticipants.tsx +0 -71
  570. package/template/src/pages/video-call/CustomUserContextHolder.tsx +0 -20
  571. package/template/src/utils/useCreateMeeting.ts +0 -88
  572. package/template/src/utils/useJoinMeeting.ts +0 -132
@@ -11,15 +11,19 @@
11
11
  */
12
12
  // @ts-nocheck
13
13
  import React, {useState, useContext, useEffect, useRef} from 'react';
14
- import RtmEngine from 'agora-react-native-rtm';
15
- import {PropsContext, useLocalUid} from '../../agora-rn-uikit';
14
+ import RtmEngine, {RtmChannelAttribute} from 'agora-react-native-rtm';
15
+ import {
16
+ ContentInterface,
17
+ DispatchContext,
18
+ PropsContext,
19
+ useLocalUid,
20
+ } from '../../agora-rn-uikit';
16
21
  import ChatContext from './ChatContext';
17
- import {RtcContext} from '../../agora-rn-uikit';
18
22
  import {Platform} from 'react-native';
19
23
  import {backOff} from 'exponential-backoff';
20
24
  import {useString} from '../utils/useString';
21
- import {isAndroid, isWebInternal} from '../utils/common';
22
- import {useRender, useRtc} from 'customization-api';
25
+ import {isAndroid, isIOS, isWeb, isWebInternal} from '../utils/common';
26
+ import {useContent, useIsAttendee, useUserName} from 'customization-api';
23
27
  import {
24
28
  safeJsonParse,
25
29
  timeNow,
@@ -27,24 +31,55 @@ import {
27
31
  getMessageTime,
28
32
  get32BitUid,
29
33
  } from '../rtm/utils';
30
- import {EventUtils, EventsQueue} from '../rtm-events';
31
- import {EventPersistLevel} from '../rtm-events-api';
34
+ import {EventUtils, EventsQueue, EventNames} from '../rtm-events';
35
+ import events, {PersistanceLevel} from '../rtm-events-api';
32
36
  import RTMEngine from '../rtm/RTMEngine';
33
37
  import {filterObject} from '../utils';
38
+ import SDKEvents from '../utils/SdkEvents';
39
+ import isSDK from '../utils/isSDK';
40
+ import {useAsyncEffect} from '../utils/useAsyncEffect';
41
+ import {
42
+ WaitingRoomStatus,
43
+ useRoomInfo,
44
+ } from '../components/room-info/useRoomInfo';
45
+ import LocalEventEmitter, {
46
+ LocalEventsEnum,
47
+ } from '../rtm-events-api/LocalEvents';
48
+ import {PSTNUserLabel} from '../language/default-labels/videoCallScreenLabels';
49
+ import {controlMessageEnum} from '../components/ChatContext';
50
+ import {LogSource, logger} from '../logger/AppBuilderLogger';
51
+ import {RECORDING_BOT_UID} from '../utils/constants';
34
52
 
35
53
  export enum UserType {
36
54
  ScreenShare = 'screenshare',
37
55
  }
38
56
 
39
57
  const RtmConfigure = (props: any) => {
58
+ const rtmInitTimstamp = new Date().getTime();
40
59
  const localUid = useLocalUid();
41
60
  const {callActive} = props;
42
61
  const {rtcProps} = useContext(PropsContext);
43
- const {RtcEngine, dispatch} = useRtc();
44
- const {renderList, activeUids} = useRender();
45
- const renderListRef = useRef({renderList: renderList});
62
+ const {dispatch} = useContext(DispatchContext);
63
+ const {defaultContent, activeUids} = useContent();
64
+ const defaultContentRef = useRef({defaultContent: defaultContent});
46
65
  const activeUidsRef = useRef({activeUids: activeUids});
47
66
 
67
+ const {
68
+ waitingRoomStatus,
69
+ data: {isHost},
70
+ } = useRoomInfo();
71
+ const waitingRoomStatusRef = useRef({waitingRoomStatus: waitingRoomStatus});
72
+
73
+ const isHostRef = useRef({isHost: isHost});
74
+
75
+ useEffect(() => {
76
+ isHostRef.current.isHost = isHost;
77
+ }, [isHost]);
78
+
79
+ useEffect(() => {
80
+ waitingRoomStatusRef.current.waitingRoomStatus = waitingRoomStatus;
81
+ }, [waitingRoomStatus]);
82
+
48
83
  /**
49
84
  * inside event callback state won't have latest value.
50
85
  * so creating ref to access the state
@@ -54,55 +89,70 @@ const RtmConfigure = (props: any) => {
54
89
  }, [activeUids]);
55
90
 
56
91
  useEffect(() => {
57
- renderListRef.current.renderList = renderList;
58
- }, [renderList]);
59
-
60
- const [login, setLogin] = useState<boolean>(false);
92
+ defaultContentRef.current.defaultContent = defaultContent;
93
+ }, [defaultContent]);
61
94
 
62
95
  const [hasUserJoinedRTM, setHasUserJoinedRTM] = useState<boolean>(false);
63
96
  const [onlineUsersCount, setTotalOnlineUsers] = useState<number>(0);
64
97
 
65
- //commented for v1 release
66
- // const userText = useString('remoteUserDefaultLabel')();
67
- const userText = 'User';
68
- const pstnUserLabel = useString('pstnUserLabel')();
69
- //commented for v1 release
70
- //const getScreenShareName = useString('screenshareUserName');
71
- const getScreenShareName = (name: string) => `${name}'s screenshare`;
72
-
73
98
  let engine = useRef<RtmEngine>(null!);
74
99
  const timerValueRef: any = useRef(5);
75
100
 
76
101
  React.useEffect(() => {
77
102
  setTotalOnlineUsers(
78
103
  Object.keys(
79
- filterObject(renderList, ([k, v]) => v?.type === 'rtc' && !v.offline),
104
+ filterObject(
105
+ defaultContent,
106
+ ([k, v]) =>
107
+ v?.type === 'rtc' &&
108
+ !v.offline &&
109
+ activeUids.indexOf(v?.uid) !== -1,
110
+ ),
80
111
  ).length,
81
112
  );
82
- }, [renderList]);
113
+ }, [defaultContent]);
83
114
 
84
115
  React.useEffect(() => {
85
- const handBrowserClose = () => {
116
+ const handBrowserClose = ev => {
117
+ ev.preventDefault();
118
+ return (ev.returnValue = 'Are you sure you want to exit?');
119
+ };
120
+ const logoutRtm = () => {
86
121
  engine.current.leaveChannel(rtcProps.channel);
87
122
  };
88
123
 
89
124
  if (!isWebInternal()) return;
90
- window.addEventListener('beforeunload', handBrowserClose);
125
+ window.addEventListener(
126
+ 'beforeunload',
127
+ isWeb() && !isSDK() ? handBrowserClose : () => {},
128
+ );
129
+
130
+ window.addEventListener('pagehide', logoutRtm);
91
131
  // cleanup this component
92
132
  return () => {
93
- window.removeEventListener('beforeunload', handBrowserClose);
133
+ window.removeEventListener(
134
+ 'beforeunload',
135
+ isWeb() && !isSDK() ? handBrowserClose : () => {},
136
+ );
137
+ window.removeEventListener('pagehide', logoutRtm);
94
138
  };
95
139
  }, []);
96
140
 
97
141
  const doLoginAndSetupRTM = async () => {
98
142
  try {
143
+ logger.log(LogSource.AgoraSDK, 'API', 'RTM login starts');
99
144
  await engine.current.login({
100
145
  uid: localUid.toString(),
101
146
  token: rtcProps.rtm,
102
147
  });
148
+ logger.log(LogSource.AgoraSDK, 'API', 'RTM login done');
149
+ RTMEngine.getInstance().setLocalUID(localUid.toString());
150
+ logger.log(LogSource.AgoraSDK, 'API', 'RTM local Uid set');
103
151
  timerValueRef.current = 5;
104
- setAttribute();
152
+ await setAttribute();
153
+ logger.log(LogSource.AgoraSDK, 'Log', 'RTM setting attribute done');
105
154
  } catch (error) {
155
+ logger.error(LogSource.AgoraSDK, 'Log', 'RTM login failed..Trying again');
106
156
  setTimeout(async () => {
107
157
  timerValueRef.current = timerValueRef.current + timerValueRef.current;
108
158
  doLoginAndSetupRTM();
@@ -116,11 +166,35 @@ const RtmConfigure = (props: any) => {
116
166
  ];
117
167
  try {
118
168
  await engine.current.setLocalUserAttributes(rtmAttributes);
169
+ logger.log(
170
+ LogSource.AgoraSDK,
171
+ 'API',
172
+ 'RTM setting local user attributes',
173
+ {
174
+ attr: rtmAttributes,
175
+ },
176
+ );
119
177
  timerValueRef.current = 5;
120
178
  await joinChannel();
179
+ logger.log(LogSource.AgoraSDK, 'Log', 'RTM join channel done', {
180
+ data: rtmAttributes,
181
+ });
121
182
  setHasUserJoinedRTM(true);
122
183
  await runQueuedEvents();
184
+ logger.log(
185
+ LogSource.AgoraSDK,
186
+ 'Log',
187
+ 'RTM queued events finished running',
188
+ {
189
+ attr: rtmAttributes,
190
+ },
191
+ );
123
192
  } catch (error) {
193
+ logger.error(
194
+ LogSource.AgoraSDK,
195
+ 'Log',
196
+ 'RTM setAttribute failed..Trying again',
197
+ );
124
198
  setTimeout(async () => {
125
199
  timerValueRef.current = timerValueRef.current + timerValueRef.current;
126
200
  setAttribute();
@@ -130,10 +204,43 @@ const RtmConfigure = (props: any) => {
130
204
 
131
205
  const joinChannel = async () => {
132
206
  try {
133
- await engine.current.joinChannel(rtcProps.channel);
207
+ if (RTMEngine.getInstance().channelUid !== rtcProps.channel) {
208
+ await engine.current.joinChannel(rtcProps.channel);
209
+ logger.log(LogSource.AgoraSDK, 'API', 'RTM joinChannel', {
210
+ data: rtcProps.channel,
211
+ });
212
+ RTMEngine.getInstance().setChannelId(rtcProps.channel);
213
+ logger.log(
214
+ LogSource.AgoraSDK,
215
+ 'API',
216
+ 'RTM setChannelId',
217
+ rtcProps.channel,
218
+ );
219
+ logger.debug(
220
+ LogSource.SDK,
221
+ 'Event',
222
+ 'Emitting rtm joined',
223
+ rtcProps.channel,
224
+ );
225
+ SDKEvents.emit('_rtm-joined', rtcProps.channel);
226
+ } else {
227
+ logger.debug(
228
+ LogSource.AgoraSDK,
229
+ 'Log',
230
+ 'RTM already joined channel skipping',
231
+ rtcProps.channel,
232
+ );
233
+ }
134
234
  timerValueRef.current = 5;
135
235
  await getMembers();
236
+ await readAllChannelAttributes();
237
+ logger.log(LogSource.AgoraSDK, 'Log', 'RTM getMembers done');
136
238
  } catch (error) {
239
+ logger.error(
240
+ LogSource.AgoraSDK,
241
+ 'Log',
242
+ 'RTM joinChannel failed..Trying again',
243
+ );
137
244
  setTimeout(async () => {
138
245
  timerValueRef.current = timerValueRef.current + timerValueRef.current;
139
246
  joinChannel();
@@ -143,26 +250,55 @@ const RtmConfigure = (props: any) => {
143
250
 
144
251
  const updateRenderListState = (
145
252
  uid: number,
146
- data: Partial<RenderInterface>,
253
+ data: Partial<ContentInterface>,
147
254
  ) => {
148
255
  dispatch({type: 'UpdateRenderList', value: [uid, data]});
149
256
  };
150
257
 
151
258
  const getMembers = async () => {
152
259
  try {
260
+ logger.log(
261
+ LogSource.AgoraSDK,
262
+ 'API',
263
+ 'RTM getChannelMembersByID(getMembers) start',
264
+ );
153
265
  await engine.current
154
266
  .getChannelMembersBychannelId(rtcProps.channel)
155
- .then(async (data) => {
267
+ .then(async data => {
268
+ logger.log(
269
+ LogSource.AgoraSDK,
270
+ 'API',
271
+ 'RTM getChannelMembersByID data received',
272
+ data,
273
+ );
156
274
  await Promise.all(
157
275
  data.members.map(async (member: any) => {
158
276
  const backoffAttributes = backOff(
159
277
  async () => {
278
+ logger.log(
279
+ LogSource.AgoraSDK,
280
+ 'API',
281
+ `RTM fetching getUserAttributesByUid for member ${member.uid}`,
282
+ );
160
283
  const attr = await engine.current.getUserAttributesByUid(
161
284
  member.uid,
162
285
  );
163
286
  if (!attr || !attr.attributes) {
287
+ logger.log(
288
+ LogSource.AgoraSDK,
289
+ 'API',
290
+ 'RTM attributes for member not found',
291
+ );
164
292
  throw attr;
165
293
  }
294
+ logger.log(
295
+ LogSource.AgoraSDK,
296
+ 'API',
297
+ `RTM getUserAttributesByUid for member ${member.uid} received`,
298
+ {
299
+ attr,
300
+ },
301
+ );
166
302
  for (const key in attr.attributes) {
167
303
  if (
168
304
  attr.attributes.hasOwnProperty(key) &&
@@ -176,7 +312,9 @@ const RtmConfigure = (props: any) => {
176
312
  },
177
313
  {
178
314
  retry: (e, idx) => {
179
- console.log(
315
+ logger.debug(
316
+ LogSource.AgoraSDK,
317
+ 'Log',
180
318
  `[retrying] Attempt ${idx}. Fetching ${member.uid}'s name`,
181
319
  e,
182
320
  );
@@ -195,7 +333,10 @@ const RtmConfigure = (props: any) => {
195
333
  const userData = {
196
334
  screenUid: screenUid,
197
335
  //below thing for livestreaming
198
- type: 'rtc',
336
+ type: uid === parseInt(RECORDING_BOT_UID) ? 'bot' : 'rtc',
337
+ uid,
338
+ offline: false,
339
+ lastMessageTimeStamp: 0,
199
340
  };
200
341
  updateRenderListState(uid, userData);
201
342
  //end- updating user data in rtc
@@ -203,6 +344,7 @@ const RtmConfigure = (props: any) => {
203
344
  //start - updating screenshare data in rtc
204
345
  const screenShareUser = {
205
346
  type: UserType.ScreenShare,
347
+ parentUid: uid,
206
348
  };
207
349
  updateRenderListState(screenUid, screenShareUser);
208
350
  //end - updating screenshare data in rtc
@@ -224,12 +366,20 @@ const RtmConfigure = (props: any) => {
224
366
  }
225
367
  }
226
368
  } catch (e) {
227
- console.error(`Could not retrieve name of ${member.uid}`, e);
369
+ logger.error(
370
+ LogSource.AgoraSDK,
371
+ 'Log',
372
+ `Could not retrieve name of ${member.uid}`,
373
+ e,
374
+ );
228
375
  }
229
376
  }),
230
377
  );
231
- setLogin(true);
232
- console.log('RTM init done');
378
+ logger.debug(
379
+ LogSource.AgoraSDK,
380
+ 'Log',
381
+ 'RTM fetched all data and user attr...RTM init done',
382
+ );
233
383
  });
234
384
  timerValueRef.current = 5;
235
385
  } catch (error) {
@@ -240,9 +390,47 @@ const RtmConfigure = (props: any) => {
240
390
  }
241
391
  };
242
392
 
393
+ const readAllChannelAttributes = async () => {
394
+ try {
395
+ await engine.current
396
+ .getChannelAttributes(rtcProps.channel)
397
+ .then(async data => {
398
+ for (const [key, value] of Object.entries(data?.attributes)) {
399
+ const {lastUpdateTs, lastUpdateUserId, value: payloadValue} = value;
400
+ if (hasJsonStructure(payloadValue as string)) {
401
+ const data = {
402
+ evt: key,
403
+ value: payloadValue,
404
+ };
405
+ // TODOSUP: Add the data to queue, dont add same mulitple events, use set so as to not repeat events
406
+ EventsQueue.enqueue({
407
+ data: data,
408
+ uid: lastUpdateUserId,
409
+ ts: lastUpdateTs,
410
+ });
411
+ }
412
+ }
413
+ logger.log(
414
+ LogSource.AgoraSDK,
415
+ 'API',
416
+ 'RTM getChannelAttributes data received',
417
+ data,
418
+ );
419
+ });
420
+ timerValueRef.current = 5;
421
+ } catch (error) {
422
+ setTimeout(async () => {
423
+ timerValueRef.current = timerValueRef.current + timerValueRef.current;
424
+ await readAllChannelAttributes();
425
+ }, timerValueRef.current * 1000);
426
+ }
427
+ };
428
+
243
429
  const init = async () => {
430
+ logger.log(LogSource.AgoraSDK, 'Log', 'RTM creating engine...');
244
431
  engine.current = RTMEngine.getInstance().engine;
245
- RTMEngine.getInstance().setLoginInfo(localUid.toString(), rtcProps.channel);
432
+ RTMEngine.getInstance();
433
+ logger.log(LogSource.AgoraSDK, 'Log', 'RTM engine creation done');
246
434
 
247
435
  engine.current.on('connectionStateChanged', (evt: any) => {
248
436
  //console.log(evt);
@@ -251,12 +439,31 @@ const RtmConfigure = (props: any) => {
251
439
  // console.log(evt);
252
440
  });
253
441
  engine.current.on('channelMemberJoined', (data: any) => {
442
+ logger.log(LogSource.AgoraSDK, 'Event', 'channelMemberJoined', data);
254
443
  const backoffAttributes = backOff(
255
444
  async () => {
445
+ logger.log(
446
+ LogSource.AgoraSDK,
447
+ 'API',
448
+ `RTM fetching getUserAttributesByUid for member ${data.uid}`,
449
+ );
256
450
  const attr = await engine.current.getUserAttributesByUid(data.uid);
257
451
  if (!attr || !attr.attributes) {
452
+ logger.log(
453
+ LogSource.AgoraSDK,
454
+ 'API',
455
+ 'RTM attributes for member not found',
456
+ );
258
457
  throw attr;
259
458
  }
459
+ logger.log(
460
+ LogSource.AgoraSDK,
461
+ 'API',
462
+ `RTM getUserAttributesByUid for member ${data.uid} received`,
463
+ {
464
+ attr,
465
+ },
466
+ );
260
467
  for (const key in attr.attributes) {
261
468
  if (attr.attributes.hasOwnProperty(key) && attr.attributes[key]) {
262
469
  return attr;
@@ -267,7 +474,9 @@ const RtmConfigure = (props: any) => {
267
474
  },
268
475
  {
269
476
  retry: (e, idx) => {
270
- console.log(
477
+ logger.debug(
478
+ LogSource.AgoraSDK,
479
+ 'Log',
271
480
  `[retrying] Attempt ${idx}. Fetching ${data.uid}'s name`,
272
481
  e,
273
482
  );
@@ -285,7 +494,10 @@ const RtmConfigure = (props: any) => {
285
494
  const userData = {
286
495
  screenUid: screenUid,
287
496
  //below thing for livestreaming
288
- type: 'rtc',
497
+ type: uid === parseInt(RECORDING_BOT_UID) ? 'bot' : 'rtc',
498
+ uid,
499
+ offline: false,
500
+ lastMessageTimeStamp: 0,
289
501
  };
290
502
  updateRenderListState(uid, userData);
291
503
  //end- updating user data in rtc
@@ -293,18 +505,24 @@ const RtmConfigure = (props: any) => {
293
505
  //start - updating screenshare data in rtc
294
506
  const screenShareUser = {
295
507
  type: UserType.ScreenShare,
508
+ parentUid: uid,
296
509
  };
297
510
  updateRenderListState(screenUid, screenShareUser);
298
511
  //end - updating screenshare data in rtc
299
512
  } catch (e) {
300
- console.error(`Could not retrieve name of ${data.uid}`, e);
513
+ logger.error(
514
+ LogSource.AgoraSDK,
515
+ 'Event',
516
+ `Failed to retrive name of ${data.uid}`,
517
+ e,
518
+ );
301
519
  }
302
520
  }
303
521
  getname();
304
522
  });
305
523
 
306
524
  engine.current.on('channelMemberLeft', (data: any) => {
307
- console.log('user left', data);
525
+ logger.debug(LogSource.AgoraSDK, 'Event', 'channelMemberLeft', data);
308
526
  // Chat of left user becomes undefined. So don't cleanup
309
527
  const uid = data?.uid ? parseInt(data?.uid) : undefined;
310
528
  if (!uid) return;
@@ -315,12 +533,15 @@ const RtmConfigure = (props: any) => {
315
533
  });
316
534
 
317
535
  engine.current.on('messageReceived', (evt: any) => {
318
- console.log('CUSTOM_EVENT_API messageReceived: ', evt);
536
+ logger.debug(LogSource.Events, 'CUSTOM_EVENTS', 'messageReceived', evt);
319
537
  const {peerId, ts, text} = evt;
320
538
  const [err, msg] = safeJsonParse(text);
321
539
  if (err) {
322
- console.log(
323
- 'CUSTOM_EVENT_API: JSON payload incorrect, Error while parsing the payload',
540
+ logger.error(
541
+ LogSource.Events,
542
+ 'CUSTOM_EVENTS',
543
+ 'JSON payload incorrect, Error while parsing the payload',
544
+ err,
324
545
  );
325
546
  }
326
547
 
@@ -331,34 +552,103 @@ const RtmConfigure = (props: any) => {
331
552
  try {
332
553
  eventDispatcher(msg, sender, timestamp);
333
554
  } catch (error) {
334
- console.log('error while dispacthing', error);
555
+ logger.error(
556
+ LogSource.Events,
557
+ 'CUSTOM_EVENTS',
558
+ 'error while dispatching through eventDispatcher',
559
+ err,
560
+ );
335
561
  }
336
562
  });
337
563
 
338
- engine.current.on('channelMessageReceived', (evt) => {
339
- console.log('CUSTOM_EVENT_API channelMessageReceived: ', evt);
564
+ engine.current.on('channelMessageReceived', evt => {
565
+ logger.debug(
566
+ LogSource.Events,
567
+ 'CUSTOM_EVENTS',
568
+ 'channelMessageReceived',
569
+ evt,
570
+ );
340
571
 
341
572
  const {uid, channelId, text, ts} = evt;
342
- const [err, msg] = safeJsonParse(text);
343
- if (err) {
344
- console.log(
345
- 'CUSTOM_EVENT_API: JSON payload incorrect, Error while parsing the payload',
346
- );
347
- }
573
+ //whiteboard upload
574
+ if (uid == 1010101) {
575
+ const [err, res] = safeJsonParse(text);
576
+ if (err) {
577
+ logger.error(
578
+ LogSource.Events,
579
+ 'CUSTOM_EVENTS',
580
+ 'JSON payload incorrect, Error while parsing the payload',
581
+ err,
582
+ );
583
+ }
348
584
 
349
- const timestamp = getMessageTime(ts);
585
+ if (res?.data?.data?.images) {
586
+ LocalEventEmitter.emit(
587
+ LocalEventsEnum.WHITEBOARD_FILE_UPLOAD,
588
+ res?.data?.data?.images,
589
+ );
590
+ }
591
+ } else {
592
+ const [err, msg] = safeJsonParse(text);
593
+ if (err) {
594
+ logger.error(
595
+ LogSource.Events,
596
+ 'CUSTOM_EVENTS',
597
+ 'JSON payload incorrect, Error while parsing the payload',
598
+ err,
599
+ );
600
+ }
350
601
 
351
- const sender = Platform.OS ? get32BitUid(uid) : parseInt(uid);
602
+ const timestamp = getMessageTime(ts);
352
603
 
353
- if (channelId === rtcProps.channel) {
354
- try {
355
- eventDispatcher(msg, sender, timestamp);
356
- } catch (error) {
357
- console.log('error while dispacthing', error);
604
+ const sender = Platform.OS ? get32BitUid(uid) : parseInt(uid);
605
+
606
+ if (channelId === rtcProps.channel) {
607
+ try {
608
+ eventDispatcher(msg, sender, timestamp);
609
+ } catch (error) {
610
+ logger.error(
611
+ LogSource.Events,
612
+ 'CUSTOM_EVENTS',
613
+ 'error while dispatching through eventDispatcher',
614
+ error,
615
+ );
616
+ }
358
617
  }
359
618
  }
360
619
  });
361
- doLoginAndSetupRTM();
620
+
621
+ engine.current.on(
622
+ 'channelAttributesUpdated',
623
+ (attributeList: RtmChannelAttribute[]) => {
624
+ console.log('channel attributes updated', attributeList);
625
+ try {
626
+ attributeList.map((attribute: RtmChannelAttribute) => {
627
+ const {key, value, lastUpdateTs, lastUpdateUserId} = attribute;
628
+ const timestamp = getMessageTime(lastUpdateTs);
629
+ const sender = Platform.OS
630
+ ? get32BitUid(lastUpdateUserId)
631
+ : parseInt(lastUpdateUserId);
632
+ eventDispatcher(
633
+ {
634
+ evt: key,
635
+ value,
636
+ },
637
+ sender,
638
+ timestamp,
639
+ );
640
+ });
641
+ } catch (error) {
642
+ logger.error(
643
+ LogSource.Events,
644
+ 'CUSTOM_EVENTS',
645
+ 'error while dispatching through eventDispatcher',
646
+ error,
647
+ );
648
+ }
649
+ },
650
+ );
651
+ await doLoginAndSetupRTM();
362
652
  };
363
653
 
364
654
  const runQueuedEvents = async () => {
@@ -368,7 +658,12 @@ const RtmConfigure = (props: any) => {
368
658
  await eventDispatcher(currEvt.data, currEvt.uid, currEvt.ts);
369
659
  }
370
660
  } catch (error) {
371
- console.log('CUSTOM_EVENT_API: error while running queue events', error);
661
+ logger.error(
662
+ LogSource.Events,
663
+ 'CUSTOM_EVENTS',
664
+ 'error while running queue events',
665
+ error,
666
+ );
372
667
  }
373
668
  };
374
669
 
@@ -380,37 +675,135 @@ const RtmConfigure = (props: any) => {
380
675
  sender: string,
381
676
  ts: number,
382
677
  ) => {
383
- console.log('CUSTOM_EVENT_API: inside eventDispatcher ', data);
384
- const {evt, value} = data;
385
- // Step 1: Set local attributes
386
- if (value?.persistLevel === EventPersistLevel.LEVEL3) {
387
- const rtmAttribute = {key: evt, value: value};
388
- await engine.current.addOrUpdateLocalUserAttributes([rtmAttribute]);
678
+ console.debug(
679
+ LogSource.Events,
680
+ 'CUSTOM_EVENTS',
681
+ 'inside eventDispatcher ',
682
+ data,
683
+ );
684
+
685
+ let evt = '',
686
+ value = {};
687
+
688
+ if (data.feat === 'WAITING_ROOM') {
689
+ if (data.etyp === 'REQUEST') {
690
+ const outputData = {
691
+ evt: `${data.feat}_${data.etyp}`,
692
+ payload: JSON.stringify({
693
+ attendee_uid: data.data.data.attendee_uid,
694
+ attendee_screenshare_uid: data.data.data.attendee_screenshare_uid,
695
+ }),
696
+ persistLevel: 1,
697
+ source: 'core',
698
+ };
699
+ const formattedData = JSON.stringify(outputData);
700
+ evt = data.feat + '_' + data.etyp; //rename if client side RTM meessage is to be sent for approval
701
+ value = formattedData;
702
+ }
703
+ if (data.etyp === 'RESPONSE') {
704
+ const outputData = {
705
+ evt: `${data.feat}_${data.etyp}`,
706
+ payload: JSON.stringify({
707
+ approved: data.data.data.approved,
708
+ channelName: data.data.data.channel_name,
709
+ mainUser: data.data.data.mainUser,
710
+ screenShare: data.data.data.screenShare,
711
+ whiteboard: data.data.data.whiteboard,
712
+ chat: data.data.data?.chat,
713
+ }),
714
+ persistLevel: 1,
715
+ source: 'core',
716
+ };
717
+ const formattedData = JSON.stringify(outputData);
718
+ evt = data.feat + '_' + data.etyp;
719
+ value = formattedData;
720
+ }
721
+ } else {
722
+ if (
723
+ $config.ENABLE_WAITING_ROOM &&
724
+ !isHostRef.current?.isHost &&
725
+ waitingRoomStatusRef.current?.waitingRoomStatus !==
726
+ WaitingRoomStatus.APPROVED
727
+ ) {
728
+ if (
729
+ data.evt === controlMessageEnum.muteAudio ||
730
+ data.evt === controlMessageEnum.muteVideo
731
+ ) {
732
+ return;
733
+ } else {
734
+ evt = data.evt;
735
+ value = data.value;
736
+ }
737
+ } else {
738
+ evt = data.evt;
739
+ value = data.value;
740
+ }
389
741
  }
390
- // Step 2: Emit the event
742
+
391
743
  try {
392
744
  const {payload, persistLevel, source} = JSON.parse(value);
393
- console.log('CUSTOM_EVENT_API: emiting event..: ');
745
+ // Step 1: Set local attributes
746
+ if (persistLevel === PersistanceLevel.Session) {
747
+ const rtmAttribute = {key: evt, value: value};
748
+ await engine.current.addOrUpdateLocalUserAttributes([rtmAttribute]);
749
+ }
750
+ // Step 2: Emit the event
751
+ console.debug(LogSource.Events, 'CUSTOM_EVENTS', 'emiting event..: ');
394
752
  EventUtils.emitEvent(evt, source, {payload, persistLevel, sender, ts});
753
+ // Because async gets evaluated in a different order when in an sdk
754
+ if (evt === 'name') {
755
+ setTimeout(() => {
756
+ EventUtils.emitEvent(evt, source, {
757
+ payload,
758
+ persistLevel,
759
+ sender,
760
+ ts,
761
+ });
762
+ }, 200);
763
+ }
395
764
  } catch (error) {
396
- console.log('CUSTOM_EVENT_API: error while emiting event: ', error);
765
+ console.error(
766
+ LogSource.Events,
767
+ 'CUSTOM_EVENTS',
768
+ 'error while emiting event:',
769
+ error,
770
+ );
397
771
  }
398
772
  };
399
773
 
400
774
  const end = async () => {
401
- callActive
402
- ? (RTMEngine.getInstance().destroy(),
403
- EventUtils.clear(),
404
- setHasUserJoinedRTM(false),
405
- // setLogin(false),
406
- console.log('RTM cleanup done'))
407
- : {};
775
+ if (!callActive) {
776
+ return;
777
+ }
778
+ await RTMEngine.getInstance().destroy();
779
+ logger.log(LogSource.AgoraSDK, 'API', 'RTM destroy done');
780
+ if (isIOS() || isAndroid()) {
781
+ EventUtils.clear();
782
+ }
783
+ setHasUserJoinedRTM(false);
784
+ logger.debug(LogSource.AgoraSDK, 'Log', 'RTM cleanup done');
408
785
  };
409
786
 
410
- useEffect(() => {
411
- callActive ? init() : (console.log('waiting to init RTM'), setLogin(true));
412
- return () => {
413
- end();
787
+ useAsyncEffect(async () => {
788
+ //waiting room attendee -> rtm login will happen on page load
789
+ if ($config.ENABLE_WAITING_ROOM) {
790
+ //attendee
791
+ if (!isHost && !callActive) {
792
+ await init();
793
+ }
794
+ //host
795
+ if (isHost && callActive) {
796
+ await init();
797
+ }
798
+ }
799
+ if (!$config.ENABLE_WAITING_ROOM) {
800
+ //host and attendee
801
+ if (callActive) {
802
+ await init();
803
+ }
804
+ }
805
+ return async () => {
806
+ await end();
414
807
  };
415
808
  // eslint-disable-next-line react-hooks/exhaustive-deps
416
809
  }, [rtcProps.channel, rtcProps.appId, callActive]);
@@ -418,12 +811,13 @@ const RtmConfigure = (props: any) => {
418
811
  return (
419
812
  <ChatContext.Provider
420
813
  value={{
814
+ rtmInitTimstamp,
421
815
  hasUserJoinedRTM,
422
816
  engine: engine.current,
423
817
  localUid: localUid,
424
818
  onlineUsersCount,
425
819
  }}>
426
- {login ? props.children : <></>}
820
+ {props.children}
427
821
  </ChatContext.Provider>
428
822
  );
429
823
  };