agora-appbuilder-core 3.0.8 → 4.0.0-api.0

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 (341) hide show
  1. package/Readme.md +6 -0
  2. package/package.json +2 -2
  3. package/template/_package-lock.json +32828 -2777
  4. package/template/agora-rn-uikit/src/AgoraUIKit.tsx +6 -6
  5. package/template/agora-rn-uikit/src/Contexts/ContentContext.tsx +10 -0
  6. package/template/agora-rn-uikit/src/Contexts/DispatchContext.tsx +22 -0
  7. package/template/agora-rn-uikit/src/Contexts/LocalUserContext.tsx +10 -6
  8. package/template/agora-rn-uikit/src/Contexts/PropsContext.tsx +28 -8
  9. package/template/agora-rn-uikit/src/Contexts/RtcContext.tsx +7 -15
  10. package/template/agora-rn-uikit/src/Controls/BtnTemplate.tsx +30 -26
  11. package/template/agora-rn-uikit/src/Controls/Icons.ts +30 -83
  12. package/template/agora-rn-uikit/src/Controls/ImageIcon.tsx +6 -6
  13. package/template/agora-rn-uikit/src/Controls/Local/LocalAudioMute.tsx +4 -2
  14. package/template/agora-rn-uikit/src/Controls/Local/LocalVideoMute.tsx +4 -2
  15. package/template/agora-rn-uikit/src/Controls/Local/Recording.tsx +0 -2
  16. package/template/agora-rn-uikit/src/Controls/Local/SwitchCamera.tsx +6 -6
  17. package/template/agora-rn-uikit/src/Controls/LocalControls.tsx +5 -5
  18. package/template/agora-rn-uikit/src/Controls/Remote/RemoteAudioMute.tsx +4 -4
  19. package/template/agora-rn-uikit/src/Controls/Remote/RemoteVideoMute.tsx +4 -4
  20. package/template/agora-rn-uikit/src/Controls/RemoteControls.tsx +2 -2
  21. package/template/agora-rn-uikit/src/Reducer/LocalMuteAudio.ts +6 -6
  22. package/template/agora-rn-uikit/src/Reducer/LocalMuteVideo.ts +6 -6
  23. package/template/agora-rn-uikit/src/Reducer/LocalPermissionState.ts +23 -0
  24. package/template/agora-rn-uikit/src/Reducer/RemoteAudioStateChanged.ts +6 -6
  25. package/template/agora-rn-uikit/src/Reducer/RemoteVideoStateChanged.ts +7 -7
  26. package/template/agora-rn-uikit/src/Reducer/UpdateDualStreamMode.ts +7 -7
  27. package/template/agora-rn-uikit/src/Reducer/UserJoined.ts +10 -10
  28. package/template/agora-rn-uikit/src/Reducer/UserMuteRemoteAudio.ts +6 -6
  29. package/template/agora-rn-uikit/src/Reducer/UserMuteRemoteVideo.ts +6 -6
  30. package/template/agora-rn-uikit/src/Reducer/UserOffline.ts +5 -5
  31. package/template/agora-rn-uikit/src/Reducer/UserPin.ts +11 -0
  32. package/template/agora-rn-uikit/src/Reducer/index.ts +2 -0
  33. package/template/agora-rn-uikit/src/Rtc/Create.tsx +74 -7
  34. package/template/agora-rn-uikit/src/Rtc/Join.tsx +5 -4
  35. package/template/agora-rn-uikit/src/RtcConfigure.tsx +76 -49
  36. package/template/agora-rn-uikit/src/Views/MaxVideoView.native.tsx +17 -7
  37. package/template/agora-rn-uikit/src/Views/MaxVideoView.tsx +17 -11
  38. package/template/agora-rn-uikit/src/Views/MinVideoView.tsx +2 -2
  39. package/template/agora-rn-uikit/src/index.ts +17 -9
  40. package/template/android/app/build.gradle +1 -0
  41. package/template/android/app/src/main/AndroidManifest.xml +22 -15
  42. package/template/android/app/src/main/assets/fonts/SourceSansPro-Regular.ttf +0 -0
  43. package/template/android/app/src/main/assets/fonts/icomoon.ttf +0 -0
  44. package/template/android/app/src/main/java/com/helloworld/MainActivity.java +50 -0
  45. package/template/android/app/src/main/res/values/colors.xml +7 -0
  46. package/template/android/build.gradle +3 -3
  47. package/template/babel.config.js +1 -0
  48. package/template/bridge/rtc/webNg/RtcEngine.ts +110 -17
  49. package/template/customization-api/action-library.ts +10 -14
  50. package/template/customization-api/app-state.ts +4 -6
  51. package/template/customization-api/customEvents.ts +2 -2
  52. package/template/customization-api/customize.ts +1 -1
  53. package/template/customization-api/sub-components.ts +4 -12
  54. package/template/customization-api/typeDefinition.ts +15 -38
  55. package/template/customization-implementation/createHook.ts +24 -6
  56. package/template/customization-implementation/index.ts +1 -1
  57. package/template/customization-implementation/useCustomization.tsx +5 -7
  58. package/template/electron/index.html +27 -27
  59. package/template/electron/renderer/index.js +1 -0
  60. package/template/global.d.ts +26 -4
  61. package/template/index.rsdk.tsx +1 -0
  62. package/template/index.web.js +2 -1
  63. package/template/index.wsdk.tsx +9 -2
  64. package/template/ios/HelloWorld/Info.plist +14 -1
  65. package/template/ios/HelloWorld.xcodeproj/project.pbxproj +17 -0
  66. package/template/metro.config.js +1 -1
  67. package/template/package.json +18 -7
  68. package/template/react-native-toast-message/index.d.ts +43 -43
  69. package/template/react-native-toast-message/src/colors/index.js +3 -2
  70. package/template/react-native-toast-message/src/components/base/index.js +46 -59
  71. package/template/react-native-toast-message/src/components/base/styles.js +16 -32
  72. package/template/react-native-toast-message/src/components/checkbox.js +178 -0
  73. package/template/react-native-toast-message/src/components/error.js +3 -2
  74. package/template/react-native-toast-message/src/components/info.js +3 -2
  75. package/template/react-native-toast-message/src/components/success.js +3 -2
  76. package/template/react-native-toast-message/src/index.js +122 -31
  77. package/template/react-native-toast-message/src/index.sdk.tsx +125 -35
  78. package/template/react-native-toast-message/src/styles.js +3 -4
  79. package/template/react-native-toast-message/src/styles.sdk.ts +3 -4
  80. package/template/react-native.config.js +7 -0
  81. package/template/src/App.tsx +19 -14
  82. package/template/src/AppWrapper.tsx +74 -29
  83. package/template/src/SDKAppWrapper.tsx +60 -64
  84. package/template/src/app-state/useLocalUserInfo.ts +3 -3
  85. package/template/src/assets/font-styles.css +329 -0
  86. package/template/src/assets/fonts/SourceSansPro-Regular.ttf +0 -0
  87. package/template/src/assets/fonts/icomoon.ttf +0 -0
  88. package/template/src/assets/permission.png +0 -0
  89. package/template/src/assets/selection.json +1 -0
  90. package/template/src/atoms/ActionMenu.tsx +236 -0
  91. package/template/src/atoms/AnimatedActiveSpeaker.native.tsx +71 -0
  92. package/template/src/atoms/AnimatedActiveSpeaker.tsx +84 -0
  93. package/template/src/atoms/AnimatedRings.native.tsx +68 -0
  94. package/template/src/atoms/AnimatedRings.tsx +70 -0
  95. package/template/src/atoms/Card.tsx +61 -0
  96. package/template/src/atoms/CircularProgress.native.tsx +121 -0
  97. package/template/src/atoms/CircularProgress.tsx +102 -0
  98. package/template/src/atoms/CustomIcon.tsx +88 -0
  99. package/template/src/atoms/CustomSwitch.tsx +287 -0
  100. package/template/src/atoms/Dropdown.tsx +306 -0
  101. package/template/src/atoms/HorizontalRule.tsx +3 -1
  102. package/template/src/atoms/IconButton.tsx +162 -0
  103. package/template/src/atoms/ImageIcon.tsx +98 -0
  104. package/template/src/atoms/InfoBubble.tsx +291 -0
  105. package/template/src/atoms/Input.tsx +87 -0
  106. package/template/src/atoms/InviteInfo.tsx +166 -0
  107. package/template/src/atoms/LinkButton.tsx +28 -0
  108. package/template/src/atoms/OutlineButton.tsx +61 -0
  109. package/template/src/atoms/ParticipantsCount.tsx +74 -0
  110. package/template/src/atoms/Popup.tsx +147 -0
  111. package/template/src/atoms/PrimaryButton.tsx +51 -26
  112. package/template/src/atoms/RecordingInfo.tsx +52 -0
  113. package/template/src/atoms/SecondaryButton.tsx +8 -5
  114. package/template/src/atoms/Spacer.tsx +22 -0
  115. package/template/src/atoms/TertiaryButton.tsx +78 -0
  116. package/template/src/atoms/TextInput.tsx +12 -14
  117. package/template/src/atoms/Toggle.tsx +47 -0
  118. package/template/src/atoms/Toolbar.tsx +68 -0
  119. package/template/src/atoms/ToolbarItem.tsx +63 -0
  120. package/template/src/atoms/Tooltip.native.tsx +65 -0
  121. package/template/src/atoms/Tooltip.tsx +94 -0
  122. package/template/src/atoms/UserAvatar.tsx +60 -0
  123. package/template/src/components/Chat.tsx +164 -278
  124. package/template/src/components/ChatContext.ts +8 -1
  125. package/template/src/components/ColorConfigure.tsx +1 -1
  126. package/template/src/components/ColorContext.ts +1 -1
  127. package/template/src/components/CommonStyles.ts +44 -0
  128. package/template/src/components/Controls.tsx +331 -73
  129. package/template/src/components/{Controls.native.tsx → Controls1.native.tsx} +8 -6
  130. package/template/src/components/DeviceConfigure.tsx +511 -102
  131. package/template/src/components/DeviceContext.tsx +8 -4
  132. package/template/src/components/EventsConfigure.tsx +192 -10
  133. package/template/src/components/GraphQLProvider.tsx +1 -1
  134. package/template/src/components/GridVideo.tsx +60 -45
  135. package/template/src/components/HostControlView.tsx +114 -35
  136. package/template/src/components/Navbar.tsx +219 -437
  137. package/template/src/components/Navigation.tsx +15 -1
  138. package/template/src/components/NetworkQualityContext.tsx +22 -22
  139. package/template/src/components/ParticipantsView.tsx +178 -156
  140. package/template/src/components/PinnedVideo.tsx +206 -121
  141. package/template/src/components/Precall.native.tsx +358 -119
  142. package/template/src/components/Precall.tsx +272 -138
  143. package/template/src/components/RTMConfigure.tsx +66 -19
  144. package/template/src/components/Router.electron.ts +1 -0
  145. package/template/src/components/Router.native.ts +1 -0
  146. package/template/src/components/Router.sdk.ts +1 -0
  147. package/template/src/components/Router.ts +1 -0
  148. package/template/src/components/SdkApiContext.tsx +161 -0
  149. package/template/src/components/Settings.tsx +26 -95
  150. package/template/src/components/SettingsView.tsx +251 -56
  151. package/template/src/components/Share.tsx +305 -276
  152. package/template/src/components/StorageContext.tsx +30 -3
  153. package/template/src/components/ToastComponent.tsx +8 -0
  154. package/template/src/components/chat-messages/useChatMessages.tsx +97 -50
  155. package/template/src/components/chat-ui/useChatUIControls.tsx +76 -0
  156. package/template/src/components/common/Error.tsx +20 -6
  157. package/template/src/components/common/Logo.tsx +16 -15
  158. package/template/src/components/contexts/LiveStreamDataContext.tsx +16 -11
  159. package/template/src/components/contexts/VideoMeetingDataContext.tsx +41 -11
  160. package/template/src/components/contexts/WhiteboardContext.tsx +3 -3
  161. package/template/src/components/livestream/LiveStreamContext.tsx +284 -50
  162. package/template/src/components/livestream/Types.ts +39 -14
  163. package/template/src/components/livestream/index.ts +1 -0
  164. package/template/src/components/livestream/views/LiveStreamControls.tsx +9 -4
  165. package/template/src/components/participants/AllAudienceParticipants.tsx +102 -31
  166. package/template/src/components/participants/AllHostParticipants.tsx +106 -35
  167. package/template/src/components/participants/Participant.tsx +300 -0
  168. package/template/src/components/participants/ParticipantName.tsx +13 -7
  169. package/template/src/components/participants/ParticipantSectionTitle.tsx +35 -10
  170. package/template/src/components/participants/ScreenshareParticipants.tsx +144 -12
  171. package/template/src/components/participants/UserActionMenuOptions.tsx +396 -0
  172. package/template/src/components/popups/InvitePopup.tsx +115 -0
  173. package/template/src/components/popups/StopRecordingPopup.tsx +114 -0
  174. package/template/src/components/precall/LocalMute.tsx +84 -14
  175. package/template/src/components/precall/{LocalMute.native.tsx → LocalMute1.native.tsx} +21 -5
  176. package/template/src/components/precall/PermissionHelper.native.tsx +5 -0
  177. package/template/src/components/precall/PermissionHelper.tsx +126 -0
  178. package/template/src/components/precall/PreCallSettings.tsx +52 -0
  179. package/template/src/components/precall/VideoPreview.native.tsx +51 -6
  180. package/template/src/components/precall/VideoPreview.tsx +164 -8
  181. package/template/src/components/precall/joinCallBtn.native.tsx +2 -2
  182. package/template/src/components/precall/joinCallBtn.tsx +17 -4
  183. package/template/src/components/precall/meetingTitle.tsx +17 -14
  184. package/template/src/components/precall/selectDevice.tsx +1 -21
  185. package/template/src/components/precall/textInput.tsx +34 -6
  186. package/template/src/components/precall/usePreCall.tsx +39 -1
  187. package/template/src/components/{meeting-info/useMeetingInfo.tsx → room-info/useRoomInfo.tsx} +34 -10
  188. package/template/src/components/{meeting-info/useSetMeetingInfo.tsx → room-info/useSetRoomInfo.tsx} +12 -12
  189. package/template/src/components/styles.ts +42 -21
  190. package/template/src/components/useShareLink.tsx +19 -21
  191. package/template/src/components/useToast.tsx +41 -0
  192. package/template/src/components/useUserPreference.tsx +9 -6
  193. package/template/src/components/useVideoCall.tsx +84 -0
  194. package/template/src/language/default-labels/createScreenLabels.ts +3 -3
  195. package/template/src/language/default-labels/joinScreenLabels.ts +2 -2
  196. package/template/src/language/default-labels/precallScreenLabels.ts +3 -3
  197. package/template/src/language/default-labels/shareLinkScreenLabels.ts +5 -5
  198. package/template/src/language/default-labels/videoCallScreenLabels.ts +5 -5
  199. package/template/src/pages/Authenticate.tsx +5 -15
  200. package/template/src/pages/Create.tsx +304 -191
  201. package/template/src/pages/Endcall.tsx +148 -0
  202. package/template/src/pages/Join.tsx +96 -70
  203. package/template/src/pages/VideoCall.tsx +179 -69
  204. package/template/src/pages/video-call/ActionSheet.native.tsx +215 -0
  205. package/template/src/pages/video-call/ActionSheet.tsx +226 -0
  206. package/template/src/pages/video-call/ActionSheetContent.tsx +479 -0
  207. package/template/src/pages/video-call/ActionSheetHandle.tsx +38 -0
  208. package/template/src/pages/video-call/ActionSheetStyles.css +138 -0
  209. package/template/src/pages/video-call/DefaultLayouts.ts +6 -6
  210. package/template/src/pages/video-call/NameWithMicIcon.tsx +93 -49
  211. package/template/src/pages/video-call/RenderComponent.tsx +6 -30
  212. package/template/src/pages/video-call/SidePanelHeader.tsx +186 -0
  213. package/template/src/pages/video-call/VideoCallMobileView.tsx +138 -0
  214. package/template/src/pages/video-call/VideoCallScreen.native.tsx +37 -0
  215. package/template/src/pages/video-call/VideoCallScreen.tsx +109 -66
  216. package/template/src/pages/video-call/VideoComponent.tsx +20 -4
  217. package/template/src/pages/video-call/VideoRenderer.tsx +227 -61
  218. package/template/src/pages/video-call/index.ts +35 -7
  219. package/template/src/rtm/RTMEngine.ts +8 -0
  220. package/template/src/rtm-events/constants.ts +3 -1
  221. package/template/src/rtm-events-api/Events.ts +5 -4
  222. package/template/src/rtm-events-api/LocalEvents.ts +6 -0
  223. package/template/src/rtm-events-api/types.ts +5 -5
  224. package/template/src/subComponents/ChatBubble.tsx +125 -84
  225. package/template/src/subComponents/ChatContainer.tsx +280 -93
  226. package/template/src/subComponents/ChatInput.ios.tsx +175 -0
  227. package/template/src/subComponents/ChatInput.tsx +72 -115
  228. package/template/src/subComponents/Checkbox.native.tsx +16 -5
  229. package/template/src/subComponents/Checkbox.tsx +2 -2
  230. package/template/src/subComponents/CopyJoinInfo.tsx +36 -58
  231. package/template/src/subComponents/EndcallPopup.tsx +107 -0
  232. package/template/src/subComponents/FallbackLogo.tsx +122 -40
  233. package/template/src/subComponents/LanguageSelector.tsx +1 -1
  234. package/template/src/subComponents/LayoutIconButton.tsx +201 -0
  235. package/template/src/subComponents/LayoutIconDropdown.tsx +131 -134
  236. package/template/src/subComponents/{LayoutIconDropdown.native.tsx → LayoutIconDropdown1.native.tsx} +4 -18
  237. package/template/src/subComponents/LocalAudioMute.tsx +119 -27
  238. package/template/src/subComponents/LocalEndCall.tsx +73 -35
  239. package/template/src/subComponents/LocalSwitchCamera.tsx +19 -32
  240. package/template/src/subComponents/LocalVideoMute.tsx +117 -27
  241. package/template/src/subComponents/Logo.tsx +3 -4
  242. package/template/src/subComponents/LogoutButton.tsx +1 -1
  243. package/template/src/subComponents/NetworkQualityPill.tsx +66 -68
  244. package/template/src/subComponents/OpenInNativeButton.tsx +3 -3
  245. package/template/src/subComponents/Recording.tsx +28 -29
  246. package/template/src/subComponents/RemoteAudioMute.tsx +83 -29
  247. package/template/src/subComponents/RemoteEndCall.tsx +8 -5
  248. package/template/src/subComponents/RemoteMutePopup.tsx +193 -0
  249. package/template/src/subComponents/RemoteVideoMute.tsx +74 -21
  250. package/template/src/subComponents/RemoveMeetingPopup.tsx +109 -0
  251. package/template/src/subComponents/RemoveScreensharePopup.tsx +109 -0
  252. package/template/src/subComponents/ScreenShareNotice.tsx +83 -8
  253. package/template/src/subComponents/SelectDevice.tsx +404 -61
  254. package/template/src/subComponents/SelectDeviceSettings.backup.tsx +207 -0
  255. package/template/src/subComponents/SelectOAuth.tsx +9 -8
  256. package/template/src/subComponents/SidePanelButtons.ts +0 -3
  257. package/template/src/subComponents/SidePanelHeader.tsx +112 -0
  258. package/template/src/subComponents/ToastConfig.tsx +150 -10
  259. package/template/src/subComponents/chat/ChatParticipants.tsx +188 -79
  260. package/template/src/subComponents/livestream/CurrentLiveStreamRequestsView.tsx +97 -34
  261. package/template/src/subComponents/livestream/controls/LocalRaiseHand.tsx +29 -33
  262. package/template/src/subComponents/livestream/controls/RemoteLiveStreamApprovedRequestRecall.tsx +8 -8
  263. package/template/src/subComponents/livestream/controls/RemoteLiveStreamRequestApprove.tsx +24 -11
  264. package/template/src/subComponents/livestream/controls/RemoteLiveStreamRequestReject.tsx +17 -10
  265. package/template/src/subComponents/recording/useRecording.tsx +81 -29
  266. package/template/src/subComponents/screenshare/ScreenshareButton.tsx +52 -70
  267. package/template/src/subComponents/screenshare/ScreenshareConfigure.native.tsx +23 -12
  268. package/template/src/subComponents/screenshare/ScreenshareConfigure.tsx +44 -19
  269. package/template/src/theme/index.ts +46 -0
  270. package/template/src/utils/PlatformWrapper.tsx +21 -0
  271. package/template/src/utils/SdkEvents.ts +23 -14
  272. package/template/src/utils/SdkMethodEvents.ts +81 -0
  273. package/template/src/utils/common.tsx +155 -1
  274. package/template/src/utils/hexadecimalTransparency.ts +108 -0
  275. package/template/src/utils/index.tsx +19 -0
  276. package/template/src/utils/isMobileOrTablet.ts +7 -2
  277. package/template/src/utils/pendingStateUpdateHelper.ts +19 -0
  278. package/template/src/utils/useActiveSpeaker.ts +42 -0
  279. package/template/src/utils/{useCreateMeeting.ts → useCreateRoom.ts} +19 -14
  280. package/template/src/utils/{useButtonTemplate.tsx → useFocus.tsx} +19 -16
  281. package/template/src/utils/useGetMeetingPhrase.ts +10 -10
  282. package/template/src/utils/useIsAudioEnabled.ts +3 -3
  283. package/template/src/utils/useIsHandRaised.ts +13 -0
  284. package/template/src/utils/useIsPSTN.ts +3 -3
  285. package/template/src/utils/useIsVideoEnabled.ts +3 -3
  286. package/template/src/utils/{useJoinMeeting.ts → useJoinRoom.ts} +27 -21
  287. package/template/src/utils/useMutePSTN.ts +2 -2
  288. package/template/src/utils/useMuteToggleLocal.ts +58 -5
  289. package/template/src/utils/useRemoteEndCall.ts +4 -4
  290. package/template/src/utils/useRemoteEndScreenshare.ts +26 -0
  291. package/template/src/utils/useRemoteMute.ts +7 -7
  292. package/template/src/utils/useRemoteRequest.ts +84 -0
  293. package/template/src/utils/useSwitchCamera.native.tsx +25 -0
  294. package/template/src/utils/useSwitchCamera.tsx +19 -0
  295. package/template/src/utils/useToolbar.tsx +59 -0
  296. package/template/web/index.html +5 -0
  297. package/template/webpack.commons.js +13 -8
  298. package/template/webpack.rsdk.config.js +1 -2
  299. package/template/webpack.web.config.js +1 -0
  300. package/template/agora-rn-uikit/.git/HEAD +0 -1
  301. package/template/agora-rn-uikit/.git/config +0 -16
  302. package/template/agora-rn-uikit/.git/description +0 -1
  303. package/template/agora-rn-uikit/.git/hooks/applypatch-msg.sample +0 -15
  304. package/template/agora-rn-uikit/.git/hooks/commit-msg.sample +0 -24
  305. package/template/agora-rn-uikit/.git/hooks/fsmonitor-watchman.sample +0 -174
  306. package/template/agora-rn-uikit/.git/hooks/post-update.sample +0 -8
  307. package/template/agora-rn-uikit/.git/hooks/pre-applypatch.sample +0 -14
  308. package/template/agora-rn-uikit/.git/hooks/pre-commit.sample +0 -49
  309. package/template/agora-rn-uikit/.git/hooks/pre-merge-commit.sample +0 -13
  310. package/template/agora-rn-uikit/.git/hooks/pre-push.sample +0 -53
  311. package/template/agora-rn-uikit/.git/hooks/pre-rebase.sample +0 -169
  312. package/template/agora-rn-uikit/.git/hooks/pre-receive.sample +0 -24
  313. package/template/agora-rn-uikit/.git/hooks/prepare-commit-msg.sample +0 -42
  314. package/template/agora-rn-uikit/.git/hooks/push-to-checkout.sample +0 -78
  315. package/template/agora-rn-uikit/.git/hooks/update.sample +0 -128
  316. package/template/agora-rn-uikit/.git/index +0 -0
  317. package/template/agora-rn-uikit/.git/info/exclude +0 -6
  318. package/template/agora-rn-uikit/.git/logs/HEAD +0 -2
  319. package/template/agora-rn-uikit/.git/logs/refs/heads/master +0 -1
  320. package/template/agora-rn-uikit/.git/logs/refs/heads/release/fpe-1.0.1 +0 -1
  321. package/template/agora-rn-uikit/.git/logs/refs/remotes/origin/HEAD +0 -1
  322. package/template/agora-rn-uikit/.git/objects/pack/pack-baa9cf4109c3e8528f39535764621cee252b2b77.idx +0 -0
  323. package/template/agora-rn-uikit/.git/objects/pack/pack-baa9cf4109c3e8528f39535764621cee252b2b77.pack +0 -0
  324. package/template/agora-rn-uikit/.git/packed-refs +0 -49
  325. package/template/agora-rn-uikit/.git/refs/heads/master +0 -1
  326. package/template/agora-rn-uikit/.git/refs/heads/release/fpe-1.0.1 +0 -1
  327. package/template/agora-rn-uikit/.git/refs/remotes/origin/HEAD +0 -1
  328. package/template/agora-rn-uikit/.gitignore +0 -63
  329. package/template/agora-rn-uikit/package-lock.json +0 -7612
  330. package/template/agora-rn-uikit/src/Contexts/RenderContext.tsx +0 -10
  331. package/template/package-lock.json +0 -22543
  332. package/template/react-native-toast-message/.gitignore +0 -5
  333. package/template/react-native-toast-message/.npmignore +0 -5
  334. package/template/react-native-toast-message/package-lock.json +0 -10553
  335. package/template/src/.DS_Store +0 -0
  336. package/template/src/assets/icons.ts +0 -102
  337. package/template/src/components/chat-ui/useChatUIControl.tsx +0 -69
  338. package/template/src/components/participants/MeParticipant.tsx +0 -38
  339. package/template/src/components/participants/RemoteParticipants.tsx +0 -71
  340. package/template/src/pages/video-call/CustomUserContextHolder.tsx +0 -20
  341. package/template/src/subComponents/.DS_Store +0 -0
