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
@@ -1,46 +1,100 @@
1
1
  import React, {useContext} from 'react';
2
- import {RtcLocalView, RtcRemoteView, VideoRenderMode} from 'react-native-agora';
2
+ import {
3
+ RenderModeType,
4
+ RtcSurfaceView,
5
+ RtcTextureView,
6
+ } from 'react-native-agora';
3
7
  import styles from '../Style';
4
- import PropsContext, {RenderInterface} from '../Contexts/PropsContext';
5
- import {View} from 'react-native';
8
+ import PropsContext, {ContentInterface} from '../Contexts/PropsContext';
9
+ import {View, ViewStyle, Platform, ViewProps, StyleSheet} from 'react-native';
6
10
  import useLocalUid from '../Utils/useLocalUid';
7
11
 
8
- const LocalView = RtcLocalView.SurfaceView;
9
- const RemoteView = RtcRemoteView.SurfaceView;
12
+ const LocalView = RtcSurfaceView;
13
+ let RemoteView = RtcSurfaceView;
10
14
 
11
15
  interface MaxViewInterface {
12
- user: RenderInterface;
16
+ user: ContentInterface;
13
17
  fallback?: React.ComponentType;
18
+ containerStyle?: ViewStyle;
19
+ landscapeMode?: boolean;
20
+ isFullView?: boolean;
14
21
  }
15
22
 
23
+ /*
24
+ RenderModeType :
25
+ Fill: Stretches or zooms to fill the screen, might distort.
26
+ Fit: Fits the entire video without distortion, might have black bars.
27
+ Hidden: Fills the screen, might cut off parts of the video.
28
+ */
29
+
16
30
  const MaxVideoView: React.FC<MaxViewInterface> = (props) => {
17
31
  const {styleProps, rtcProps} = useContext(PropsContext);
18
32
  const {maxViewStyles} = styleProps || {};
33
+ const {
34
+ containerStyle = {},
35
+ landscapeMode = false,
36
+ isFullView = false,
37
+ } = props;
38
+ let landscapeModeStyle: ViewProps['style'] = {};
39
+ if (landscapeMode) {
40
+ //SurfaceView does not support transform
41
+ //TextureView only applicable to android
42
+ if (Platform.OS === 'android') {
43
+ RemoteView = RtcTextureView;
44
+ }
45
+ landscapeModeStyle = {
46
+ flex: 1,
47
+ alignSelf: 'center',
48
+ alignItems: 'center',
49
+ transform: [{rotate: '90deg'}],
50
+ };
51
+ }
19
52
  const Fallback = props.fallback;
20
53
  const localUid = useLocalUid();
54
+ //@ts-ignore
21
55
  const uid = props.user.uid === rtcProps?.screenShareUid ? 1 : props.user.uid;
22
56
  return uid === localUid ? (
23
57
  props.user.video ? (
24
58
  <LocalView
25
- style={{...styles.fullView, ...(maxViewStyles as object)}}
26
- renderMode={VideoRenderMode.Fit}
59
+ style={{
60
+ ...styles.fullView,
61
+ ...(maxViewStyles as object),
62
+ ...containerStyle,
63
+ }}
64
+ canvas={{
65
+ renderMode: isFullView
66
+ ? RenderModeType.RenderModeAdaptive
67
+ : RenderModeType.RenderModeFit,
68
+ uid: 0,
69
+ }}
27
70
  />
28
71
  ) : Fallback ? (
29
72
  <Fallback />
30
73
  ) : (
31
- <View style={{flex: 1, backgroundColor: '#000'}} />
74
+ <View style={[style.containerStyle, containerStyle]} />
32
75
  )
33
76
  ) : props.user.video ? (
34
77
  <RemoteView
35
- style={{...styles.fullView, ...(maxViewStyles as object)}}
36
- uid={uid as number}
37
- renderMode={VideoRenderMode.Fit}
78
+ style={{
79
+ ...styles.fullView,
80
+ ...(maxViewStyles as object),
81
+ ...containerStyle,
82
+ ...landscapeModeStyle,
83
+ }}
84
+ canvas={{
85
+ renderMode: RenderModeType.RenderModeFit,
86
+ uid: uid as number,
87
+ }}
38
88
  />
39
89
  ) : Fallback ? (
40
90
  <Fallback />
41
91
  ) : (
42
- <View style={{flex: 1, backgroundColor: '#000'}} />
92
+ <View style={[style.containerStyle, containerStyle]} />
43
93
  );
44
94
  };
