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.
- package/Readme.md +7 -1
- package/package.json +4 -3
- package/template/Gulpfile.js +306 -87
- package/template/_gitignore +4 -1
- package/template/_package-lock.json +2297 -2533
- package/template/agora-rn-uikit/.git/HEAD +1 -1
- package/template/agora-rn-uikit/.git/config +3 -3
- package/template/agora-rn-uikit/.git/index +0 -0
- package/template/agora-rn-uikit/.git/logs/HEAD +2 -2
- package/template/agora-rn-uikit/.git/logs/refs/heads/master +1 -1
- package/template/agora-rn-uikit/.git/logs/refs/heads/release/fpe-1.0.0 +1 -0
- package/template/agora-rn-uikit/.git/logs/refs/remotes/origin/HEAD +1 -1
- package/template/agora-rn-uikit/.git/objects/pack/pack-f274a85fccfc9b5112d154bb3b6d34cb4b8dedde.idx +0 -0
- package/template/agora-rn-uikit/.git/objects/pack/{pack-0061d00cd98162a329a32b537488a35d0abeb069.pack → pack-f274a85fccfc9b5112d154bb3b6d34cb4b8dedde.pack} +0 -0
- package/template/agora-rn-uikit/.git/packed-refs +5 -1
- package/template/agora-rn-uikit/.git/refs/heads/release/fpe-1.0.0 +1 -0
- package/template/agora-rn-uikit/src/AgoraUIKit.tsx +23 -20
- package/template/agora-rn-uikit/src/Contexts/LocalUserContext.tsx +13 -8
- package/template/agora-rn-uikit/src/Contexts/PropsContext.tsx +25 -9
- package/template/agora-rn-uikit/src/Contexts/RenderContext.tsx +10 -0
- package/template/agora-rn-uikit/src/Contexts/RtcContext.tsx +11 -5
- package/template/agora-rn-uikit/src/Controls/BtnTemplate.tsx +6 -2
- package/template/agora-rn-uikit/src/Controls/ImageIcon.tsx +1 -1
- package/template/agora-rn-uikit/src/Controls/Local/EndCall.tsx +6 -2
- package/template/agora-rn-uikit/src/Controls/Local/LocalAudioMute.tsx +2 -2
- package/template/agora-rn-uikit/src/Controls/Local/LocalVideoMute.tsx +2 -2
- package/template/agora-rn-uikit/src/Controls/Local/SwitchCamera.tsx +6 -2
- package/template/agora-rn-uikit/src/Controls/LocalControls.tsx +11 -6
- package/template/agora-rn-uikit/src/Controls/Remote/RemoteAudioMute.tsx +10 -6
- package/template/agora-rn-uikit/src/Controls/Remote/RemoteSwap.tsx +7 -6
- package/template/agora-rn-uikit/src/Controls/Remote/RemoteVideoMute.tsx +6 -5
- package/template/agora-rn-uikit/src/Controls/RemoteControls.tsx +3 -3
- package/template/agora-rn-uikit/src/Reducer/LocalMuteAudio.ts +16 -13
- package/template/agora-rn-uikit/src/Reducer/LocalMuteVideo.ts +16 -13
- package/template/agora-rn-uikit/src/Reducer/RemoteAudioStateChanged.ts +13 -13
- package/template/agora-rn-uikit/src/Reducer/RemoteVideoStateChanged.ts +16 -13
- package/template/agora-rn-uikit/src/Reducer/UpdateDualStreamMode.ts +28 -31
- package/template/agora-rn-uikit/src/Reducer/UserJoined.ts +48 -35
- package/template/agora-rn-uikit/src/Reducer/UserMuteRemoteAudio.ts +11 -13
- package/template/agora-rn-uikit/src/Reducer/UserMuteRemoteVideo.ts +11 -13
- package/template/agora-rn-uikit/src/Reducer/UserOffline.ts +18 -15
- package/template/agora-rn-uikit/src/Rtc/Create.tsx +14 -2
- package/template/agora-rn-uikit/src/Rtc/Join.tsx +19 -3
- package/template/agora-rn-uikit/src/RtcConfigure.tsx +161 -44
- package/template/agora-rn-uikit/src/Utils/useLocalUid.ts +8 -0
- package/template/agora-rn-uikit/src/Views/MaxVideoView.native.tsx +8 -6
- package/template/agora-rn-uikit/src/Views/MaxVideoView.tsx +8 -6
- package/template/agora-rn-uikit/src/Views/MinVideoView.tsx +18 -9
- package/template/agora-rn-uikit/src/index.ts +12 -12
- package/template/babel.config.js +17 -1
- package/template/bridge/rtc/webNg/RtcEngine.ts +34 -28
- package/template/bridge/rtc/webNg/SurfaceView.tsx +3 -2
- package/template/bridge/rtc/webNg/Types.ts +14 -0
- package/template/bridge/rtc/webNg/index.ts +5 -2
- package/template/bridge/rtm/web/index.ts +13 -7
- package/template/electron-builder.js +3 -2
- package/template/esbuild.rsdk.go +226 -0
- package/template/{src/subComponents/LayoutEnum.tsx → esbuildConfigTransform.js} +1 -5
- package/template/fpe-api/components.ts +42 -0
- package/template/fpe-api/context.ts +45 -0
- package/template/fpe-api/fpeEvents.ts +9 -0
- package/template/fpe-api/index.ts +21 -0
- package/template/fpe-api/install.ts +128 -0
- package/template/fpe-api/typeDefinition.ts +143 -0
- package/template/fpe-api/useFpe.tsx +35 -0
- package/template/fpe-api/utils.ts +62 -0
- package/template/fpe-implementation/createHook.ts +33 -0
- package/template/fpe-implementation/dummyFpe.ts +17 -0
- package/template/fpe-implementation/index.ts +1 -0
- package/template/fpe-todo.txt +14 -0
- package/template/fpe.config.js +25 -0
- package/template/global.d.ts +4 -0
- package/template/index.rsdk.tsx +27 -0
- package/template/index.wsdk.tsx +27 -0
- package/template/package-lock.json +2297 -2533
- package/template/package.json +28 -12
- package/template/react-native-toast-message/src/index.js +9 -10
- package/template/react-native-toast-message/src/index.wsdk.js +419 -0
- package/template/src/App.tsx +97 -65
- package/template/src/AppWrapper.tsx +79 -0
- package/template/src/SDKAppWrapper.tsx +67 -0
- package/template/src/atoms/PrimaryButton.tsx +14 -8
- package/template/src/atoms/TextInput.tsx +13 -5
- package/template/src/components/Chat.tsx +171 -139
- package/template/src/components/ChatContext.ts +14 -22
- package/template/src/components/ColorConfigure.tsx +2 -2
- package/template/src/components/Controls.native.tsx +72 -62
- package/template/src/components/Controls.tsx +90 -69
- package/template/src/components/DeviceConfigure.tsx +1 -1
- package/template/src/components/DeviceContext.tsx +14 -7
- package/template/src/components/GraphQLProvider.tsx +9 -2
- package/template/src/components/GridVideo.tsx +20 -159
- package/template/src/components/HostControlView.tsx +54 -15
- package/template/src/components/Navbar.tsx +408 -157
- package/template/src/components/NetworkQualityContext.tsx +29 -22
- package/template/src/components/ParticipantsView.tsx +97 -119
- package/template/src/components/PinnedVideo.tsx +41 -188
- package/template/src/components/Precall.native.tsx +131 -97
- package/template/src/components/Precall.tsx +193 -158
- package/template/src/components/RTMConfigure.tsx +320 -398
- package/template/src/components/Router.sdk.ts +20 -0
- package/template/src/components/SessionContext.tsx +6 -3
- package/template/src/components/Settings.native.tsx +3 -0
- package/template/src/components/Settings.tsx +65 -31
- package/template/src/components/SettingsView.tsx +14 -8
- package/template/src/components/Share.tsx +188 -220
- package/template/src/components/StorageContext.tsx +5 -5
- package/template/src/components/StoreToken.tsx +5 -1
- package/template/src/components/chat-messages/useChatMessages.tsx +202 -0
- package/template/src/components/chat-notification/useChatNotification.tsx +78 -0
- package/template/src/components/chat-ui/useChatUIControl.tsx +66 -0
- package/template/src/components/common/Error.tsx +54 -0
- package/template/src/components/common/Logo.tsx +35 -0
- package/template/src/components/common/index.tsx +8 -0
- package/template/src/components/contexts/LiveStreamDataContext.tsx +79 -0
- package/template/src/components/contexts/ScreenShareContext.tsx +47 -0
- package/template/src/components/contexts/WhiteboardContext.tsx +59 -0
- package/template/src/components/dimension/DimensionContext.ts +27 -0
- package/template/src/components/dimension/DimensionProvider.tsx +34 -0
- package/template/src/components/livestream/LiveStreamContext.tsx +293 -272
- package/template/src/components/livestream/Types.ts +26 -7
- package/template/src/components/livestream/index.ts +13 -2
- package/template/src/components/livestream/views/LiveStreamControls.tsx +5 -1
- package/template/src/components/meeting-info/useMeetingInfo.tsx +63 -0
- package/template/src/components/meeting-info/useSetMeetingInfo.tsx +38 -0
- package/template/src/components/participants/AllAudienceParticipants.tsx +26 -21
- package/template/src/components/participants/AllHostParticipants.tsx +36 -53
- package/template/src/components/participants/MeParticipant.tsx +9 -10
- package/template/src/components/participants/ParticipantName.tsx +2 -1
- package/template/src/components/participants/RemoteParticipants.tsx +3 -3
- package/template/src/components/precall/LocalMute.native.tsx +91 -0
- package/template/src/components/precall/LocalMute.tsx +90 -0
- package/template/src/components/precall/VideoPreview.native.tsx +35 -0
- package/template/src/components/precall/VideoPreview.tsx +33 -0
- package/template/src/components/precall/index.tsx +28 -0
- package/template/src/components/precall/joinCallBtn.native.tsx +69 -0
- package/template/src/components/precall/joinCallBtn.tsx +91 -0
- package/template/src/components/precall/meetingTitle.tsx +26 -0
- package/template/src/components/precall/selectDevice.tsx +46 -0
- package/template/src/components/precall/textInput.tsx +43 -0
- package/template/src/components/precall/usePreCall.tsx +41 -0
- package/template/src/components/styles.ts +20 -3
- package/template/src/components/useShareLink.tsx +222 -0
- package/template/src/components/useWakeLock.tsx +3 -3
- package/template/src/custom-events/CustomEvents.ts +197 -0
- package/template/src/custom-events/index.tsx +4 -0
- package/template/src/custom-events/types.ts +51 -0
- package/template/src/language/default-labels/commonLabels.ts +21 -0
- package/template/src/language/default-labels/createScreenLabels.ts +22 -0
- package/template/src/language/default-labels/index.ts +38 -0
- package/template/src/language/default-labels/joinScreenLabels.ts +13 -0
- package/template/src/language/default-labels/precallScreenLabels.ts +33 -0
- package/template/src/language/default-labels/shareLinkScreenLabels.ts +44 -0
- package/template/src/language/default-labels/videoCallScreenLabels.ts +189 -0
- package/template/src/language/i18nTypes.ts +10 -0
- package/template/src/language/index.ts +18 -0
- package/template/src/language/useLanguage.tsx +92 -0
- package/template/src/pages/Authenticate.tsx +21 -15
- package/template/src/pages/Create.tsx +176 -159
- package/template/src/pages/Join.tsx +44 -32
- package/template/src/pages/VideoCall.tsx +134 -406
- package/template/src/pages/create/useCreate.tsx +37 -0
- package/template/src/pages/video-call/CustomLayout.ts +17 -0
- package/template/src/pages/video-call/CustomUserContextHolder.tsx +12 -0
- package/template/src/pages/video-call/DefaultLayouts.ts +65 -0
- package/template/src/pages/video-call/NameWithMicStatus.tsx +62 -0
- package/template/src/pages/video-call/RenderComponent.tsx +52 -0
- package/template/src/pages/video-call/VideoCallScreen.tsx +191 -0
- package/template/src/pages/video-call/VideoComponent.tsx +34 -0
- package/template/src/pages/video-call/VideoRenderer.tsx +86 -0
- package/template/src/pages/video-call/index.ts +20 -0
- package/template/src/rtm/RTMEngine.ts +58 -0
- package/template/src/rtm/utils.ts +28 -0
- package/template/src/rtm-events/EventUtils.ts +268 -0
- package/template/src/rtm-events/EventsQueue.ts +38 -0
- package/template/src/rtm-events/constants.ts +40 -0
- package/template/src/rtm-events/index.tsx +8 -0
- package/template/src/rtm-events/types.ts +7 -0
- package/template/src/subComponents/ChatBubble.tsx +18 -11
- package/template/src/subComponents/ChatContainer.tsx +78 -29
- package/template/src/subComponents/ChatInput.tsx +146 -70
- package/template/src/subComponents/CopyJoinInfo.tsx +52 -67
- package/template/src/subComponents/Error.tsx +35 -24
- package/template/src/subComponents/LanguageSelector.tsx +85 -0
- package/template/src/subComponents/LayoutIconDropdown.native.tsx +163 -0
- package/template/src/subComponents/LayoutIconDropdown.tsx +198 -0
- package/template/src/subComponents/LocalAudioMute.tsx +52 -30
- package/template/src/subComponents/LocalEndCall.tsx +52 -0
- package/template/src/subComponents/LocalSwitchCamera.tsx +61 -0
- package/template/src/subComponents/LocalVideoMute.tsx +48 -30
- package/template/src/subComponents/LogoutButton.tsx +20 -5
- package/template/src/subComponents/NetworkQualityPill.tsx +43 -13
- package/template/src/subComponents/OpenInNativeButton.tsx +3 -2
- package/template/src/subComponents/Recording.tsx +46 -138
- package/template/src/subComponents/RemoteAudioMute.tsx +30 -34
- package/template/src/subComponents/RemoteEndCall.tsx +18 -7
- package/template/src/subComponents/RemoteVideoMute.tsx +17 -9
- package/template/src/subComponents/ScreenShareNotice.tsx +40 -40
- package/template/src/subComponents/SelectDevice.tsx +88 -45
- package/template/src/subComponents/SelectOAuth.tsx +30 -6
- package/template/src/subComponents/SidePanelButtons.ts +39 -0
- package/template/src/subComponents/TextWithTooltip.native.tsx +2 -1
- package/template/src/subComponents/TextWithTooltip.tsx +15 -20
- package/template/src/subComponents/chat/ChatParticipants.tsx +31 -32
- package/template/src/subComponents/livestream/ApprovedLiveStreamControlsView.tsx +7 -3
- package/template/src/subComponents/livestream/CurrentLiveStreamRequestsView.tsx +32 -18
- package/template/src/subComponents/livestream/controls/LocalRaiseHand.tsx +22 -8
- package/template/src/subComponents/livestream/controls/RemoteLiveStreamApprovedRequestRecall.tsx +12 -7
- package/template/src/subComponents/livestream/controls/RemoteLiveStreamRequestApprove.tsx +24 -27
- package/template/src/subComponents/livestream/controls/RemoteLiveStreamRequestReject.tsx +23 -26
- package/template/src/subComponents/livestream/index.ts +10 -2
- package/template/src/subComponents/recording/useRecording.tsx +209 -0
- package/template/src/subComponents/recording/useRecordingLayoutQuery.tsx +64 -0
- package/template/src/subComponents/screenshare/ScreenshareButton.native.tsx +18 -0
- package/template/src/subComponents/screenshare/ScreenshareButton.tsx +59 -31
- package/template/src/subComponents/screenshare/ScreenshareConfigure.native.tsx +57 -52
- package/template/src/subComponents/screenshare/ScreenshareConfigure.tsx +97 -138
- package/template/src/subComponents/screenshare/useScreenshare.tsx +29 -0
- package/template/src/subComponents/toastConfig.tsx +25 -20
- package/template/src/utils/IsAttendeeUser.ts +34 -0
- package/template/src/utils/SdkEvents.ts +68 -0
- package/template/src/utils/common.tsx +40 -0
- package/template/src/utils/eventEmitter.ts +29 -0
- package/template/src/utils/getMeetingInvite.ts +30 -0
- package/template/src/utils/index.tsx +11 -2
- package/template/src/utils/isAudioEnabled.ts +29 -0
- package/template/src/utils/isHostUser.ts +33 -0
- package/template/src/utils/isMobileOrTablet.native.ts +5 -0
- package/template/src/utils/{mobileWebTest.tsx → isMobileOrTablet.ts} +5 -2
- package/template/src/utils/isPSTNUser.ts +30 -0
- package/template/src/utils/isSDK.sdk.ts +5 -0
- package/template/src/utils/isSDK.ts +5 -0
- package/template/src/utils/isScreenShareUser.ts +31 -0
- package/template/src/utils/isVideoEnabled.ts +29 -0
- package/template/src/utils/useButtonTemplate.tsx +43 -0
- package/template/src/utils/useCreateMeeting.ts +74 -0
- package/template/src/utils/useGetLiveStreamingRequests.ts +24 -0
- package/template/src/utils/useGetMeetingPhrase.ts +68 -0
- package/template/src/utils/useGetName.ts +20 -0
- package/template/src/{subComponents/screenshare/ScreenshareContext.tsx → utils/useGroupMessages.ts} +10 -7
- package/template/src/utils/useJoinMeeting.ts +120 -0
- package/template/src/utils/useLayout.tsx +40 -0
- package/template/src/utils/useLiveStreamingUids.ts +26 -0
- package/template/src/utils/useMutePSTN.ts +43 -0
- package/template/src/utils/useMuteToggleLocal.ts +109 -0
- package/template/src/utils/useNavParams.ts +6 -0
- package/template/src/utils/useNavigateTo.ts +8 -0
- package/template/src/utils/usePrivateMessages.ts +33 -0
- package/template/src/utils/useRemoteEndCall.ts +27 -0
- package/template/src/utils/useRemoteMute.ts +64 -0
- package/template/src/utils/useSendControlMessage.ts +51 -0
- package/template/src/utils/useSendMessage.ts +40 -0
- package/template/src/utils/useSetName.ts +20 -0
- package/template/src/utils/useSetUnreadMessageCount.ts +43 -0
- package/template/src/utils/useSidePanel.tsx +41 -0
- package/template/src/utils/useString.ts +61 -0
- package/template/src/utils/useUnreadMessageCount.ts +50 -0
- package/template/src/utils/useUserList.ts +26 -0
- package/template/tsconfig.json +4 -4
- package/template/tsconfig_fpeApi.json +103 -0
- package/template/tsconfig_rsdk_index.json +105 -0
- package/template/tsconfig_wsdk_index.json +104 -0
- package/template/webpack.commons.js +40 -16
- package/template/webpack.main.config.js +2 -1
- package/template/webpack.renderer.config.js +1 -1
- package/template/webpack.rsdk.config.js +33 -0
- package/template/webpack.ts.config.js +89 -0
- package/template/webpack.web.config.js +8 -1
- package/template/webpack.wsdk.config.js +34 -0
- package/template/agora-rn-uikit/.git/logs/refs/heads/ab-dev-auto +0 -1
- package/template/agora-rn-uikit/.git/objects/pack/pack-0061d00cd98162a329a32b537488a35d0abeb069.idx +0 -0
- package/template/agora-rn-uikit/.git/refs/heads/ab-dev-auto +0 -1
- package/template/agora-rn-uikit/src/Contexts/MaxUidContext.tsx +0 -7
- package/template/agora-rn-uikit/src/Contexts/MinUidContext.tsx +0 -8
- package/template/src/components/participants/context/ParticipantContext.tsx +0 -97
- package/template/src/subComponents/ScreenshareButton.tsx +0 -257
- package/template/src/subComponents/SwitchCamera.tsx +0 -35
- package/template/src/utils/hasBrandLogo.tsx +0 -3
- package/template/src/utils/mobileWebTest.native.tsx +0 -5
- package/template/src/utils/shouldAuthenticate.tsx +0 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
ref: refs/heads/
|
|
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 "
|
|
14
|
+
[branch "release/fpe-1.0.0"]
|
|
15
15
|
remote = origin
|
|
16
|
-
merge = refs/heads/
|
|
16
|
+
merge = refs/heads/release/fpe-1.0.0
|
|
Binary file
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
0000000000000000000000000000000000000000 d3828abad4998b3ae014de717a63d8a20b15762a nitte93 <nitte.tiwari1993@gmail.com>
|
|
2
|
-
d3828abad4998b3ae014de717a63d8a20b15762a
|
|
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>
|
|
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>
|
|
1
|
+
0000000000000000000000000000000000000000 d3828abad4998b3ae014de717a63d8a20b15762a nitte93 <nitte.tiwari1993@gmail.com> 1659067879 +0530 clone: from https://github.com/AgoraIO-Community/ReactNative-UIKit.git
|
package/template/agora-rn-uikit/.git/objects/pack/pack-f274a85fccfc9b5112d154bb3b6d34cb4b8dedde.idx
ADDED
|
Binary file
|
|
Binary file
|
|
@@ -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
|
-
|
|
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 {
|
|
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
|
-
<
|
|
21
|
-
{(
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
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
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
2
|
+
import RenderContext from './RenderContext';
|
|
3
|
+
import {RenderInterface} from './PropsContext';
|
|
4
|
+
import {UidType} from './RtcContext';
|
|
5
5
|
|
|
6
|
-
export const LocalContext = createContext<
|
|
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
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
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
|
|
38
|
-
|
|
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?:
|
|
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
|
-
|
|
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(
|
|
106
|
-
|
|
107
|
-
|
|
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
|
|
1
|
+
import React from 'react';
|
|
2
2
|
import {CallbacksInterface} from './PropsContext';
|
|
3
3
|
import RtcEngine from 'react-native-agora';
|
|
4
|
-
import type {DualStreamMode,
|
|
4
|
+
import type {DualStreamMode, RenderInterface} from './PropsContext';
|
|
5
5
|
|
|
6
|
-
export
|
|
7
|
-
|
|
8
|
-
|
|
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={
|
|
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={
|
|
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
|
-
|
|
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
|
|
8
|
+
interface LocalAudioMuteProps {
|
|
9
9
|
btnText?: string;
|
|
10
10
|
variant?: 'outlined' | 'text';
|
|
11
11
|
}
|
|
12
|
-
function LocalAudioMute(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
|
|
8
|
+
interface LocalVideoMuteProps {
|
|
9
9
|
btnText?: string;
|
|
10
10
|
variant?: 'outlined' | 'text';
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
-
function LocalVideoMute(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
|
-
|
|
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 {
|
|
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
|
-
<
|
|
31
|
-
{(
|
|
32
|
+
<RenderConsumer>
|
|
33
|
+
{({renderList, renderPosition}) => (
|
|
32
34
|
<View style={{...styles.Controls, top: styles.Controls.top - 100}}>
|
|
33
|
-
<RemoteControls
|
|
35
|
+
<RemoteControls
|
|
36
|
+
user={renderList[renderPosition[0]]}
|
|
37
|
+
showRemoteSwap={false}
|
|
38
|
+
/>
|
|
34
39
|
</View>
|
|
35
40
|
)}
|
|
36
|
-
</
|
|
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, {
|
|
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:
|
|
12
|
+
user: RenderInterface;
|
|
9
13
|
}
|
|
10
14
|
|
|
11
15
|
const RemoteAudioMute: React.FC<RemoteAudioMuteInterface> = (props) => {
|
|
12
|
-
const {RtcEngine
|
|
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 !==
|
|
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
|
|
5
|
+
import PropsContext from '../../Contexts/PropsContext';
|
|
6
|
+
import useLocalUid from '../../Utils/useLocalUid';
|
|
6
7
|
|
|
7
8
|
interface RemoteSwapInterface {
|
|
8
|
-
|
|
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.
|
|
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.
|
|
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
|
-
|
|
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:
|
|
12
|
+
user: RenderInterface;
|
|
12
13
|
rightButton: boolean;
|
|
13
14
|
}
|
|
14
15
|
|
|
15
16
|
const RemoteVideoMute: React.FC<RemoteVideoMuteInterface> = (props) => {
|
|
16
|
-
const {RtcEngine
|
|
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 !==
|
|
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, {
|
|
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:
|
|
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
|
|
37
|
+
<RemoteSwap uid={props.user.uid} />
|
|
38
38
|
) : (
|
|
39
39
|
<></>
|
|
40
40
|
)}
|
|
@@ -1,20 +1,23 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import {
|
|
2
|
+
ActionType,
|
|
3
|
+
RenderStateInterface,
|
|
4
|
+
UidType,
|
|
5
|
+
} from '../Contexts/RtcContext';
|
|
3
6
|
|
|
4
7
|
export default function LocalMuteAudio(
|
|
5
|
-
state:
|
|
8
|
+
state: RenderStateInterface,
|
|
6
9
|
action: ActionType<'LocalMuteAudio'>,
|
|
10
|
+
localUid: UidType,
|
|
7
11
|
) {
|
|
8
|
-
let stateUpdate = {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
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 {
|
|
2
|
-
|
|
1
|
+
import {
|
|
2
|
+
ActionType,
|
|
3
|
+
RenderStateInterface,
|
|
4
|
+
UidType,
|
|
5
|
+
} from '../Contexts/RtcContext';
|
|
3
6
|
|
|
4
7
|
export default function LocalMuteVideo(
|
|
5
|
-
state:
|
|
8
|
+
state: RenderStateInterface,
|
|
6
9
|
action: ActionType<'LocalMuteVideo'>,
|
|
10
|
+
localUid: UidType,
|
|
7
11
|
) {
|
|
8
|
-
let stateUpdate = {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
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
|
}
|