@@ -9,120 +9,239 @@
9
9
  information visit https://appbuilder.agora.io.
10
10
  *********************************************
11
11
  */
12
- import React, {useState} from 'react';
12
+ import React, {useContext, useEffect, useState} from 'react';
13
13
  import {
14
14
  ScrollView,
15
15
  View,
16
- Dimensions,
17
16
  StyleSheet,
18
- Text,
19
17
  Pressable,
18
+ FlatList,
19
+ useWindowDimensions,
20
20
  } from 'react-native';
21
21
  import {layoutProps} from '../../theme.json';
22
- import {layoutComponent, useRtc} from 'customization-api';
22
+ import {layoutComponent, useLocalUid, useContent} from 'customization-api';
23
23
  import RenderComponent from '../pages/video-call/RenderComponent';
24
+ import IconButton from '../atoms/IconButton';
25
+ import hexadecimalTransparency from '../utils/hexadecimalTransparency';
26
+ import {BREAKPOINTS, isMobileUA, useIsDesktop} from '../utils/common';
27
+ import {DispatchContext} from '../../agora-rn-uikit';
28
+ import useActiveSpeaker from '../utils/useActiveSpeaker';
24
29
  const {topPinned} = layoutProps;
25
30
 
26
31
  const PinnedVideo: layoutComponent = ({renderData}) => {
32
+ const {pinnedUid, activeUids, defaultContent} = useContent();
33
+ const activeSpeaker = useActiveSpeaker();
27
34
  const [collapse, setCollapse] = useState(false);
28
- const [dim, setDim] = useState<[number, number, boolean]>([
29
- Dimensions.get('window').width,
30
- Dimensions.get('window').height,
31
- Dimensions.get('window').width > Dimensions.get('window').height,
32
- ]);
33
- let onLayout = () => {
34
- setTimeout(() => {
35
- let {height, width} = Dimensions.get('window');
36
- let isLandscape = width > height;
37
- setDim([width, height, isLandscape]);
38
- }, 20);
39
- };
40
- const isSidePinnedlayout = topPinned === true ? false : dim[2]; // if either explicity set to false or auto evaluation
41
- const [maxUid, ...minUids] = renderData;
42
- const {dispatch} = useRtc();
35
+ const localUid = useLocalUid();
36
+ const {width, height} = useWindowDimensions();
37
+ const isDesktop = width > BREAKPOINTS.xl;
38
+ const isSidePinnedlayout = topPinned === true ? false : isDesktop; // if either explicity set to false or auto evaluation
39
+ //const [maxUid, ...minUids] = renderData;
40
+ const {dispatch} = useContext(DispatchContext);
41
+ const [uids, setUids] = useState(renderData);
42
+
43
+ const [screenShareOn, setScreenShareOn] = useState(false);
44
+
45
+ useEffect(() => {
46
+ const nonPinnedUids = activeUids.filter((uid) => uid !== pinnedUid);
47
+
48
+ const nonActiveSpeakerUids = nonPinnedUids.filter(
49
+ (uid) => uid !== activeSpeaker,
50
+ );
51
+
52
+ const remoteScreenShareUids = nonActiveSpeakerUids.filter((uid) => {
53
+ return (
54
+ defaultContent[uid].type === 'screenshare' &&
55
+ defaultContent[uid].parentUid !== localUid
56
+ );
57
+ });
58
+
59
+ const localScreenShareUids = nonActiveSpeakerUids.filter((uid) => {
60
+ return (
61
+ defaultContent[uid].type === 'screenshare' &&
62
+ defaultContent[uid].parentUid === localUid
63
+ );
64
+ });
65
+ if (remoteScreenShareUids?.length || localScreenShareUids?.length) {
66
+ setScreenShareOn(true);
67
+ }
68
+
69
+ const restOfTheUids = nonActiveSpeakerUids.filter(
70
+ (uid) => defaultContent[uid].type !== 'screenshare',
71
+ );
72
+
73
+ /**
74
+ * Order for pinned layout -
75
+ * - [1] means only one user
76
+ * - [N] means multiple users
77
+ * 1.Pinned User[1]
78
+ * 2.Remote screenshare users[N]
79
+ * 3.Active Speaker[1]
80
+ * 4.Local Screenshare[1]
81
+ * 5 and etc.Other Users[N]
82
+ */
83
+
84
+ const updatedOrder = [
85
+ pinnedUid,
86
+ ...remoteScreenShareUids,
87
+ pinnedUid !== activeSpeaker ? activeSpeaker : 0,
88
+ ...localScreenShareUids,
89
+ ...restOfTheUids,
90
+ ].filter((uid) => uid !== undefined && uid !== 0);
91
+
92
+ setUids(updatedOrder);
93
+ }, [activeUids, defaultContent, activeSpeaker, pinnedUid]);
43
94
 
44
95
  return (
45
96
  <View
46
97
  style={{
47
98
  flexDirection: isSidePinnedlayout ? 'row' : 'column',
48
99
  flex: 1,
49
- padding: 4,
50
- }}
51
- onLayout={onLayout}>
52
- {isSidePinnedlayout && (
53
- <Pressable
54
- onPress={() => setCollapse(!collapse)}
55
- style={{
56
- position: 'absolute',
57
- zIndex: 50,
58
- marginTop: 5,
59
- width: 35,
60
- height: 35,
61
- marginLeft: collapse ? 5 : '20.1%',
62
- backgroundColor: $config.SECONDARY_FONT_COLOR + 'aa',
63
- borderRadius: 50,
64
- justifyContent: 'center',
65
- }}>
66
- <Text
67
- style={{
68
- alignSelf: 'center',
69
- justifyContent: 'center',
70
- color: $config.PRIMARY_COLOR,
71
- fontWeight: '500',
72
- fontSize: 20,
73
- }}>
74
- {collapse ? '>' : '<'}
75
- </Text>
76
- </Pressable>
77
- )}
100
+ }}>
78
101
  {!collapse && (
79
102
  <ScrollView
80
103
  horizontal={!isSidePinnedlayout}
104
+ showsHorizontalScrollIndicator={isMobileUA() ? false : true}
81
105
  decelerationRate={0}
82
106
  style={
83
107
  isSidePinnedlayout
84
- ? {width: '20%', paddingHorizontal: 8}
85
- : {flex: 1}
108
+ ? {
109
+ width: '20%',
110
+ paddingRight: 8,
111
+ }
112
+ : {
113
+ flex: 1,
114
+ minHeight: 160,
115
+ marginBottom: 8,
116
+ }
86
117
  }>
87
- {minUids.map((minUid, i) => (
88
- <Pressable
89
- style={
90
- isSidePinnedlayout
91
- ? {
92
- width: '100%',
93
- height: dim[0] * 0.1125 + 2, // width * 20/100 * 9/16 + 2
94
- zIndex: 40,
95
- paddingBottom: 8,
96
- }
97
- : {
98
- width: ((dim[1] / 3) * 16) / 9 / 2 + 12, //dim[1] /4.3
99
- height: '100%',
100
- zIndex: 40,
101
- paddingRight: 8,
102
- paddingVertical: 4,
103
- }
104
- }
105
- key={'minVideo' + i}
106
- onPress={() => {
107
- dispatch({type: 'SwapVideo', value: [minUid]});
108
- }}>
109
- <RenderComponent uid={minUid} />
110
- </Pressable>
111
- ))}
118
+ {/* Pinned Video Top View(Desktop minimized and Mobile native and Mobile web) / Side View(Desktop maximized)*/}
119
+ {uids?.map((minUid, i) => {
120
+ //first item -> maximized view so returning null
121
+ if (i === 0) return null;
122
+ //remaining items -> minimized view
123
+ {
124
+ /**Rendering minimized views */
125
+ }
126
+ return (
127
+ <Pressable
128
+ //old
129
+ //if user pinned somebody then side panel items should not be clickable - swap video should be called
130
+ //instead we will show replace pin button on hovering the video tile
131
+ //old
132
+ disabled={
133
+ //old fix
134
+ //activeSpeaker || pinnedUid || screenShareOn ? true : false
135
+ //old fix
136
+
137
+ //latest fix : pinned video sidepanel layout should not be clickable
138
+ //if user hover on it we will show pin for me/replace pin(if someone already pinned) button
139
+ true
140
+ }
141
+ style={
142
+ isSidePinnedlayout
143
+ ? {
144
+ width: '100%',
145
+ height: width * 0.1125 + 2, // width * 20/100 * 9/16 + 2
146
+ zIndex: 40,
147
+ paddingBottom: 8,
148
+ }
149
+ : {
150
+ // width: ((height / 3) * 16) / 9 / 2 + 12, //dim[1] /4.3
151
+ width: 254,
152
+ height: '100%',
153
+ zIndex: 40,
154
+ marginRight: 8,
155
+ }
156
+ }
157
+ key={'minVideo' + i}
158
+ onPress={() => {
159
+ dispatch({type: 'SwapVideo', value: [minUid]});
160
+ }}>
161
+ <RenderComponent uid={minUid} />
162
+ </Pressable>
163
+ );
164
+ })}
112
165
  </ScrollView>
113
166
  )}
