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
@@ -1,18 +1,18 @@
1
1
  /*
2
2
  ********************************************
3
3
  Copyright © 2021 Agora Lab, Inc., all rights reserved.
4
- AppBuilder and all associated components, source code, APIs, services, and documentation
5
- (the “Materials”) are owned by Agora Lab, Inc. and its licensors. The Materials may not be
6
- accessed, used, modified, or distributed for any purpose without a license from Agora Lab, Inc.
7
- Use without a license or in violation of any license terms and conditions (including use for
8
- any purpose competitive to Agora Lab, Inc.’s business) is strictly prohibited. For more
9
- information visit https://appbuilder.agora.io.
4
+ AppBuilder and all associated components, source code, APIs, services, and documentation
5
+ (the “Materials”) are owned by Agora Lab, Inc. and its licensors. The Materials may not be
6
+ accessed, used, modified, or distributed for any purpose without a license from Agora Lab, Inc.
7
+ Use without a license or in violation of any license terms and conditions (including use for
8
+ any purpose competitive to Agora Lab, Inc.’s business) is strictly prohibited. For more
9
+ information visit https://appbuilder.agora.io.
10
10
  *********************************************
11
11
  */
12
- import React, {useEffect, useRef, useState} from 'react';
12
+ import React, {useContext, useEffect, useRef, useState} from 'react';
13
13
  import {Platform} from 'react-native';
14
14
  import KeepAwake from 'react-native-keep-awake';
15
- import {UidType} from '../../../agora-rn-uikit';
15
+ import {DispatchContext, UidType} from '../../../agora-rn-uikit';
16
16
  import {
17
17
  getGridLayoutName,
18
18
  getPinnedLayoutName,
@@ -20,10 +20,9 @@ import {
20
20
  useSetPinnedLayout,
21
21
  } from '../../pages/video-call/DefaultLayouts';
22
22
  import {useScreenContext} from '../../components/contexts/ScreenShareContext';
23
- import {useString} from '../../utils/useString';
24
23
  import events from '../../rtm-events-api';
25
24
  import {EventNames, EventActions} from '../../rtm-events';
26
- import {useLayout, useRender, useRtc} from 'customization-api';
25
+ import {useLayout, useContent, useRtc} from 'customization-api';
27
26
  import {filterObject} from '../../utils';
28
27
  import {ScreenshareContext} from './useScreenshare';
29
28
  import useMuteToggleLocal, {
@@ -31,29 +30,32 @@ import useMuteToggleLocal, {
31
30
  } from '../../utils/useMuteToggleLocal';
32
31
  import {useLocalUserInfo} from '../../app-state/useLocalUserInfo';
33
32
  import {LocalVideoStreamError} from 'react-native-agora';
33
+ import useAppState from '../../utils/useAppState';
34
34
 
35
35
  export const ScreenshareContextConsumer = ScreenshareContext.Consumer;
36
36
 
37
37
  export const ScreenshareConfigure = (props: {children: React.ReactNode}) => {
38
38
  const [isScreenshareActive, setScreenshareActive] = useState(false);
39
+ const isAndroidScreenShareStarted = useRef(false);
40
+ const appState = useAppState();
39
41
  const processRef = useRef(false);
40
42
  const enableVideoRef = useRef(false);
41
- const {dispatch, RtcEngine} = useRtc();
42
- const {renderList, activeUids, lastJoinedUid, pinnedUid} = useRender();
43
+ const {RtcEngineUnsafe} = useRtc();
44
+ const {dispatch} = useContext(DispatchContext);
45
+ const {defaultContent, activeUids, pinnedUid, secondaryPinnedUid} =
46
+ useContent();
43
47
  const isPinned = useRef(0);
44
48
  const {setScreenShareData, screenShareData, setScreenShareOnFullView} =
45
49
  useScreenContext();
46
- // commented for v1 release
47
- // const getScreenShareName = useString('screenshareUserName');
48
- // const userText = useString('remoteUserDefaultLabel')();
49
- const getScreenShareName = (name: string) => `${name}'s screenshare`;
50
- const userText = 'User';
51
50
  const setPinnedLayout = useSetPinnedLayout();
52
51
  const changeLayout = useChangeDefaultLayout();
53
52
  const {currentLayout} = useLayout();
54
- const renderListRef = useRef({renderList: renderList});
53
+ const defaultContentRef = useRef({defaultContent: defaultContent});
55
54
  const currentLayoutRef = useRef({currentLayout: currentLayout});
56
55
  const pinnedUidRef = useRef({pinnedUid: pinnedUid});
56
+ const secondaryPinnedUidRef = useRef({
57
+ secondaryPinnedUid: secondaryPinnedUid,
58
+ });
57
59
  const screenShareDataRef = useRef({screenShareData: screenShareData});
58
60
  const localMute = useMuteToggleLocal();
59
61
  const {video} = useLocalUserInfo();
@@ -61,13 +63,17 @@ export const ScreenshareConfigure = (props: {children: React.ReactNode}) => {
61
63
  pinnedUidRef.current.pinnedUid = pinnedUid;
62
64
  }, [pinnedUid]);
63
65
 
66
+ useEffect(() => {
67
+ secondaryPinnedUidRef.current.secondaryPinnedUid = secondaryPinnedUid;
68
+ }, [secondaryPinnedUid]);
69
+
64
70
  useEffect(() => {
65
71
  screenShareDataRef.current.screenShareData = screenShareData;
66
72
  }, [screenShareData]);
67
73
 
68
74
  useEffect(() => {
69
- renderListRef.current.renderList = renderList;
70
- }, [renderList]);
75
+ defaultContentRef.current.defaultContent = defaultContent;
76
+ }, [defaultContent]);
71
77
 