45
95
 
46
96
  export default MaxVideoView;
97
+
98
+ const style = StyleSheet.create({
99
+ containerStyle: {flex: 1, backgroundColor: '#000'},
100
+ });
@@ -1,42 +1,74 @@
1
1
  import React, {useContext} from 'react';
2
- import {RtcLocalView, RtcRemoteView, VideoRenderMode} from 'react-native-agora';
3
- import styles from '../Style';
4
- import PropsContext, {RenderInterface} from '../Contexts/PropsContext';
5
- import {View} from 'react-native';
2
+
3
+ import {RenderModeType, RtcSurfaceView} from 'react-native-agora';
4
+
5
+ import PropsContext, {ContentInterface} from '../Contexts/PropsContext';
6
+ import {View, ViewStyle, StyleSheet} from 'react-native';
6
7
  import useLocalUid from '../Utils/useLocalUid';
7
8
 
8
- const LocalView = RtcLocalView.SurfaceView;
9
- const RemoteView = RtcRemoteView.SurfaceView;
9
+ const LocalView = RtcSurfaceView;
10
+ const RemoteView = RtcSurfaceView;
10
11
 
11
12
  interface MaxViewInterface {
12
- user: RenderInterface;
13
+ user: ContentInterface;
13
14
  fallback?: React.ComponentType;
15
+ containerStyle?: ViewStyle;
16
+ landscapeMode?: boolean;
17
+ isFullView?: boolean;
14
18
  }
15
19
 