114
- <View
115
- style={
116
- isSidePinnedlayout
117
- ? collapse
118
- ? style.width100
119
- : style.width80
120
- : style.flex4
121
- }>
122
- <View style={style.flex1} key={'maxVideo' + maxUid}>
123
- <RenderComponent uid={maxUid} />
167
+ {uids && uids?.length && (
168
+ <View
169
+ style={
170
+ isSidePinnedlayout
171
+ ? collapse
172
+ ? style.width100
173
+ : style.width80
174
+ : style.flex8
175
+ }>
176
+ <View style={style.flex1} key={'maxVideo' + uids[0]}>
177
+ {isSidePinnedlayout && (
178
+ <IconButton
179
+ containerStyle={{
180
+ position: 'absolute',
181
+ top: 8,
182
+ left: 8,
183
+ zIndex: 999,
184
+ elevation: 999,
185
+ }}
186
+ onPress={() => setCollapse(!collapse)}
187
+ iconProps={{
188
+ iconContainerStyle: {
189
+ padding: 8,
190
+ backgroundColor:
191
+ $config.CARD_LAYER_5_COLOR +
192
+ hexadecimalTransparency['10%'],
193
+ },
194
+ name: collapse ? 'collapse' : 'expand',
195
+ tintColor: $config.SECONDARY_ACTION_COLOR,
196
+ iconSize: 24,
197
+ }}
198
+ />
199
+ )}
200
+ {pinnedUid ? (
201
+ <IconButton
202
+ containerStyle={{
203
+ paddingHorizontal: 8,
204
+ paddingVertical: 10,
205
+ backgroundColor: $config.VIDEO_AUDIO_TILE_OVERLAY_COLOR,
206
+ borderRadius: 8,
207
+ flexDirection: 'row',
208
+ position: 'absolute',
209
+ top: 8,
210
+ left: 8 + (isSidePinnedlayout ? 32 + 12 + 8 : 0),
211
+ zIndex: 999,
212
+ elevation: 999,
213
+ }}
214
+ iconProps={{
215
+ iconType: 'plain',
216
+ iconContainerStyle: {
217
+ padding: 0,
218
+ },
219
+ name: 'unpin-filled',
220
+ iconSize: 20,
221
+ tintColor: $config.VIDEO_AUDIO_TILE_TEXT_COLOR,
222
+ }}
223
+ onPress={() => {
224
+ dispatch({type: 'UserPin', value: [0]});
225
+ }}
226
+ btnTextProps={{
227
+ text: 'Unpin',
228
+ textColor: $config.VIDEO_AUDIO_TILE_TEXT_COLOR,
229
+ textStyle: {
230
+ marginTop: 0,
231
+ marginLeft: 6,
232
+ marginRight: 2,
233
+ fontWeight: '700',
234
+ },
235
+ }}
236
+ />
237
+ ) : (
238
+ <></>
239
+ )}
240
+ {/** Render the maximized view */}
241
+ <RenderComponent uid={uids[0]} isMax={true} />
242
+ </View>
124
243
  </View>
125
- </View>
244
+ )}
126
245
  </View>
