agora-appbuilder-core 2.2.0 → 2.3.0-beta.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 (280) hide show
  1. package/Readme.md +7 -1
  2. package/package.json +4 -3
  3. package/template/Gulpfile.js +306 -87
  4. package/template/_gitignore +4 -1
  5. package/template/_package-lock.json +2297 -2533
  6. package/template/agora-rn-uikit/.git/HEAD +1 -1
  7. package/template/agora-rn-uikit/.git/config +3 -3
  8. package/template/agora-rn-uikit/.git/index +0 -0
  9. package/template/agora-rn-uikit/.git/logs/HEAD +2 -2
  10. package/template/agora-rn-uikit/.git/logs/refs/heads/master +1 -1
  11. package/template/agora-rn-uikit/.git/logs/refs/heads/release/fpe-1.0.0 +1 -0
  12. package/template/agora-rn-uikit/.git/logs/refs/remotes/origin/HEAD +1 -1
  13. package/template/agora-rn-uikit/.git/objects/pack/pack-f274a85fccfc9b5112d154bb3b6d34cb4b8dedde.idx +0 -0
  14. package/template/agora-rn-uikit/.git/objects/pack/{pack-0061d00cd98162a329a32b537488a35d0abeb069.pack → pack-f274a85fccfc9b5112d154bb3b6d34cb4b8dedde.pack} +0 -0
  15. package/template/agora-rn-uikit/.git/packed-refs +5 -1
  16. package/template/agora-rn-uikit/.git/refs/heads/release/fpe-1.0.0 +1 -0
  17. package/template/agora-rn-uikit/src/AgoraUIKit.tsx +23 -20
  18. package/template/agora-rn-uikit/src/Contexts/LocalUserContext.tsx +13 -8
  19. package/template/agora-rn-uikit/src/Contexts/PropsContext.tsx +25 -9
  20. package/template/agora-rn-uikit/src/Contexts/RenderContext.tsx +10 -0
  21. package/template/agora-rn-uikit/src/Contexts/RtcContext.tsx +11 -5
  22. package/template/agora-rn-uikit/src/Controls/BtnTemplate.tsx +6 -2
  23. package/template/agora-rn-uikit/src/Controls/ImageIcon.tsx +1 -1
  24. package/template/agora-rn-uikit/src/Controls/Local/EndCall.tsx +6 -2
  25. package/template/agora-rn-uikit/src/Controls/Local/LocalAudioMute.tsx +2 -2
  26. package/template/agora-rn-uikit/src/Controls/Local/LocalVideoMute.tsx +2 -2
  27. package/template/agora-rn-uikit/src/Controls/Local/SwitchCamera.tsx +6 -2
  28. package/template/agora-rn-uikit/src/Controls/LocalControls.tsx +11 -6
  29. package/template/agora-rn-uikit/src/Controls/Remote/RemoteAudioMute.tsx +10 -6
  30. package/template/agora-rn-uikit/src/Controls/Remote/RemoteSwap.tsx +7 -6
  31. package/template/agora-rn-uikit/src/Controls/Remote/RemoteVideoMute.tsx +6 -5
  32. package/template/agora-rn-uikit/src/Controls/RemoteControls.tsx +3 -3
  33. package/template/agora-rn-uikit/src/Reducer/LocalMuteAudio.ts +16 -13
  34. package/template/agora-rn-uikit/src/Reducer/LocalMuteVideo.ts +16 -13
  35. package/template/agora-rn-uikit/src/Reducer/RemoteAudioStateChanged.ts +13 -13
  36. package/template/agora-rn-uikit/src/Reducer/RemoteVideoStateChanged.ts +16 -13
  37. package/template/agora-rn-uikit/src/Reducer/UpdateDualStreamMode.ts +28 -31
  38. package/template/agora-rn-uikit/src/Reducer/UserJoined.ts +48 -35
  39. package/template/agora-rn-uikit/src/Reducer/UserMuteRemoteAudio.ts +11 -13
  40. package/template/agora-rn-uikit/src/Reducer/UserMuteRemoteVideo.ts +11 -13
  41. package/template/agora-rn-uikit/src/Reducer/UserOffline.ts +18 -15
  42. package/template/agora-rn-uikit/src/Rtc/Create.tsx +14 -2
  43. package/template/agora-rn-uikit/src/Rtc/Join.tsx +19 -3
  44. package/template/agora-rn-uikit/src/RtcConfigure.tsx +161 -44
  45. package/template/agora-rn-uikit/src/Utils/useLocalUid.ts +8 -0
  46. package/template/agora-rn-uikit/src/Views/MaxVideoView.native.tsx +8 -6
  47. package/template/agora-rn-uikit/src/Views/MaxVideoView.tsx +8 -6
  48. package/template/agora-rn-uikit/src/Views/MinVideoView.tsx +18 -9
  49. package/template/agora-rn-uikit/src/index.ts +12 -12
  50. package/template/babel.config.js +17 -1
  51. package/template/bridge/rtc/webNg/RtcEngine.ts +34 -28
  52. package/template/bridge/rtc/webNg/SurfaceView.tsx +3 -2
  53. package/template/bridge/rtc/webNg/Types.ts +14 -0
  54. package/template/bridge/rtc/webNg/index.ts +5 -2
  55. package/template/bridge/rtm/web/index.ts +13 -7
  56. package/template/electron-builder.js +3 -2
  57. package/template/esbuild.rsdk.go +226 -0
  58. package/template/{src/subComponents/LayoutEnum.tsx → esbuildConfigTransform.js} +1 -5
  59. package/template/fpe-api/components.ts +42 -0
  60. package/template/fpe-api/context.ts +45 -0
  61. package/template/fpe-api/fpeEvents.ts +9 -0
  62. package/template/fpe-api/index.ts +21 -0
  63. package/template/fpe-api/install.ts +128 -0
  64. package/template/fpe-api/typeDefinition.ts +143 -0
  65. package/template/fpe-api/useFpe.tsx +35 -0
  66. package/template/fpe-api/utils.ts +62 -0
  67. package/template/fpe-implementation/createHook.ts +33 -0
  68. package/template/fpe-implementation/dummyFpe.ts +17 -0
  69. package/template/fpe-implementation/index.ts +1 -0
  70. package/template/fpe-todo.txt +14 -0
  71. package/template/fpe.config.js +25 -0
  72. package/template/global.d.ts +4 -0
  73. package/template/index.rsdk.tsx +27 -0
  74. package/template/index.wsdk.tsx +27 -0
  75. package/template/package-lock.json +2297 -2533
  76. package/template/package.json +28 -12
  77. package/template/react-native-toast-message/src/index.js +9 -10
  78. package/template/react-native-toast-message/src/index.wsdk.js +419 -0
  79. package/template/src/App.tsx +97 -65
  80. package/template/src/AppWrapper.tsx +79 -0
  81. package/template/src/SDKAppWrapper.tsx +67 -0
  82. package/template/src/atoms/PrimaryButton.tsx +14 -8
  83. package/template/src/atoms/TextInput.tsx +13 -5
  84. package/template/src/components/Chat.tsx +171 -139
  85. package/template/src/components/ChatContext.ts +14 -22
  86. package/template/src/components/ColorConfigure.tsx +2 -2
  87. package/template/src/components/Controls.native.tsx +72 -62
  88. package/template/src/components/Controls.tsx +90 -69
  89. package/template/src/components/DeviceConfigure.tsx +1 -1
  90. package/template/src/components/DeviceContext.tsx +14 -7
  91. package/template/src/components/GraphQLProvider.tsx +9 -2
  92. package/template/src/components/GridVideo.tsx +20 -159
  93. package/template/src/components/HostControlView.tsx +54 -15
  94. package/template/src/components/Navbar.tsx +408 -157
  95. package/template/src/components/NetworkQualityContext.tsx +29 -22
  96. package/template/src/components/ParticipantsView.tsx +97 -119
  97. package/template/src/components/PinnedVideo.tsx +41 -188
  98. package/template/src/components/Precall.native.tsx +131 -97
  99. package/template/src/components/Precall.tsx +193 -158
  100. package/template/src/components/RTMConfigure.tsx +320 -398
  101. package/template/src/components/Router.sdk.ts +20 -0
  102. package/template/src/components/SessionContext.tsx +6 -3
  103. package/template/src/components/Settings.native.tsx +3 -0
  104. package/template/src/components/Settings.tsx +65 -31
  105. package/template/src/components/SettingsView.tsx +14 -8
  106. package/template/src/components/Share.tsx +188 -220
  107. package/template/src/components/StorageContext.tsx +5 -5
  108. package/template/src/components/StoreToken.tsx +5 -1
  109. package/template/src/components/chat-messages/useChatMessages.tsx +202 -0
  110. package/template/src/components/chat-notification/useChatNotification.tsx +78 -0
  111. package/template/src/components/chat-ui/useChatUIControl.tsx +66 -0
  112. package/template/src/components/common/Error.tsx +54 -0
  113. package/template/src/components/common/Logo.tsx +35 -0
  114. package/template/src/components/common/index.tsx +8 -0
  115. package/template/src/components/contexts/LiveStreamDataContext.tsx +79 -0
  116. package/template/src/components/contexts/ScreenShareContext.tsx +47 -0
  117. package/template/src/components/contexts/WhiteboardContext.tsx +59 -0
  118. package/template/src/components/dimension/DimensionContext.ts +27 -0
  119. package/template/src/components/dimension/DimensionProvider.tsx +34 -0
  120. package/template/src/components/livestream/LiveStreamContext.tsx +293 -272
  121. package/template/src/components/livestream/Types.ts +26 -7
  122. package/template/src/components/livestream/index.ts +13 -2
  123. package/template/src/components/livestream/views/LiveStreamControls.tsx +5 -1
  124. package/template/src/components/meeting-info/useMeetingInfo.tsx +63 -0
  125. package/template/src/components/meeting-info/useSetMeetingInfo.tsx +38 -0
  126. package/template/src/components/participants/AllAudienceParticipants.tsx +26 -21
  127. package/template/src/components/participants/AllHostParticipants.tsx +36 -53
  128. package/template/src/components/participants/MeParticipant.tsx +9 -10
  129. package/template/src/components/participants/ParticipantName.tsx +2 -1
  130. package/template/src/components/participants/RemoteParticipants.tsx +3 -3
  131. package/template/src/components/precall/LocalMute.native.tsx +91 -0
  132. package/template/src/components/precall/LocalMute.tsx +90 -0
  133. package/template/src/components/precall/VideoPreview.native.tsx +35 -0
  134. package/template/src/components/precall/VideoPreview.tsx +33 -0
  135. package/template/src/components/precall/index.tsx +28 -0
  136. package/template/src/components/precall/joinCallBtn.native.tsx +69 -0
  137. package/template/src/components/precall/joinCallBtn.tsx +91 -0
  138. package/template/src/components/precall/meetingTitle.tsx +26 -0
  139. package/template/src/components/precall/selectDevice.tsx +46 -0
  140. package/template/src/components/precall/textInput.tsx +43 -0
  141. package/template/src/components/precall/usePreCall.tsx +41 -0
  142. package/template/src/components/styles.ts +20 -3
  143. package/template/src/components/useShareLink.tsx +222 -0
  144. package/template/src/components/useWakeLock.tsx +3 -3
  145. package/template/src/custom-events/CustomEvents.ts +197 -0
  146. package/template/src/custom-events/index.tsx +4 -0
  147. package/template/src/custom-events/types.ts +51 -0
  148. package/template/src/language/default-labels/commonLabels.ts +21 -0
  149. package/template/src/language/default-labels/createScreenLabels.ts +22 -0
  150. package/template/src/language/default-labels/index.ts +38 -0
  151. package/template/src/language/default-labels/joinScreenLabels.ts +13 -0
  152. package/template/src/language/default-labels/precallScreenLabels.ts +33 -0
  153. package/template/src/language/default-labels/shareLinkScreenLabels.ts +44 -0
  154. package/template/src/language/default-labels/videoCallScreenLabels.ts +189 -0
  155. package/template/src/language/i18nTypes.ts +10 -0
  156. package/template/src/language/index.ts +18 -0
  157. package/template/src/language/useLanguage.tsx +92 -0
  158. package/template/src/pages/Authenticate.tsx +21 -15
  159. package/template/src/pages/Create.tsx +176 -159
  160. package/template/src/pages/Join.tsx +44 -32
  161. package/template/src/pages/VideoCall.tsx +134 -406
  162. package/template/src/pages/create/useCreate.tsx +37 -0
  163. package/template/src/pages/video-call/CustomLayout.ts +17 -0
  164. package/template/src/pages/video-call/CustomUserContextHolder.tsx +12 -0
  165. package/template/src/pages/video-call/DefaultLayouts.ts +65 -0
  166. package/template/src/pages/video-call/NameWithMicStatus.tsx +62 -0
  167. package/template/src/pages/video-call/RenderComponent.tsx +52 -0
  168. package/template/src/pages/video-call/VideoCallScreen.tsx +191 -0
  169. package/template/src/pages/video-call/VideoComponent.tsx +34 -0
  170. package/template/src/pages/video-call/VideoRenderer.tsx +86 -0
  171. package/template/src/pages/video-call/index.ts +20 -0
  172. package/template/src/rtm/RTMEngine.ts +58 -0
  173. package/template/src/rtm/utils.ts +28 -0
  174. package/template/src/rtm-events/EventUtils.ts +268 -0
  175. package/template/src/rtm-events/EventsQueue.ts +38 -0
  176. package/template/src/rtm-events/constants.ts +40 -0
  177. package/template/src/rtm-events/index.tsx +8 -0
  178. package/template/src/rtm-events/types.ts +7 -0
  179. package/template/src/subComponents/ChatBubble.tsx +18 -11
  180. package/template/src/subComponents/ChatContainer.tsx +78 -29
  181. package/template/src/subComponents/ChatInput.tsx +146 -70
  182. package/template/src/subComponents/CopyJoinInfo.tsx +52 -67
  183. package/template/src/subComponents/Error.tsx +35 -24
  184. package/template/src/subComponents/LanguageSelector.tsx +85 -0
  185. package/template/src/subComponents/LayoutIconDropdown.native.tsx +163 -0
  186. package/template/src/subComponents/LayoutIconDropdown.tsx +198 -0
  187. package/template/src/subComponents/LocalAudioMute.tsx +52 -30
  188. package/template/src/subComponents/LocalEndCall.tsx +52 -0
  189. package/template/src/subComponents/LocalSwitchCamera.tsx +61 -0
  190. package/template/src/subComponents/LocalVideoMute.tsx +48 -30
  191. package/template/src/subComponents/LogoutButton.tsx +20 -5
  192. package/template/src/subComponents/NetworkQualityPill.tsx +43 -13
  193. package/template/src/subComponents/OpenInNativeButton.tsx +3 -2
  194. package/template/src/subComponents/Recording.tsx +46 -138
  195. package/template/src/subComponents/RemoteAudioMute.tsx +30 -34
  196. package/template/src/subComponents/RemoteEndCall.tsx +18 -7
  197. package/template/src/subComponents/RemoteVideoMute.tsx +17 -9
  198. package/template/src/subComponents/ScreenShareNotice.tsx +40 -40
  199. package/template/src/subComponents/SelectDevice.tsx +88 -45
  200. package/template/src/subComponents/SelectOAuth.tsx +30 -6
  201. package/template/src/subComponents/SidePanelButtons.ts +39 -0
  202. package/template/src/subComponents/TextWithTooltip.native.tsx +2 -1
  203. package/template/src/subComponents/TextWithTooltip.tsx +15 -20
  204. package/template/src/subComponents/chat/ChatParticipants.tsx +31 -32
  205. package/template/src/subComponents/livestream/ApprovedLiveStreamControlsView.tsx +7 -3
  206. package/template/src/subComponents/livestream/CurrentLiveStreamRequestsView.tsx +32 -18
  207. package/template/src/subComponents/livestream/controls/LocalRaiseHand.tsx +22 -8
  208. package/template/src/subComponents/livestream/controls/RemoteLiveStreamApprovedRequestRecall.tsx +12 -7
  209. package/template/src/subComponents/livestream/controls/RemoteLiveStreamRequestApprove.tsx +24 -27
  210. package/template/src/subComponents/livestream/controls/RemoteLiveStreamRequestReject.tsx +23 -26
  211. package/template/src/subComponents/livestream/index.ts +10 -2
  212. package/template/src/subComponents/recording/useRecording.tsx +209 -0
  213. package/template/src/subComponents/recording/useRecordingLayoutQuery.tsx +64 -0
  214. package/template/src/subComponents/screenshare/ScreenshareButton.native.tsx +18 -0
  215. package/template/src/subComponents/screenshare/ScreenshareButton.tsx +59 -31
  216. package/template/src/subComponents/screenshare/ScreenshareConfigure.native.tsx +57 -52
  217. package/template/src/subComponents/screenshare/ScreenshareConfigure.tsx +97 -138
  218. package/template/src/subComponents/screenshare/useScreenshare.tsx +29 -0
  219. package/template/src/subComponents/toastConfig.tsx +25 -20
  220. package/template/src/utils/IsAttendeeUser.ts +34 -0
  221. package/template/src/utils/SdkEvents.ts +68 -0
  222. package/template/src/utils/common.tsx +40 -0
  223. package/template/src/utils/eventEmitter.ts +29 -0
  224. package/template/src/utils/getMeetingInvite.ts +30 -0
  225. package/template/src/utils/index.tsx +11 -2
  226. package/template/src/utils/isAudioEnabled.ts +29 -0
  227. package/template/src/utils/isHostUser.ts +33 -0
  228. package/template/src/utils/isMobileOrTablet.native.ts +5 -0
  229. package/template/src/utils/{mobileWebTest.tsx → isMobileOrTablet.ts} +5 -2
  230. package/template/src/utils/isPSTNUser.ts +30 -0
  231. package/template/src/utils/isSDK.sdk.ts +5 -0
  232. package/template/src/utils/isSDK.ts +5 -0
  233. package/template/src/utils/isScreenShareUser.ts +31 -0
  234. package/template/src/utils/isVideoEnabled.ts +29 -0
  235. package/template/src/utils/useButtonTemplate.tsx +43 -0
  236. package/template/src/utils/useCreateMeeting.ts +74 -0
  237. package/template/src/utils/useGetLiveStreamingRequests.ts +24 -0
  238. package/template/src/utils/useGetMeetingPhrase.ts +68 -0
  239. package/template/src/utils/useGetName.ts +20 -0
  240. package/template/src/{subComponents/screenshare/ScreenshareContext.tsx → utils/useGroupMessages.ts} +10 -7
  241. package/template/src/utils/useJoinMeeting.ts +120 -0
  242. package/template/src/utils/useLayout.tsx +40 -0
  243. package/template/src/utils/useLiveStreamingUids.ts +26 -0
  244. package/template/src/utils/useMutePSTN.ts +43 -0
  245. package/template/src/utils/useMuteToggleLocal.ts +109 -0
  246. package/template/src/utils/useNavParams.ts +6 -0
  247. package/template/src/utils/useNavigateTo.ts +8 -0
  248. package/template/src/utils/usePrivateMessages.ts +33 -0
  249. package/template/src/utils/useRemoteEndCall.ts +27 -0
  250. package/template/src/utils/useRemoteMute.ts +64 -0
  251. package/template/src/utils/useSendControlMessage.ts +51 -0
  252. package/template/src/utils/useSendMessage.ts +40 -0
  253. package/template/src/utils/useSetName.ts +20 -0
  254. package/template/src/utils/useSetUnreadMessageCount.ts +43 -0
  255. package/template/src/utils/useSidePanel.tsx +41 -0
  256. package/template/src/utils/useString.ts +61 -0
  257. package/template/src/utils/useUnreadMessageCount.ts +50 -0
  258. package/template/src/utils/useUserList.ts +26 -0
  259. package/template/tsconfig.json +4 -4
  260. package/template/tsconfig_fpeApi.json +103 -0
  261. package/template/tsconfig_rsdk_index.json +105 -0
  262. package/template/tsconfig_wsdk_index.json +104 -0
  263. package/template/webpack.commons.js +40 -16
  264. package/template/webpack.main.config.js +2 -1
  265. package/template/webpack.renderer.config.js +1 -1
  266. package/template/webpack.rsdk.config.js +33 -0
  267. package/template/webpack.ts.config.js +89 -0
  268. package/template/webpack.web.config.js +8 -1
  269. package/template/webpack.wsdk.config.js +34 -0
  270. package/template/agora-rn-uikit/.git/logs/refs/heads/ab-dev-auto +0 -1
  271. package/template/agora-rn-uikit/.git/objects/pack/pack-0061d00cd98162a329a32b537488a35d0abeb069.idx +0 -0
  272. package/template/agora-rn-uikit/.git/refs/heads/ab-dev-auto +0 -1
  273. package/template/agora-rn-uikit/src/Contexts/MaxUidContext.tsx +0 -7
  274. package/template/agora-rn-uikit/src/Contexts/MinUidContext.tsx +0 -8
  275. package/template/src/components/participants/context/ParticipantContext.tsx +0 -97
  276. package/template/src/subComponents/ScreenshareButton.tsx +0 -257
  277. package/template/src/subComponents/SwitchCamera.tsx +0 -35
  278. package/template/src/utils/hasBrandLogo.tsx +0 -3
  279. package/template/src/utils/mobileWebTest.native.tsx +0 -5
  280. package/template/src/utils/shouldAuthenticate.tsx +0 -7