72
78
  useEffect(() => {
73
79
  currentLayoutRef.current.currentLayout = currentLayout;
@@ -77,7 +83,7 @@ export const ScreenshareConfigure = (props: {children: React.ReactNode}) => {
77
83
  const data = filterObject(screenShareData, ([k, v]) => v?.isActive);
78
84
  if (data) {
79
85
  const recentScreenshare = Object.keys(data)
80
- .map((i) => parseInt(i))
86
+ .map(i => parseInt(i))
81
87
  .sort((a, b) => {
82
88
  return data[a].ts - data[b].ts;
83
89
  });
@@ -87,21 +93,44 @@ export const ScreenshareConfigure = (props: {children: React.ReactNode}) => {
87
93
  isPinned.current !== recentScreenshare[0] &&
88
94
  activeUids.indexOf(recentScreenshare[0]) !== -1
89
95
  ) {
90
- triggerChangeLayout(true, recentScreenshare[0]);
96
+ triggerChangeLayout(
97
+ true,
98
+ recentScreenshare[0],
99
+ defaultContentRef.current.defaultContent[recentScreenshare[0]]
100
+ ?.parentUid,
101
+ );
91
102
  }
92
103
  }
93
104
  }
94
105
  }, [activeUids, screenShareData]);
95
106
 