16
20
  const MaxVideoView: React.FC<MaxViewInterface> = (props) => {
17
- const {styleProps, rtcProps} = useContext(PropsContext);
18
- const {maxViewStyles} = styleProps || {};
21
+ const {rtcProps} = useContext(PropsContext);
22
+
19
23
  const Fallback = props.fallback;
24
+ const {
25
+ containerStyle = {},
26
+ landscapeMode = false,
27
+ isFullView = false,
28
+ } = props;
20
29
  const localUid = useLocalUid();
30
+ //@ts-ignore
21
31
  const uid = props.user.uid === rtcProps?.screenShareUid ? 1 : props.user.uid;
32
+ let landscapeModeStyle = {};
33
+ if (landscapeMode) {
34
+ landscapeModeStyle = {
35
+ transform: 'rotate(90deg)',
36
+ alignSelf: 'center',
37
+ alignItems: 'center',
38
+ };
39
+ }
22
40
  return uid === localUid ? (
23
41
  props.user.video ? (
24
42
  <LocalView
25
- style={{...styles.fullView, ...(maxViewStyles as object)}}
26
- renderMode={VideoRenderMode.Fit}
43
+ style={containerStyle}
44
+ canvas={{
45
+ renderMode: isFullView
46
+ ? RenderModeType.RenderModeAdaptive
47
+ : RenderModeType.RenderModeFit,
48
+ uid: 0,
49
+ }}
27
50
  />
28
51
  ) : Fallback ? (
29
52
  <Fallback />
30
53
  ) : (
31
- <View style={{flex: 1, backgroundColor: '#000'}} />
54
+ <View style={[style.containerStyle, containerStyle]} />
32
55
  )
33
56
  ) : (
34
57
  <>
35
- <div style={{flex: 1, display: props.user.video ? 'flex' : 'none'}}>
58
+ <div
59
+ // eslint-disable-next-line react-native/no-inline-styles
60
+ style={{
61
+ flex: 1,
62
+ overflow: 'hidden',
63
+ display: props.user.video ? 'flex' : 'none',
64
+ ...landscapeModeStyle,
65
+ }}>
36
66
  <RemoteView
37
- style={{...styles.fullView, ...(maxViewStyles as object)}}
38
- uid={uid as number}
39
- renderMode={VideoRenderMode.Fit}
67
+ style={containerStyle}
68
+ canvas={{
69
+ renderMode: RenderModeType.RenderModeFit,
70
+ uid: uid as number,
71
+ }}
40
72
  />
41
73
  </div>
42
74
  {props.user.video ? (
@@ -46,7 +78,7 @@ const MaxVideoView: React.FC<MaxViewInterface> = (props) => {
46
78
  {Fallback ? (
47
79
  <Fallback />
48
80
  ) : (
49
- <View style={{flex: 1, backgroundColor: '#000'}} />
81
+ <View style={[style.containerStyle, containerStyle]} />
50
82
  )}
51
83
  </>
52
84
  )}
@@ -55,3 +87,7 @@ const MaxVideoView: React.FC<MaxViewInterface> = (props) => {
55
87
  };
56
88
 
57
89
  export default MaxVideoView;
90
+
91
+ const style = StyleSheet.create({
92
+ containerStyle: {flex: 1, backgroundColor: '#000'},
93
+ });
@@ -1,17 +1,19 @@
1
+ /* eslint-disable react-native/no-inline-styles */
1
2
  import React, {useState, useContext} from 'react';
2
3
  import {View, TouchableOpacity, Image} from 'react-native';
3
- import {RtcLocalView, RtcRemoteView, VideoRenderMode} from 'react-native-agora';
4
+
5
+ import {RenderModeType, RtcSurfaceView} from 'react-native-agora';
4
6
  import styles from '../Style';
5
7
  import icons from '../Controls/Icons';
6
8
  import RemoteControls from '../Controls/RemoteControls';
7
- import PropsContext, {RenderInterface} from '../Contexts/PropsContext';
9
+ import PropsContext, {ContentInterface} from '../Contexts/PropsContext';
8
10
  import useLocalUid from '../Utils/useLocalUid';
9
11
 
10
- const LocalView = RtcLocalView.SurfaceView;
11
- const RemoteView = RtcRemoteView.SurfaceView;
12
+ const LocalView = RtcSurfaceView;
13
+ const RemoteView = RtcSurfaceView;
12
14
 
13
15
  interface MinViewInterface {
14
- user: RenderInterface;
16
+ user: ContentInterface;
15
17
  color?: string;
16
18
  showOverlay?: boolean;
17
19
  }
@@ -23,6 +25,7 @@ const MinVideoView: React.FC<MinViewInterface> = (props) => {
23
25
  const {minCloseBtnStyles} = remoteBtnStyles || {};
24
26
  const {showOverlay} = props || {};
25
27
  const localUid = useLocalUid();
28
+ //@ts-ignore
26
29
  const uid = props.user.uid === rtcProps?.screenShareUid ? 1 : props.user.uid;
27
30
  return (
28
31
  <View style={{margin: 5}}>
@@ -32,7 +35,7 @@ const MinVideoView: React.FC<MinViewInterface> = (props) => {
32
35
  props.user.video ? (
33
36
  <LocalView
34
37
  style={{...styles.minView, ...(minViewStyles as object)}}
35
- renderMode={VideoRenderMode.Hidden}
38
+ canvas={{renderMode: RenderModeType.RenderModeHidden, uid: 0}}
36
39
  zOrderMediaOverlay={true}
37
40
  />
38
41
  ) : (
@@ -48,8 +51,10 @@ const MinVideoView: React.FC<MinViewInterface> = (props) => {
48
51
  ) : (
49
52
  <RemoteView
50
53
  style={{...styles.minView, ...(minViewStyles as object)}}
51
- uid={uid as number}
52
- renderMode={VideoRenderMode.Hidden}
54
+ canvas={{
55
+ renderMode: RenderModeType.RenderModeHidden,
56
+ uid: uid as number,
57
+ }}
53
58
  zOrderMediaOverlay={true}
54
59
  />
55
60
  )}
@@ -57,14 +62,16 @@ const MinVideoView: React.FC<MinViewInterface> = (props) => {
57
62
  ) : uid === localUid ? (
58
63
  <LocalView
59
64
  style={{...styles.minView, ...(minViewStyles as object)}}
60
- renderMode={VideoRenderMode.Hidden}
65
+ canvas={{renderMode: RenderModeType.RenderModeHidden, uid: 0}}
61
66
  zOrderMediaOverlay={true}
62
67
  />
63
68
  ) : (
64
69
  <RemoteView
65
70
  style={{...styles.minView, ...(minViewStyles as object)}}
66
- uid={uid as number}
67
- renderMode={VideoRenderMode.Hidden}
71
+ canvas={{
72
+ renderMode: RenderModeType.RenderModeHidden,
73
+ uid: uid as number,
74
+ }}
68
75
  zOrderMediaOverlay={true}
69
76
  />
70
77
  )}
@@ -80,6 +87,7 @@ const MinVideoView: React.FC<MinViewInterface> = (props) => {
80
87
  height: 25,
81
88
  tintColor: theme || props.color || '#fff',
82
89
  }}
90
+ //@ts-ignore
83
91
  source={{uri: icons.close}}
84
92
  />
85
93
  </TouchableOpacity>
@@ -12,10 +12,16 @@ export {
12
12
  } from './Contexts/LocalUserContext';
13
13
 
14
14
  export {
15
- default as RenderContext,
16
- RenderConsumer,
17
- RenderProvider,
18
- } from './Contexts/RenderContext';
15
+ default as ContentContext,
16
+ ContentConsumer,
17
+ ContentProvider,
18
+ } from './Contexts/ContentContext';
19
+
20
+ export {
21
+ default as DispatchContext,
22
+ DispatchConsumer,
23
+ DispatchProvider,
24
+ } from './Contexts/DispatchContext';
19
25
 
20
26
  export {
21
27
  default as PropsContext,
@@ -25,18 +31,18 @@ export {
25
31
 
26
32
  export {DualStreamMode} from './Contexts/PropsContext';
27
33
 
28
- export {ToggleState} from './Contexts/PropsContext';
34
+ export {ToggleState, PermissionState} from './Contexts/PropsContext';
29
35
 
30
36
  export type {
31
- DefaultRenderInterface,
32
- RenderInterface,
37
+ DefaultContentInterface,
38
+ ContentInterface,
33
39
  RtcPropsInterface,
34
40
  CallbacksInterface,
35
41
  CustomCallbacksInterface,
36
42
  PropsInterface,
37
43
  } from './Contexts/PropsContext';
38
44
 
39
- export {ClientRole, ChannelProfile} from './Contexts/PropsContext';
45
+ export {ClientRoleType, ChannelProfileType} from './Contexts/PropsContext';
40
46
 
41
47
  export {
42
48
  default as RtcContext,
@@ -46,11 +52,12 @@ export {
46
52
  export type {
47
53
  UidType,
48
54
  RtcContextInterface,
49
- DispatchType,
50
- RenderStateInterface,
55
+ ContentStateInterface,
51
56
  ActionInterface,
52
57
  ActionType,
53
58
  } from './Contexts/RtcContext';
59
+ export type {ExtenedContentInterface} from './Contexts/PropsContext';
60
+ export type {DispatchType} from './Contexts/DispatchContext';
54
61
 
55
62
  export {default as BtnTemplate} from './Controls/BtnTemplate';
56
63
  export type {BtnTemplateInterface} from './Controls/BtnTemplate';
@@ -67,4 +74,6 @@ export {default as RemoteVideoMute} from './Controls/Remote/RemoteVideoMute';
67
74
  export {default as RemoteControls} from './Controls/RemoteControls';
68
75
 
69
76
  export {default as ImageIcon} from './Controls/ImageIcon';
77
+ export {default as Icons} from './Controls/Icons';
78
+ export type {IconsInterface} from './Controls/Icons';
70
79
  export {default as useLocalUid} from './Utils/useLocalUid';
@@ -1,133 +1,79 @@
1
1
  apply plugin: "com.android.application"
2
-
3
- import com.android.build.OutputFile
2
+ apply plugin: "com.facebook.react"
4
3
 
5
4
  /**
6
- * The react.gradle file registers a task for each build variant (e.g. bundleDebugJsAndAssets
7
- * and bundleReleaseJsAndAssets).
8
- * These basically call `react-native bundle` with the correct arguments during the Android build
9
- * cycle. By default, bundleDebugJsAndAssets is skipped, as in debug/dev mode we prefer to load the
10
- * bundle directly from the development server. Below you can see all the possible configurations
11
- * and their defaults. If you decide to add a configuration block, make sure to add it before the
12
- * `apply from: "../../node_modules/react-native/react.gradle"` line.
13
- *
14
- * project.ext.react = [
15
- * // the name of the generated asset file containing your JS bundle
16
- * bundleAssetName: "index.android.bundle",
17
- *
18
- * // the entry file for bundle generation. If none specified and
19
- * // "index.android.js" exists, it will be used. Otherwise "index.js" is
20
- * // default. Can be overridden with ENTRY_FILE environment variable.
21
- * entryFile: "index.android.js",
22
- *
23
- * // https://reactnative.dev/docs/performance#enable-the-ram-format
24
- * bundleCommand: "ram-bundle",
25
- *
26
- * // whether to bundle JS and assets in debug mode
27
- * bundleInDebug: false,
28
- *
29
- * // whether to bundle JS and assets in release mode
30
- * bundleInRelease: true,
31
- *
32
- * // whether to bundle JS and assets in another build variant (if configured).
33
- * // See http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants
34
- * // The configuration property can be in the following formats
35
- * // 'bundleIn${productFlavor}${buildType}'
36
- * // 'bundleIn${buildType}'
37
- * // bundleInFreeDebug: true,
38
- * // bundleInPaidRelease: true,
39
- * // bundleInBeta: true,
40
- *
41
- * // whether to disable dev mode in custom build variants (by default only disabled in release)
42
- * // for example: to disable dev mode in the staging build type (if configured)
43
- * devDisabledInStaging: true,
44
- * // The configuration property can be in the following formats
45
- * // 'devDisabledIn${productFlavor}${buildType}'
46
- * // 'devDisabledIn${buildType}'
47
- *
48
- * // the root of your project, i.e. where "package.json" lives
49
- * root: "../../",
50
- *
51
- * // where to put the JS bundle asset in debug mode
52
- * jsBundleDirDebug: "$buildDir/intermediates/assets/debug",
53
- *
54
- * // where to put the JS bundle asset in release mode
55
- * jsBundleDirRelease: "$buildDir/intermediates/assets/release",
56
- *
57
- * // where to put drawable resources / React Native assets, e.g. the ones you use via
58
- * // require('./image.png')), in debug mode
59
- * resourcesDirDebug: "$buildDir/intermediates/res/merged/debug",
60
- *
61
- * // where to put drawable resources / React Native assets, e.g. the ones you use via
62
- * // require('./image.png')), in release mode
63
- * resourcesDirRelease: "$buildDir/intermediates/res/merged/release",
64
- *
65
- * // by default the gradle tasks are skipped if none of the JS files or assets change; this means
66
- * // that we don't look at files in android/ or ios/ to determine whether the tasks are up to
67
- * // date; if you have any other folders that you want to ignore for performance reasons (gradle
68
- * // indexes the entire tree), add them here. Alternatively, if you have JS files in android/
69
- * // for example, you might want to remove it from here.
70
- * inputExcludes: ["android/**", "ios/**"],
71
- *
72
- * // override which node gets called and with what additional arguments
73
- * nodeExecutableAndArgs: ["node"],
74
- *
75
- * // supply additional arguments to the packager
76
- * extraPackagerArgs: []
77
- * ]
5
+ * This is the configuration block to customize your React Native Android app.
6
+ * By default you don't need to apply any configuration, just uncomment the lines you need.
78
7
  */
79
-
80
- project.ext.react = [
81
- enableHermes: false, // clean and rebuild if changing
82
- ]
83
-
84
- apply from: "../../node_modules/react-native/react.gradle"
85
-
86
- /**
87
- * Set this to true to create two separate APKs instead of one:
88
- * - An APK that only works on ARM devices
89
- * - An APK that only works on x86 devices
90
- * The advantage is the size of the APK is reduced by about 4MB.
91
- * Upload all the APKs to the Play Store and people will download
92
- * the correct one based on the CPU architecture of their device.
93
- */
94
- def enableSeparateBuildPerCPUArchitecture = false
8
+ react {
9
+ /* Folders */
10
+ // The root of your project, i.e. where "package.json" lives. Default is '..'
11
+ // root = file("../")
12
+ // The folder where the react-native NPM package is. Default is ../node_modules/react-native
13
+ // reactNativeDir = file("../node_modules/react-native")
14
+ // The folder where the react-native Codegen package is. Default is ../node_modules/@react-native/codegen
15
+ // codegenDir = file("../node_modules/@react-native/codegen")
16
+ // The cli.js file which is the React Native CLI entrypoint. Default is ../node_modules/react-native/cli.js
17
+ // cliFile = file("../node_modules/react-native/cli.js")
18
+
19
+ /* Variants */
20
+ // The list of variants to that are debuggable. For those we're going to
21
+ // skip the bundling of the JS bundle and the assets. By default is just 'debug'.
22
+ // If you add flavors like lite, prod, etc. you'll have to list your debuggableVariants.
23
+ // debuggableVariants = ["liteDebug", "prodDebug"]
24
+
25
+ /* Bundling */
26
+ // A list containing the node command and its flags. Default is just 'node'.
27
+ // nodeExecutableAndArgs = ["node"]
28
+ //
29
+ // The command to run when bundling. By default is 'bundle'
30
+ // bundleCommand = "ram-bundle"
31
+ //
32
+ // The path to the CLI configuration file. Default is empty.
33
+ // bundleConfig = file(../rn-cli.config.js)
34
+ //
35
+ // The name of the generated asset file containing your JS bundle
36
+ // bundleAssetName = "MyApplication.android.bundle"
37
+ //
38
+ // The entry file for bundle generation. Default is 'index.android.js' or 'index.js'
39
+ // entryFile = file("../js/MyApplication.android.js")
40
+ //
41
+ // A list of extra flags to pass to the 'bundle' commands.
42
+ // See https://github.com/react-native-community/cli/blob/main/docs/commands.md#bundle
43
+ // extraPackagerArgs = []
44
+
45
+ /* Hermes Commands */
46
+ // The hermes compiler command to run. By default it is 'hermesc'
47
+ // hermesCommand = "$rootDir/my-custom-hermesc/bin/hermesc"
48
+ //
49
+ // The list of flags to pass to the Hermes compiler. By default is "-O", "-output-source-map"
50
+ // hermesFlags = ["-O", "-output-source-map"]
51
+ }
95
52
 
96
53
  /**
97
- * Run Proguard to shrink the Java bytecode in release builds.
54
+ * Set this to true to Run Proguard on Release builds to minify the Java bytecode.
98
55
  */
99
56
  def enableProguardInReleaseBuilds = false
100
57
 
101
58
  /**
102
- * The preferred build flavor of JavaScriptCore.
59
+ * The preferred build flavor of JavaScriptCore (JSC)
103
60
  *
104
61
  * For example, to use the international variant, you can use:
105
62
  * `def jscFlavor = 'org.webkit:android-jsc-intl:+'`
106
63
  *
107
64
  * The international variant includes ICU i18n library and necessary data
108
65
  * allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that
109
- * give correct results when using with locales other than en-US. Note that
66
+ * give correct results when using with locales other than en-US. Note that
110
67
  * this variant is about 6MiB larger per architecture than default.
111
68
  */
112
69
  def jscFlavor = 'org.webkit:android-jsc:+'
113
70
 
114
- /**
115
- * Whether to enable the Hermes VM.
116
- *
117
- * This should be set on project.ext.react and mirrored here. If it is not set
118
- * on project.ext.react, JavaScript will not be compiled to Hermes Bytecode
119
- * and the benefits of using Hermes will therefore be sharply reduced.
120
- */
121
- def enableHermes = project.ext.react.get("enableHermes", false);
122
-
123
71
  android {
124
- compileSdkVersion rootProject.ext.compileSdkVersion
72
+ ndkVersion rootProject.ext.ndkVersion
125
73
 
126
- compileOptions {
127
- sourceCompatibility JavaVersion.VERSION_1_8
128
- targetCompatibility JavaVersion.VERSION_1_8
129
- }
74
+ compileSdkVersion rootProject.ext.compileSdkVersion
130
75
 
76
+ namespace "com.helloworld"
131
77
  defaultConfig {
132
78
  applicationId "com.helloworld"
133
79
  minSdkVersion rootProject.ext.minSdkVersion
@@ -135,14 +81,6 @@ android {
135
81
  versionCode 1
136
82
  versionName "1.0"
137
83
  }
138
- splits {
139
- abi {
140
- reset()
141
- enable enableSeparateBuildPerCPUArchitecture
142
- universalApk false // If true, also generate a universal APK
143
- include "armeabi-v7a", "x86", "arm64-v8a", "x86_64"
144
- }
145
- }
146
84
  signingConfigs {
147
85
  debug {
148
86
  storeFile file('debug.keystore')
@@ -163,57 +101,31 @@ android {
163
101
  proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
164
102
  }
165
103
  }
166
-
167
- // applicationVariants are e.g. debug, release
168
- applicationVariants.all { variant ->
169
- variant.outputs.each { output ->
170
- // For each separate APK per architecture, set a unique version code as described here:
171
- // https://developer.android.com/studio/build/configure-apk-splits.html
172
- def versionCodes = ["armeabi-v7a": 1, "x86": 2, "arm64-v8a": 3, "x86_64": 4]
173
- def abi = output.getFilter(OutputFile.ABI)
174
- if (abi != null) { // null for the universal-debug, universal-release variants
175
- output.versionCodeOverride =
176
- versionCodes.get(abi) * 1048576 + defaultConfig.versionCode
177
- }
178
-
179
- }
180
- }
181
104
  }
182
105
 
183
106
  dependencies {
184
- implementation fileTree(dir: "libs", include: ["*.jar"])
185
- //noinspection GradleDynamicVersion
186
- implementation "com.facebook.react:react-native:+" // From node_modules
187
-
188
- implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.0.0"
189
-
190
- debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}") {
191
- exclude group:'com.facebook.fbjni'
192
- }
107
+ // The version of react-native is set by the React Native Gradle Plugin
108
+ implementation("com.facebook.react:react-android")
193
109
 
110
+ debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}")
194
111
  debugImplementation("com.facebook.flipper:flipper-network-plugin:${FLIPPER_VERSION}") {
195
- exclude group:'com.facebook.flipper'
196
112
  exclude group:'com.squareup.okhttp3', module:'okhttp'
197
113
  }
198
114
 
199
- debugImplementation("com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}") {
200
- exclude group:'com.facebook.flipper'
201
- }
202
-
203
- if (enableHermes) {
204
- def hermesPath = "../../node_modules/hermes-engine/android/";
205
- debugImplementation files(hermesPath + "hermes-debug.aar")
206
- releaseImplementation files(hermesPath + "hermes-release.aar")
115
+ debugImplementation("com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}")
116
+ if (hermesEnabled.toBoolean()) {
117
+ implementation("com.facebook.react:hermes-android")
207
118
  } else {
208
119
  implementation jscFlavor
209
120
  }
210
- }
211
-
212
- // Run this once to be able to run the application with BUCK
213
- // puts all compile dependencies into folder libs for BUCK to use
214
- task copyDownloadableDepsToLibs(type: Copy) {
215
- from configurations.compile
216
- into 'libs'
121
+ constraints {
122
+ implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.21") {
123
+ because("kotlin-stdlib-jdk7 is now a part of kotlin-stdlib")
124
+ }
125
+ implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.21") {
126
+ because("kotlin-stdlib-jdk8 is now a part of kotlin-stdlib")
127
+ }
128
+ }
217
129
  }
218
130
 
219
131
  apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project)
@@ -4,5 +4,10 @@
4
4
 
5
5
  <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
6
6
 
7
- <application android:usesCleartextTraffic="true" tools:targetApi="28" tools:ignore="GoogleAppIndexingWarning" />
7
+ <application
8
+ android:usesCleartextTraffic="true"
9
+ tools:targetApi="28"
10
+ tools:ignore="GoogleAppIndexingWarning">
11
+ <activity android:name="com.facebook.react.devsupport.DevSettingsActivity" android:exported="false" />
12
+ </application>
8
13
  </manifest>