@@ -1 +1 @@
1
- ref: refs/heads/ab-dev-auto
1
+ ref: refs/heads/release/fpe-1.0.0
@@ -6,11 +6,11 @@
6
6
  ignorecase = true
7
7
  precomposeunicode = true
8
8
  [remote "origin"]
9
- url = https://github.com/AgoraIO-Community/ReactNative-UIKit
9
+ url = https://github.com/AgoraIO-Community/ReactNative-UIKit.git
10
10
  fetch = +refs/heads/*:refs/remotes/origin/*
11
11
  [branch "master"]
12
12
  remote = origin
13
13
  merge = refs/heads/master
14
- [branch "ab-dev-auto"]
14
+ [branch "release/fpe-1.0.0"]
15
15
  remote = origin
16
- merge = refs/heads/ab-dev-auto
16
+ merge = refs/heads/release/fpe-1.0.0
Binary file
@@ -1,2 +1,2 @@
1
- 0000000000000000000000000000000000000000 d3828abad4998b3ae014de717a63d8a20b15762a nitte93 <nitte.tiwari1993@gmail.com> 1657173940 +0530 clone: from https://github.com/AgoraIO-Community/ReactNative-UIKit
2
- d3828abad4998b3ae014de717a63d8a20b15762a f27948778f3d89af8ae9f1e8d881682f6103c9be nitte93 <nitte.tiwari1993@gmail.com> 1657173941 +0530 checkout: moving from master to ab-dev-auto
1
+ 0000000000000000000000000000000000000000 d3828abad4998b3ae014de717a63d8a20b15762a nitte93 <nitte.tiwari1993@gmail.com> 1659067879 +0530 clone: from https://github.com/AgoraIO-Community/ReactNative-UIKit.git
2
+ d3828abad4998b3ae014de717a63d8a20b15762a 514391c2e272917783a71042cd1e561f665cef27 nitte93 <nitte.tiwari1993@gmail.com> 1659067879 +0530 checkout: moving from master to release/fpe-1.0.0
@@ -1 +1 @@
1
- 0000000000000000000000000000000000000000 d3828abad4998b3ae014de717a63d8a20b15762a nitte93 <nitte.tiwari1993@gmail.com> 1657173940 +0530 clone: from https://github.com/AgoraIO-Community/ReactNative-UIKit
1
+ 0000000000000000000000000000000000000000 d3828abad4998b3ae014de717a63d8a20b15762a nitte93 <nitte.tiwari1993@gmail.com> 1659067879 +0530 clone: from https://github.com/AgoraIO-Community/ReactNative-UIKit.git
@@ -0,0 +1 @@
1
+ 0000000000000000000000000000000000000000 514391c2e272917783a71042cd1e561f665cef27 nitte93 <nitte.tiwari1993@gmail.com> 1659067879 +0530 branch: Created from refs/remotes/origin/release/fpe-1.0.0
@@ -1 +1 @@
1
- 0000000000000000000000000000000000000000 d3828abad4998b3ae014de717a63d8a20b15762a nitte93 <nitte.tiwari1993@gmail.com> 1657173940 +0530 clone: from https://github.com/AgoraIO-Community/ReactNative-UIKit
1
+ 0000000000000000000000000000000000000000 d3828abad4998b3ae014de717a63d8a20b15762a nitte93 <nitte.tiwari1993@gmail.com> 1659067879 +0530 clone: from https://github.com/AgoraIO-Community/ReactNative-UIKit.git
@@ -8,16 +8,20 @@ b2020fb3e8c0b39d1d39dfcf019849914bca467f refs/remotes/origin/bugfix/togglerole-s
8
8
  5d4f38ae0a89b20275e2497a4e8f43b0ca2830e4 refs/remotes/origin/dev
9
9
  4ec093e51924049e37d247d867a5482a9376a8cf refs/remotes/origin/docs
10
10
  002960cf34f06ffd3e905e6de9865460f02bd910 refs/remotes/origin/feat/icon-tint
11
+ a714e26150caf0ecc30661c59bfa70df1c014981 refs/remotes/origin/feature/audio_room
11
12
  82207f40106655312beafed4cfa790ac7c0f5471 refs/remotes/origin/feature/custom_layout
12
13
  ce7c971ae62c8fd92d180fa2fb7e5600b4a0a300 refs/remotes/origin/feature/fpe-internationlization
13
- 55b1e6f710a1fc38b49480a8cc6cd374264486cf refs/remotes/origin/feature/fpe_changes
14
+ dd04b6f873dae0d1290ccfd8bde9fe79bcaaaaa9 refs/remotes/origin/feature/fpe_changes
14
15
  ce7c971ae62c8fd92d180fa2fb7e5600b4a0a300 refs/remotes/origin/feature/life_cycle_events
15
16
  7c60e844f617d9c0faf6aa968fdf16b16d0e59ce refs/remotes/origin/feature/ui-kit/raise-hand
17
+ d51519724e4c8ee234aaf1f0cf97fae72eafc5fa refs/remotes/origin/fpe_userlist_migration
18
+ fd321c3fb732a0644dac707cf3f7866656e78b99 refs/remotes/origin/fpe_v1
16
19
  2a6955df4af514b6a8d83ce9423a97594ac3789b refs/remotes/origin/geo_fencing_config
17
20
  d3828abad4998b3ae014de717a63d8a20b15762a refs/remotes/origin/master
18
21
  b8c591fa4ece61d69d49d2d40120664803bff25b refs/remotes/origin/merge-refactor
19
22
  2295420e38a5ab0fe094a36855ad8d360bd4f7fd refs/remotes/origin/merge-refactor-master
20
23
  01ad019ae514b6502b64a30b357a20af49b8c8a5 refs/remotes/origin/refactor
24
+ 514391c2e272917783a71042cd1e561f665cef27 refs/remotes/origin/release/fpe-1.0.0
21
25
  612364439bef5545d47070e9fc33c1fd14c30a76 refs/remotes/origin/release/uikit/blocker-fixes
22
26
  ac8929fda04db3663a7c1eb9c71ca6a97728f0eb refs/remotes/origin/v2-legacy
23
27
  d772da16c7f1299a7fc8427098aa1a63b9a79081 refs/remotes/origin/video-placeholder
@@ -0,0 +1 @@
1
+ 514391c2e272917783a71042cd1e561f665cef27
@@ -3,8 +3,7 @@ import {ScrollView, View} from 'react-native';
3
3
  import RtcConfigure from './RtcConfigure';
4
4
  import MaxVideoView from './Views/MaxVideoView';
5
5
  import MinVideoView from './Views/MinVideoView';
6
- import {MinUidConsumer} from './Contexts/MinUidContext';
7
- import {MaxUidConsumer} from './Contexts/MaxUidContext';
6
+ import {RenderConsumer} from './Contexts/RenderContext';
8
7
  import {PropsProvider, PropsInterface} from './Contexts/PropsContext';
9
8
 
10
9
  import styles from './Style';
@@ -17,24 +16,28 @@ const AgoraUIKit: React.FC<PropsInterface> = (props) => {
17
16
  <PropsProvider value={props}>
18
17
  <View style={{backgroundColor: '#000', flex: 1}}>
19
18
  <RtcConfigure>
20
- <MaxUidConsumer>
21
- {(maxUsers) => (
22
- <MaxVideoView user={maxUsers[0]} key={maxUsers[0].uid} />
23
- )}
24
- </MaxUidConsumer>
25
-
26
- <ScrollView
27
- showsHorizontalScrollIndicator={false}
28
- horizontal={true}
29
- style={styles.minContainer}>
30
- <MinUidConsumer>
31
- {(minUsers) =>
32
- minUsers.map((user) => (
33
- <MinVideoView showOverlay user={user} key={user.uid} />
34
- ))
35
- }
36
- </MinUidConsumer>
37
- </ScrollView>
19
+ <RenderConsumer>
20
+ {({renderList, renderPosition}) => {
21
+ const [maxUid, ...minUids] = renderPosition;
22
+ return (
23
+ <>
24
+ <MaxVideoView user={renderList[maxUid]} key={maxUid} />
25
+ <ScrollView
26
+ showsHorizontalScrollIndicator={false}
27
+ horizontal={true}
28
+ style={styles.minContainer}>
29
+ {minUids.map((minUid) => (
30
+ <MinVideoView
31
+ showOverlay
32
+ user={renderList[minUid]}
33
+ key={minUid}
34
+ />
35
+ ))}
36
+ </ScrollView>
37
+ </>
38
+ );
39
+ }}
40
+ </RenderConsumer>
38
41
  <LocalControls />
39
42
  </RtcConfigure>
40
43
  </View>
@@ -1,21 +1,26 @@
1
1
  import React, {useContext, createContext} from 'react';
2
- import MaxUidContext from './MaxUidContext';
3
- import MinUidContext from './MinUidContext';
4
- import {UidInterface} from './PropsContext';
2
+ import RenderContext from './RenderContext';
3
+ import {RenderInterface} from './PropsContext';
4
+ import {UidType} from './RtcContext';
5
5
 
6
- export const LocalContext = createContext<UidInterface>({} as UidInterface);
6
+ export const LocalContext = createContext<RenderInterface>(
7
+ {} as RenderInterface,
8
+ );
7
9
  export const LocalProvider = LocalContext.Provider;
8
10
  export const LocalConsumer = LocalContext.Consumer;
9
11
 
10
12
  interface LocalUserContextInterface {
11
13
  children: React.ReactNode;
14
+ localUid: UidType;
12
15
  }
13
16
 
14
17
  const LocalUserContext: React.FC<LocalUserContextInterface> = (props) => {
15
- const max = useContext(MaxUidContext);
16
- const min = useContext(MinUidContext);
17
- // if(min && min[0] && max )
18
- let localUser: UidInterface = max[0].uid === 'local' ? max[0] : min[0];
18
+ const {renderList} = useContext(RenderContext);
19
+ let localUser: RenderInterface = renderList[props?.localUid];
20
+ if (!localUser) {
21
+ console.error("Error: we couldn't find the local user data");
22
+ return null;
23
+ }
19
24
  return (
20
25
  <LocalContext.Provider value={localUser}>
21
26
  {props.children}
@@ -3,6 +3,7 @@ import {StyleProp, ViewStyle} from 'react-native';
3
3
  import {RtcEngineEvents} from 'react-native-agora/lib/typescript/src/common/RtcEvents';
4
4
  import {EncryptionMode} from 'react-native-agora';
5
5
  import {VideoProfile} from '../Utils/quality';
6
+ import {UidType} from './RtcContext';
6
7
 
7
8
  /* User role for live streaming mode */