127
246
  );
128
247
  };
@@ -131,42 +250,8 @@ const style = StyleSheet.create({
131
250
  width80: {width: '80%'},
132
251
  width100: {width: '100%'},
133
252
  flex2: {flex: 2},
134
- flex4: {flex: 4, backgroundColor: '#ffffff00'},
253
+ flex8: {flex: 8},
135
254
  flex1: {flex: 1},
136
- nameHolder: {
137
- marginTop: -25,
138
- backgroundColor: $config.SECONDARY_FONT_COLOR + 'aa',
139
- alignSelf: 'flex-end',
140
- paddingHorizontal: 8,
141
- height: 25,
142
- borderTopLeftRadius: 15,
143
- borderBottomRightRadius: 15,
144
- flexDirection: 'row',
145
- zIndex: 5,
146
- maxWidth: '100%',
147
- },
148
- name: {
149
- color: $config.PRIMARY_FONT_COLOR,
150
- lineHeight: 25,
151
- fontWeight: '700',
152
- flexShrink: 1,
153
- },
154
- MicBackdrop: {
155
- width: 20,
156
- height: 20,
157
- borderRadius: 15,
158
- marginHorizontal: 10,
159
- backgroundColor: $config.SECONDARY_FONT_COLOR,
160
- display: 'flex',
161
- alignSelf: 'center',
162
- justifyContent: 'center',
163
- },
164
- MicIcon: {
165
- width: '80%',
166
- height: '80%',
167
- alignSelf: 'center',
168
- resizeMode: 'contain',
169
- },
170
255
  });
171
256
 
172
257
  export default PinnedVideo;