96
- const triggerChangeLayout = (pinned: boolean, screenShareUid?: UidType) => {
107
+ const triggerChangeLayout = (
108
+ pinned: boolean,
109
+ screenShareUid?: UidType,
110
+ parentUid?: UidType,
111
+ ) => {
97
112
  let layout = currentLayoutRef.current.currentLayout;
98
113
  //screenshare is started set the layout to Pinned View
99
114
  if (pinned && screenShareUid) {
100
115
  isPinned.current = screenShareUid;
101
116
  dispatch({
102
- type: 'SwapVideo',
117
+ type: 'UserPin',
103
118
  value: [screenShareUid],
104
119
  });
120
+ if (parentUid && !secondaryPinnedUidRef.current.secondaryPinnedUid) {
121
+ dispatch({
122
+ type: 'UserSecondaryPin',
123
+ value: [parentUid],
124
+ });
125
+ } else if (
126
+ parentUid &&
127
+ secondaryPinnedUidRef.current.secondaryPinnedUid
128
+ ) {
129
+ dispatch({
130
+ type: 'ActiveSpeaker',
131
+ value: [parentUid],
132
+ });
133
+ }
105
134
  layout !== getPinnedLayoutName() && setPinnedLayout();
106
135
  } else {
107
136
  isPinned.current = 0;
@@ -111,92 +140,121 @@ export const ScreenshareConfigure = (props: {children: React.ReactNode}) => {
111
140
  };
112
141
 
113
142
  useEffect(() => {
114
- RtcEngine?.addListener(
143
+ RtcEngineUnsafe?.addListener(
115
144
  'LocalVideoStateChanged',
116
145
  (localVideoState, error) => {
117
- console.info('LocalVideoStateChanged', localVideoState, error);
118
- switch (error) {
119
- case LocalVideoStreamError.ExtensionCaptureStarted:
120
- processRef.current = true;
121
- setScreenshareActive(true);
146
+ if (Platform.OS === 'android') {
147
+ switch (error) {
148
+ case LocalVideoStreamError.ScreenCapturePermissionDenied:
149
+ isAndroidScreenShareStarted.current = false;
150
+ break;
151
+ }
152
+ } else {
153
+ switch (error) {
154
+ case LocalVideoStreamError.ExtensionCaptureStarted:
155
+ processRef.current = true;
156
+ setScreenshareActive(true);
157
+ break;
158
+ case LocalVideoStreamError.ExtensionCaptureStoped:
159
+ case LocalVideoStreamError.ExtensionCaptureDisconnected:
160
+ case LocalVideoStreamError.ScreenCapturePermissionDenied:
161
+ processRef.current = true;
162
+ setScreenshareActive(false);
163
+ break;
164
+ default:
165
+ break;
166
+ }
167
+ }
168
+ },
169
+ );
170
+ const unsubScreenShareAttribute = events.on(
171
+ EventNames.SCREENSHARE_ATTRIBUTE,
172
+ data => {
173
+ const payload = JSON.parse(data.payload);
174
+ const action = payload.action;
175
+ const value = payload.value;
176
+
177
+ const screenUidOfUser =
178
+ defaultContentRef.current.defaultContent[data.sender].screenUid;
179
+ switch (action) {
180
+ case EventActions.SCREENSHARE_STARTED:
181
+ setScreenShareData(prevState => {
182
+ return {
183
+ ...prevState,
184
+ [screenUidOfUser]: {
185
+ ...prevState[screenUidOfUser],
186
+ name: defaultContentRef.current.defaultContent[
187
+ screenUidOfUser
188
+ ]?.name,
189
+ isActive: true,
190
+ ts: value || 0,
191
+ },
192
+ };
193
+ });
122
194
  break;
123
- case LocalVideoStreamError.ExtensionCaptureStoped:
124
- case LocalVideoStreamError.ExtensionCaptureDisconnected:
125
- case LocalVideoStreamError.ScreenCapturePermissionDenied:
126
- processRef.current = true;
127
- setScreenshareActive(false);
195
+ case EventActions.SCREENSHARE_STOPPED:
196
+ //if user pinned some remote screenshare view as fullscreen view on native and remote stop the screenshare
197
+ //then we need to exit the fullscreen view
198
+ if (
199
+ screenShareDataRef.current.screenShareData[screenUidOfUser] &&
200
+ screenShareDataRef.current.screenShareData[screenUidOfUser]
201
+ ?.isExpanded
202
+ ) {
203
+ setScreenShareOnFullView(false);
204
+ }
205
+ setScreenShareData(prevState => {
206
+ return {
207
+ ...prevState,
208
+ [screenUidOfUser]: {
209
+ ...prevState[screenUidOfUser],
210
+ isExpanded: false,
211
+ name: defaultContentRef.current.defaultContent[
212
+ screenUidOfUser
213
+ ]?.name,
214
+ isActive: false,
215
+ ts: value || 0,
216
+ },
217
+ };
218
+ });
219
+ //if remote user started/stopped the screenshare then change the layout to pinned/grid
220
+ //if user pinned somebody then don't triggerlayout change
221
+ if (!pinnedUidRef.current.pinnedUid) {
222
+ triggerChangeLayout(false);
223
+ }
224
+ if (screenUidOfUser === pinnedUidRef.current.pinnedUid) {
225
+ triggerChangeLayout(false);
226
+ dispatch({
227
+ type: 'UserPin',
228
+ value: [0],
229
+ });
230
+ }
128
231
  break;
129
232
  default:
130
233
  break;
131
234
  }
132
235
  },
133
236
  );
134
- events.on(EventNames.SCREENSHARE_ATTRIBUTE, (data) => {
135
- const payload = JSON.parse(data.payload);
136
- const action = payload.action;
137
- const value = payload.value;
138
237
 
139
- const screenUidOfUser =
140
- renderListRef.current.renderList[data.sender].screenUid;
141
- switch (action) {
142
- case EventActions.SCREENSHARE_STARTED:
143
- setScreenShareData((prevState) => {
144
- return {
145
- ...prevState,
146
- [screenUidOfUser]: {
147
- ...prevState[screenUidOfUser],
148
- name: renderListRef.current.renderList[screenUidOfUser]?.name,
149
- isActive: true,
150
- ts: value || 0,
151
- },
152
- };
153
- });
154
- break;
155
- case EventActions.SCREENSHARE_STOPPED:
156
- //if user pinned some remote screenshare view as fullscreen view on native and remote stop the screenshare
157
- //then we need to exit the fullscreen view
158
- if (
159
- screenShareDataRef.current.screenShareData[screenUidOfUser] &&
160
- screenShareDataRef.current.screenShareData[screenUidOfUser]
161
- ?.isExpanded
162
- ) {
163
- setScreenShareOnFullView(false);
164
- }
165
- setScreenShareData((prevState) => {
166
- return {
167
- ...prevState,
168
- [screenUidOfUser]: {
169
- ...prevState[screenUidOfUser],
170
- isExpanded: false,
171
- name: renderListRef.current.renderList[screenUidOfUser]?.name,
172
- isActive: false,
173
- ts: value || 0,
174
- },
175
- };
176
- });
177
- //if remote user started/stopped the screenshare then change the layout to pinned/grid
178
- //if user pinned somebody then don't triggerlayout change
179
- if (!pinnedUidRef.current.pinnedUid) {
180
- triggerChangeLayout(false);
181
- }
182
- break;
183
- default:
184
- break;
185
- }
186
- });
238
+ return () => {
239
+ unsubScreenShareAttribute();
240
+ };
187
241
  }, []);
188
242
 
189
243
  const startUserScreenshare = async (captureAudio: boolean = false) => {
190
244
  if (!isScreenshareActive) {
191
245
  // either user can publish local video or screenshare stream
192
246
  // so if user video is turned on then we are turning off video before screenshare
193
- await RtcEngine?.startScreenCapture({
247
+ await RtcEngineUnsafe?.startScreenCapture({
194
248
  captureVideo: true,
195
249
  captureAudio,
196
250
  });
251
+ /**
252
+ * android -> user will see the confirmation popup from the system,
253
+ * if user denied permission we will update isAndroidScreenShareStarted.current as false in the video state change callback
254
+ * if user allowed permission we will update screenshare as active in appState useeffect
255
+ */
197
256
  if (Platform.OS === 'android') {
198
- processRef.current = true;
199
- setScreenshareActive(true);
257
+ isAndroidScreenShareStarted.current = true;
200
258
  }
201
259
  //For ios will update state in the video state changed callback
202
260
  } else {
@@ -204,13 +262,26 @@ export const ScreenshareConfigure = (props: {children: React.ReactNode}) => {
204
262
  }
205
263
  };
206
264
 
265
+ useEffect(() => {
266
+ setTimeout(() => {
267
+ if (
268
+ appState === 'active' &&
269
+ isAndroidScreenShareStarted.current === true
270
+ ) {
271
+ isAndroidScreenShareStarted.current = false;
272
+ processRef.current = true;
273
+ setScreenshareActive(true);
274
+ }
275
+ }, 1000);
276
+ }, [appState]);
277
+
207
278
  const stopUserScreenShare = async (
208
279
  enableVideo: boolean = false,
209
280
  forceStop: boolean = false,
210
281
  ) => {
211
282
  if (isScreenshareActive || forceStop) {
212
283
  enableVideoRef.current = enableVideo;
213
- await RtcEngine?.stopScreenCapture();
284
+ await RtcEngineUnsafe?.stopScreenCapture();
214
285
  if (Platform.OS === 'android') {
215
286
  processRef.current = true;
216
287
  setScreenshareActive(false);
@@ -226,7 +297,7 @@ export const ScreenshareConfigure = (props: {children: React.ReactNode}) => {
226
297
  //native screenshare is started
227
298
  if (isScreenshareActive) {
228
299
  //to increase the performance - stop incoming video stream
229
- RtcEngine.muteAllRemoteVideoStreams(true);
300
+ RtcEngineUnsafe.muteAllRemoteVideoStreams(true);
230
301
 
231
302
  //since native screenshare uses local user video
232
303
  //we need to turn on video if its off.
@@ -238,7 +309,7 @@ export const ScreenshareConfigure = (props: {children: React.ReactNode}) => {
238
309
  //native screenshare is stopped
239
310
  else {
240
311
  //resume the incoming video stream
241
- RtcEngine.muteAllRemoteVideoStreams(false);
312
+ RtcEngineUnsafe.muteAllRemoteVideoStreams(false);
242
313
 
243
314
  //edge case - if screenshare is going on and user want to enable the video
244
315
  //then we will inform the user to stop screenshare and start camera