8
9
  export enum ClientRole {
@@ -34,13 +35,20 @@ export enum ToggleState {
34
35
  export const toggleHelper = (state: ToggleState) =>
35
36
  state === ToggleState.enabled ? ToggleState.disabled : ToggleState.enabled;
36
37
 
37
- export interface UidInterface {
38
- // TODO: refactor local to 0 and remove string.
39
- uid: number | string;
38
+ export interface DefaultRenderInterface {
39
+ uid: UidType;
40
40
  audio: ToggleState;
41
41
  video: ToggleState;
42
42
  streamType: 'high' | 'low';
43
+ type: 'rtc';
43
44
  }
45
+ export interface CustomRenderInterface<T> {
46
+ type: T extends DefaultRenderInterface['type'] ? never : T;
47
+ }
48
+ interface ExtenedRenderInterface extends CustomRenderInterface<string> {
49
+ [key: string]: any;
50
+ }
51
+ export type RenderInterface = DefaultRenderInterface | ExtenedRenderInterface;
44
52
 
45
53
  interface remoteBtnStylesInterface {
46
54
  muteRemoteAudio?: StyleProp<ViewStyle>;
@@ -78,7 +86,7 @@ export enum DualStreamMode {
78
86
  export interface RtcPropsInterface {
79
87
  appId: string;
80
88
  channel: string;
81
- uid?: number;
89
+ uid?: UidType;
82
90
  token?: string | null;
83
91
  dual?: boolean | null;
84
92
  profile?: VideoProfile;
@@ -92,7 +100,12 @@ export interface RtcPropsInterface {
92
100
  | EncryptionMode.AES256XTS
93
101
  | EncryptionMode.AES128ECB;
94
102
  };
95
- geoFencing?: boolean
103
+ // commented for v1 release
104
+ // lifecycle?: {
105
+ // useBeforeJoin?: () => () => Promise<void>;
106
+ // useBeforeCreate?: () => () => Promise<void>;
107
+ // };
108
+ geoFencing?: boolean;
96
109
  }
97
110
 
98
111
  export interface CallbacksInterface {
@@ -102,14 +115,17 @@ export interface CallbacksInterface {
102
115
  UpdateDualStreamMode(mode: DualStreamMode): void;
103
116
  UserJoined: RtcEngineEvents['UserJoined'];
104
117
  UserOffline: RtcEngineEvents['UserOffline'];
105
- SwapVideo(user: UidInterface): void;
106
- UserMuteRemoteAudio(user: UidInterface, muted: UidInterface['audio']): void;
107
- UserMuteRemoteVideo(user: UidInterface, muted: UidInterface['video']): void;
118
+ SwapVideo(uid: UidType): void;
119
+ DequeVideo(uid: UidType): void;
120
+ UserMuteRemoteAudio(uid: UidType, muted: RenderInterface['audio']): void;
121
+ UserMuteRemoteVideo(uid: UidType, muted: RenderInterface['video']): void;
108
122
  LocalMuteAudio(muted: ToggleState): void;
109
123
  LocalMuteVideo(muted: ToggleState): void;
110
124
  RemoteAudioStateChanged: RtcEngineEvents['RemoteAudioStateChanged'];
111
125
  RemoteVideoStateChanged: RtcEngineEvents['RemoteVideoStateChanged'];
112
126
  JoinChannelSuccess: RtcEngineEvents['JoinChannelSuccess'];
127
+ UpdateRenderList(uid: UidType, user: Partial<RenderInterface>): void;
128
+ AddCustomContent(uid: UidType, data: any): void;
113
129
  }
114
130
 
115
131
  export type CustomCallbacksInterface = CallbacksInterface;
@@ -125,7 +141,7 @@ const initialValue: PropsInterface = {
125
141
  rtcProps: {
126
142
  appId: '',
127
143
  channel: '',
128
- geoFencing: true
144
+ geoFencing: true,
129
145
  },
130
146
  };
131
147
 
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import {RenderStateInterface} from './RtcContext';
3
+
4
+ const RenderContext = React.createContext<RenderStateInterface>(
5
+ {} as RenderStateInterface,
6
+ );
7
+
8
+ export const RenderProvider = RenderContext.Provider;
9
+ export const RenderConsumer = RenderContext.Consumer;
10
+ export default RenderContext;
@@ -1,11 +1,17 @@
1
- import React, {Dispatch} from 'react';
1
+ import React from 'react';
2
2
  import {CallbacksInterface} from './PropsContext';
3
3
  import RtcEngine from 'react-native-agora';
4
- import type {DualStreamMode, UidInterface} from './PropsContext';
4
+ import type {DualStreamMode, RenderInterface} from './PropsContext';
5
5
 
6
- export interface UidStateInterface {
7
- min: Array<UidInterface>;
8
- max: Array<UidInterface>;
6
+ export type UidType = number;
7
+
8
+ export interface RenderObjectInterface {
9
+ [key: number]: RenderInterface;
10
+ }
11
+
12
+ export interface RenderStateInterface {
13
+ renderList: RenderObjectInterface;
14
+ renderPosition: Array<UidType>;
9
15
  }
10
16
 
11
17
  export interface ActionInterface<T extends keyof CallbacksInterface> {
@@ -28,7 +28,7 @@ interface BtnTemplateInterfaceWithName extends BtnTemplateBasicInterface {
28
28
  interface BtnTemplateInterfaceWithIcon extends BtnTemplateBasicInterface {
29
29
  icon?: any;
30
30
  }
31
- type BtnTemplateInterface = Either<
31
+ export type BtnTemplateInterface = Either<
32
32
  BtnTemplateInterfaceWithIcon,
33
33
  BtnTemplateInterfaceWithName
34
34
  >;
@@ -62,7 +62,11 @@ const BtnTemplate: React.FC<BtnTemplateInterface> = (props) => {
62
62
  tintColor: disabled ? 'grey' : props.color || theme || '#fff',
63
63
  }}
64
64
  resizeMode={'contain'}
65
- source={{uri: props.name ? icons[props.name] : props.icon}}
65
+ source={
66
+ props.name && icons[props.name]
67
+ ? {uri: icons[props.name]}
68
+ : props.icon
69
+ }
66
70
  />
67
71
  </View>
68
72
  <Text
@@ -49,7 +49,7 @@ const ImageIcon: React.FC<ImageIconInterface> = (props) => {
49
49
  props.style as object,
50
50
  ]}
51
51
  resizeMode={'contain'}
52
- source={{uri: props.name ? icons[props.name] : props.icon}}
52
+ source={props.name && icons[props.name] ? {uri: icons[props.name] } : props.icon}
53
53
  />
54
54
  );
55
55
  };
@@ -4,7 +4,11 @@ import RtcContext from '../../Contexts/RtcContext';
4
4
  import BtnTemplate from '../BtnTemplate';
5
5
  import styles from '../../Style';
6
6
 
7
- function EndCall() {
7
+ interface EndCallProps{
8
+ btnText?: string
9
+ }
10
+
11
+ function EndCall(props?: EndCallProps) {
8
12
  const {styleProps} = useContext(PropsContext);
9
13
  const {localBtnStyles} = styleProps || {};
10
14
  const {endCall} = localBtnStyles || {};
@@ -13,7 +17,7 @@ function EndCall() {
13
17
  return (
14
18
  <BtnTemplate
15
19
  name={'callEnd'}
16
- btnText={'Hang Up'}
20
+ btnText={props?.btnText || 'Hang Up'}
17
21
  color='#FD0845'
18
22
  style={{...styles.endCall, ...(endCall as object)}}
19
23
  onPress={() =>
@@ -5,11 +5,11 @@ import BtnTemplate from '../BtnTemplate';
5
5
  import styles from '../../Style';
6
6
  import {LocalContext} from '../../Contexts/LocalUserContext';
7
7
 
8
- interface Props {
8
+ interface LocalAudioMuteProps {
9
9
  btnText?: string;
10
10
  variant?: 'outlined' | 'text';
11
11
  }
12
- function LocalAudioMute(props: Props) {
12
+ function LocalAudioMute(props: LocalAudioMuteProps) {
13
13
  const {btnText = 'Audio', variant = 'Outlined'} = props;
14
14
  const {styleProps} = useContext(PropsContext);
15
15
  const {localBtnStyles, remoteBtnStyles} = styleProps || {};
@@ -5,12 +5,12 @@ import BtnTemplate from '../BtnTemplate';
5
5
  import styles from '../../Style';
6
6
  import {LocalContext} from '../../Contexts/LocalUserContext';
7
7
 
8
- interface Props {
8
+ interface LocalVideoMuteProps {
9
9
  btnText?: string;
10
10
  variant?: 'outlined' | 'text';
11
11
  }
12
12
 
13
- function LocalVideoMute(props: Props) {
13
+ function LocalVideoMute(props: LocalVideoMuteProps) {
14
14
  const {btnText = 'Video', variant = 'Outlined'} = props;
15
15
  const {styleProps} = useContext(PropsContext);
16
16
  const {localBtnStyles, remoteBtnStyles} = styleProps || {};
@@ -5,7 +5,11 @@ import RtcContext from '../../Contexts/RtcContext';
5
5
  import BtnTemplate from '../BtnTemplate';
6
6
  import styles from '../../Style';
7
7
 
8
- function SwitchCamera() {
8
+ interface Props{
9
+ btnText?: string
10
+ }
11
+
12
+ function SwitchCamera(props?: Props) {
9
13
  const {styleProps, callbacks} = useContext(PropsContext);
10
14
  const {localBtnStyles} = styleProps || {};
11
15
  const {switchCamera} = localBtnStyles || {};
@@ -15,7 +19,7 @@ function SwitchCamera() {
15
19
  <BtnTemplate
16
20
  name={'switchCamera'}
17
21
  style={{...styles.localBtn, ...(switchCamera as object)}}
18
- btnText={'Switch'}
22
+ btnText={props?.btnText ||'Switch'}
19
23
  disabled={local.video === ToggleState.enabled ? false : true}
20
24
  onPress={() => {
21
25
  RtcEngine.switchCamera();
@@ -6,9 +6,10 @@ import LocalAudioMute from './Local/LocalAudioMute';
6
6
  import LocalVideoMute from './Local/LocalVideoMute';
7
7
  import SwitchCamera from './Local/SwitchCamera';
8
8
  import RemoteControls from './RemoteControls';
9
- import {MaxUidConsumer} from '../Contexts/MaxUidContext';
9
+ import {RenderConsumer} from '../Contexts/RenderContext';
10
10
  import PropsContext from '../Contexts/PropsContext';
11
11
  import LocalUserContextComponent from '../Contexts/LocalUserContext';
12
+ import useLocalUid from '../Utils/useLocalUid';
12
13
 
13
14
  interface ControlsPropsInterface {
14
15
  showButton?: boolean;
@@ -16,10 +17,11 @@ interface ControlsPropsInterface {
16
17
 
17
18
  function Controls(props: ControlsPropsInterface) {
18
19
  const {styleProps} = useContext(PropsContext);
20
+ const localUid = useLocalUid();
19
21
  const {localBtnContainer} = styleProps || {};
20
22
  const showButton = props.showButton !== undefined ? props.showButton : true;
21
23
  return (
22
- <LocalUserContextComponent>
24
+ <LocalUserContextComponent localUid={localUid}>
23
25
  <View style={{...styles.Controls, ...(localBtnContainer as object)}}>
24
26
  <LocalAudioMute />
25
27
  <LocalVideoMute />
@@ -27,13 +29,16 @@ function Controls(props: ControlsPropsInterface) {
27
29
  <EndCall />
28
30
  </View>
29
31
  {showButton ? (
30
- <MaxUidConsumer>
31
- {(users) => (
32
+ <RenderConsumer>
33
+ {({renderList, renderPosition}) => (
32
34
  <View style={{...styles.Controls, top: styles.Controls.top - 100}}>
33
- <RemoteControls user={users[0]} showRemoteSwap={false} />
35
+ <RemoteControls
36
+ user={renderList[renderPosition[0]]}
37
+ showRemoteSwap={false}
38
+ />
34
39
  </View>
35
40
  )}
36
- </MaxUidConsumer>
41
+ </RenderConsumer>
37
42
  ) : (
38
43
  <></>
39
44
  )}
@@ -1,20 +1,24 @@
1
1
  import React, {useContext} from 'react';
2
- import RtcContext from '../../Contexts/RtcContext';
2
+ import RtcContext, {UidType} from '../../Contexts/RtcContext';
3
3
  import BtnTemplate from '../BtnTemplate';
4
4
  import styles from '../../Style';
5
- import PropsContext, {ToggleState, UidInterface} from '../../Contexts/PropsContext';
5
+ import PropsContext, {
6
+ ToggleState,
7
+ RenderInterface,
8
+ } from '../../Contexts/PropsContext';
9
+ import useLocalUid from '../../Utils/useLocalUid';
6
10
 
7
11
  interface RemoteAudioMuteInterface {
8
- user: UidInterface;
12
+ user: RenderInterface;
9
13
  }
10
14
 
11
15
  const RemoteAudioMute: React.FC<RemoteAudioMuteInterface> = (props) => {
12
- const {RtcEngine, dispatch} = useContext(RtcContext);
16
+ const {RtcEngine} = useContext(RtcContext);
13
17
  const {styleProps} = useContext(PropsContext);
14
18
  const {remoteBtnStyles} = styleProps || {};
15
19
  const {muteRemoteAudio} = remoteBtnStyles || {};
16
-
17
- return props.user.uid !== 'local' ? (
20
+ const localUid = useLocalUid();
21
+ return props.user.uid !== localUid ? (
18
22
  <BtnTemplate
19
23
  name={props.user.audio === ToggleState.enabled ? 'mic' : 'micOff'}
20
24
  style={{...styles.leftRemoteBtn, ...(muteRemoteAudio as object)}}
@@ -1,11 +1,12 @@
1
1
  import React, {useContext} from 'react';
2
- import RtcContext from '../../Contexts/RtcContext';
2
+ import RtcContext, {UidType} from '../../Contexts/RtcContext';
3
3
  import BtnTemplate from '../BtnTemplate';
4
4
  import styles from '../../Style';
5
- import PropsContext, {UidInterface} from '../../Contexts/PropsContext';
5
+ import PropsContext from '../../Contexts/PropsContext';
6
+ import useLocalUid from '../../Utils/useLocalUid';
6
7
 
7
8
  interface RemoteSwapInterface {
8
- user: UidInterface;
9
+ uid: UidType;
9
10
  }
10
11
 
11
12
  const RemoteSwap: React.FC<RemoteSwapInterface> = (props) => {
@@ -13,19 +14,19 @@ const RemoteSwap: React.FC<RemoteSwapInterface> = (props) => {
13
14
  const {styleProps} = useContext(PropsContext);
14
15
  const {remoteBtnStyles} = styleProps || {};
15
16
  const {remoteSwap} = remoteBtnStyles || {};
16
-
17
+ const localUid = useLocalUid();
17
18
  return (
18
19
  <BtnTemplate
19
20
  name={'remoteSwap'}
20
21
  style={
21
- props.user.uid !== 'local'
22
+ props.uid !== localUid
22
23
  ? {...styles.rightRemoteBtn, ...(remoteSwap as object)}
23
24
  : {}
24
25
  }
25
26
  onPress={() => {
26
27
  dispatch({
27
28
  type: 'SwapVideo',
28
- value: [props.user],
29
+ value: [props.uid],
29
30
  });
30
31
  }}
31
32
  />
@@ -1,24 +1,25 @@
1
1
  import React, {useContext} from 'react';
2
+ import useLocalUid from '../../Utils/useLocalUid';
2
3
  import PropsContext, {
3
4
  ToggleState,
4
- UidInterface,
5
+ RenderInterface,
5
6
  } from '../../Contexts/PropsContext';
6
7
  import RtcContext from '../../Contexts/RtcContext';
7
8
  import styles from '../../Style';
8
9
  import BtnTemplate from '../BtnTemplate';
9
10
 
10
11
  interface RemoteVideoMuteInterface {
11
- user: UidInterface;
12
+ user: RenderInterface;
12
13
  rightButton: boolean;
13
14
  }
14
15
 
15
16
  const RemoteVideoMute: React.FC<RemoteVideoMuteInterface> = (props) => {
16
- const {RtcEngine, dispatch} = useContext(RtcContext);
17
+ const {RtcEngine} = useContext(RtcContext);
17
18
  const {styleProps} = useContext(PropsContext);
18
19
  const {remoteBtnStyles} = styleProps || {};
19
20
  const {muteRemoteVideo} = remoteBtnStyles || {};
20
-
21
- return props.user.uid !== 'local' ? (
21
+ const localUid = useLocalUid();
22
+ return props.user.uid !== localUid ? (
22
23
  <BtnTemplate
23
24
  name={
24
25
  props.user.video === ToggleState.enabled ? 'videocam' : 'videocamOff'
@@ -1,6 +1,6 @@
1
1
  import React, {useContext} from 'react';
2
2
  import {View} from 'react-native';
3
- import PropsContext, {UidInterface} from '../Contexts/PropsContext';
3
+ import PropsContext, {RenderInterface} from '../Contexts/PropsContext';
4
4
  import styles from '../Style';
5
5
  import RemoteAudioMute from './Remote/RemoteAudioMute';
6
6
  import RemoteSwap from './Remote/RemoteSwap';
@@ -10,7 +10,7 @@ interface RemoteControlsInterface {
10
10
  showMuteRemoteVideo?: boolean;
11
11
  showMuteRemoteAudio?: boolean;
12
12
  showRemoteSwap?: boolean;
13
- user: UidInterface;
13
+ user: RenderInterface;
14
14
  }
15
15
 
16
16
  const RemoteControls: React.FC<RemoteControlsInterface> = (props) => {
@@ -34,7 +34,7 @@ const RemoteControls: React.FC<RemoteControlsInterface> = (props) => {
34
34
  <></>
35
35
  )}
36
36
  {props.showRemoteSwap !== false ? (
37
- <RemoteSwap user={props.user} />
37
+ <RemoteSwap uid={props.user.uid} />
38
38
  ) : (
39
39
  <></>
40
40
  )}
@@ -1,20 +1,23 @@
1
- import {UidInterface} from '../Contexts/PropsContext';
2
- import {ActionType, UidStateInterface} from '../Contexts/RtcContext';
1
+ import {
2
+ ActionType,
3
+ RenderStateInterface,
4
+ UidType,
5
+ } from '../Contexts/RtcContext';
3
6
 
4
7
  export default function LocalMuteAudio(
5
- state: UidStateInterface,
8
+ state: RenderStateInterface,
6
9
  action: ActionType<'LocalMuteAudio'>,
10
+ localUid: UidType,
7
11
  ) {
8
- let stateUpdate = {};
9
- const LocalAudioMute = (user: UidInterface) => {
10
- if (user.uid === 'local') {
11
- user.audio = action.value[0];
12
- }
13
- return user;
14
- };
15
- stateUpdate = {
16
- min: state.min.map(LocalAudioMute),
17
- max: state.max.map(LocalAudioMute),
12
+ let stateUpdate: RenderStateInterface = {
13
+ renderList: {
14
+ ...state.renderList,
15
+ [localUid]: {
16
+ ...state.renderList[localUid],
17
+ audio: action.value[0],
18
+ },
19
+ },
20
+ renderPosition: [...state.renderPosition],
18
21
  };
19
22
  return stateUpdate;
20
23
  }
@@ -1,20 +1,23 @@
1
- import {UidInterface} from '../Contexts/PropsContext';
2
- import {ActionType, UidStateInterface} from '../Contexts/RtcContext';
1
+ import {
2
+ ActionType,
3
+ RenderStateInterface,
4
+ UidType,
5
+ } from '../Contexts/RtcContext';
3
6
 
4
7
  export default function LocalMuteVideo(
5
- state: UidStateInterface,
8
+ state: RenderStateInterface,
6
9
  action: ActionType<'LocalMuteVideo'>,
10
+ localUid: UidType,
7
11
  ) {
8
- let stateUpdate = {};
9
- const LocalVideoMute = (user: UidInterface) => {
10
- if (user.uid === 'local') {
11
- user.video = action.value[0];
12
- }
13
- return user;
14
- };
15
- stateUpdate = {
16
- min: state.min.map(LocalVideoMute),
17
- max: state.max.map(LocalVideoMute),
12
+ let stateUpdate: RenderStateInterface = {
13
+ renderList: {
14
+ ...state.renderList,
15
+ [localUid]: {
16
+ ...state.renderList[localUid],
17
+ video: action.value[0],
18
+ },
19
+ },
20
+ renderPosition: [...state.renderPosition],
18
21
  };
19
22
  return stateUpdate;
20
23
  }