agora-appbuilder-core 4.0.0-api.5 → 4.0.0-api.6
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/package.json +2 -2
- package/template/.bundle/config +2 -0
- package/template/Gemfile +4 -0
- package/template/Gulpfile.js +29 -29
- package/template/_eslintrc.js +3 -3
- package/template/_gitignore +12 -11
- package/template/_package-lock.json +26471 -22749
- package/template/_prettierrc.js +2 -2
- package/template/agora-rn-uikit/src/Contexts/PropsContext.tsx +30 -10
- package/template/agora-rn-uikit/src/Contexts/RtcContext.tsx +19 -0
- package/template/agora-rn-uikit/src/Controls/BtnTemplate.tsx +1 -0
- package/template/agora-rn-uikit/src/Controls/Icons.ts +45 -0
- package/template/agora-rn-uikit/src/Controls/Local/EndCall.tsx +6 -4
- package/template/agora-rn-uikit/src/Controls/Local/FullScreen.tsx +3 -1
- package/template/agora-rn-uikit/src/Controls/Local/LocalAudioMute.tsx +1 -0
- package/template/agora-rn-uikit/src/Controls/Local/LocalVideoMute.tsx +1 -0
- package/template/agora-rn-uikit/src/Controls/Local/SwitchCamera.tsx +1 -0
- package/template/agora-rn-uikit/src/Controls/Remote/RemoteAudioMute.tsx +1 -0
- package/template/agora-rn-uikit/src/Controls/Remote/RemoteSwap.tsx +3 -1
- package/template/agora-rn-uikit/src/Controls/Remote/RemoteVideoMute.tsx +1 -0
- package/template/agora-rn-uikit/src/Reducer/ActiveSpeaker.ts +30 -0
- package/template/agora-rn-uikit/src/Reducer/LocalMuteAudio.ts +3 -1
- package/template/agora-rn-uikit/src/Reducer/LocalMuteVideo.ts +3 -1
- package/template/agora-rn-uikit/src/Reducer/LocalPermissionState.ts +1 -1
- package/template/agora-rn-uikit/src/Reducer/RemoteAudioStateChanged.ts +3 -3
- package/template/agora-rn-uikit/src/Reducer/RemoteVideoStateChanged.ts +5 -4
- package/template/agora-rn-uikit/src/Reducer/UpdateDualStreamMode.ts +1 -1
- package/template/agora-rn-uikit/src/Reducer/UserJoined.ts +8 -5
- package/template/agora-rn-uikit/src/Reducer/UserMuteRemoteAudio.ts +1 -1
- package/template/agora-rn-uikit/src/Reducer/UserMuteRemoteVideo.ts +1 -1
- package/template/agora-rn-uikit/src/Reducer/UserOffline.ts +1 -1
- package/template/agora-rn-uikit/src/Reducer/UserPin.ts +18 -1
- package/template/agora-rn-uikit/src/Reducer/UserSecondaryPin.ts +23 -0
- package/template/agora-rn-uikit/src/Reducer/index.ts +2 -0
- package/template/agora-rn-uikit/src/Rtc/Create.tsx +47 -21
- package/template/agora-rn-uikit/src/Rtc/Join.tsx +37 -15
- package/template/agora-rn-uikit/src/RtcConfigure.tsx +122 -12
- package/template/agora-rn-uikit/src/Views/MaxVideoView.native.tsx +32 -4
- package/template/agora-rn-uikit/src/Views/MaxVideoView.tsx +21 -2
- package/template/agora-rn-uikit/src/Views/MinVideoView.tsx +2 -0
- package/template/android/app/build.gradle +59 -156
- package/template/android/app/src/debug/AndroidManifest.xml +6 -1
- package/template/android/app/src/debug/java/com/helloworld/ReactNativeFlipper.java +7 -4
- package/template/android/app/src/main/AndroidManifest.xml +6 -19
- package/template/android/app/src/main/assets/fonts/icomoon.ttf +0 -0
- package/template/android/app/src/main/java/com/helloworld/MainActivity.java +17 -0
- package/template/android/app/src/main/java/com/helloworld/MainApplication.java +19 -36
- package/template/android/app/src/release/java/com/helloworld/ReactNativeFlipper.java +20 -0
- package/template/android/build.gradle +19 -33
- package/template/android/gradle/wrapper/gradle-wrapper.jar +0 -0
- package/template/android/gradle/wrapper/gradle-wrapper.properties +3 -2
- package/template/android/gradle.properties +18 -4
- package/template/android/gradlew +165 -104
- package/template/android/gradlew.bat +12 -23
- package/template/android/settings.gradle +1 -0
- package/template/bridge/rtc/webNg/RtcEngine.ts +131 -16
- package/template/bridge/rtc/webNg/index.ts +72 -1
- package/template/bridge/rtm/web/index.ts +5 -3
- package/template/configTransform.js +16 -1
- package/template/customization-api/action-library.ts +0 -8
- package/template/customization-api/app-state.ts +11 -2
- package/template/customization-api/customEvents.ts +6 -1
- package/template/customization-api/index.ts +4 -0
- package/template/customization-api/sub-components.ts +6 -3
- package/template/customization-api/temp.ts +50 -0
- package/template/customization-api/typeDefinition.ts +26 -14
- package/template/customization-api/types.ts +26 -0
- package/template/customization-api/utils.ts +2 -0
- package/template/customization-implementation/index.ts +0 -1
- package/template/defaultConfig.js +72 -0
- package/template/global.d.ts +13 -1
- package/template/index.js +0 -4
- package/template/index.web.js +0 -5
- package/template/index.wsdk.tsx +1 -19
- package/template/ios/.xcode.env +11 -0
- package/template/ios/HelloWorld/AppDelegate.h +2 -4
- package/template/ios/HelloWorld/AppDelegate.mm +42 -0
- package/template/ios/HelloWorld/Info.plist +1 -1
- package/template/ios/HelloWorld/main.m +2 -1
- package/template/ios/HelloWorld.xcodeproj/project.pbxproj +529 -17
- package/template/ios/HelloWorld.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
- package/template/ios/HelloWorld.xcworkspace/contents.xcworkspacedata +10 -0
- package/template/ios/HelloWorld.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
- package/template/ios/HelloWorldTests/HelloWorldTests.m +14 -13
- package/template/ios/HelloWorldTests/Info.plist +2 -2
- package/template/ios/Podfile +53 -20
- package/template/ios/Podfile.lock +873 -0
- package/template/ios/ScreenSharing/Info.plist +15 -0
- package/template/ios/ScreenSharing/SampleHandler.h +9 -0
- package/template/ios/ScreenSharing/SampleHandler.m +70 -0
- package/template/jest.config.js +4 -0
- package/template/metro.config.js +7 -32
- package/template/package.json +52 -39
- package/template/react-native-toast-message/index.d.ts +3 -1
- package/template/react-native-toast-message/index.js +1 -0
- package/template/react-native-toast-message/src/components/base/index.js +20 -32
- package/template/react-native-toast-message/src/components/base/styles.js +18 -21
- package/template/react-native-toast-message/src/components/checkbox.js +24 -19
- package/template/react-native-toast-message/src/index.js +3 -1
- package/template/react-native-toast-message/src/index.sdk.tsx +4 -1
- package/template/src/App.tsx +13 -85
- package/template/src/AppRoutes.tsx +77 -0
- package/template/src/AppWrapper.tsx +38 -33
- package/template/src/SDKAppWrapper.tsx +79 -43
- package/template/src/app-state/useNoiseSupression.native.tsx +67 -0
- package/template/src/app-state/useNoiseSupression.tsx +107 -0
- package/template/src/app-state/useVideoQuality.tsx +39 -0
- package/template/src/assets/font-styles.css +171 -3
- package/template/src/assets/fonts/icomoon.ttf +0 -0
- package/template/src/assets/selection.json +1 -1
- package/template/src/atoms/ActionMenu.tsx +50 -11
- package/template/src/atoms/Avatar.tsx +51 -0
- package/template/src/atoms/Card.tsx +21 -8
- package/template/src/atoms/Carousel.native.tsx +105 -0
- package/template/src/atoms/Carousel.tsx +103 -0
- package/template/src/atoms/Checkbox.tsx +98 -0
- package/template/src/atoms/CircularProgress.tsx +0 -1
- package/template/src/atoms/ClipboardIconButton.tsx +91 -0
- package/template/src/atoms/CustomIcon.tsx +45 -0
- package/template/src/atoms/DropDownMulti.tsx +349 -0
- package/template/src/atoms/Dropdown.tsx +3 -3
- package/template/src/atoms/IconButton.tsx +52 -9
- package/template/src/atoms/ImageIcon.tsx +6 -3
- package/template/src/atoms/InlineNotification.tsx +81 -0
- package/template/src/atoms/MeetingLink.tsx +160 -0
- package/template/src/atoms/ParticipantsCount.tsx +18 -7
- package/template/src/atoms/Popup.tsx +49 -27
- package/template/src/atoms/PrimaryButton.tsx +19 -5
- package/template/src/atoms/RecordingInfo.tsx +2 -2
- package/template/src/atoms/SecondaryButton.tsx +2 -0
- package/template/src/atoms/Spacer.tsx +1 -0
- package/template/src/atoms/TertiaryButton.tsx +35 -5
- package/template/src/atoms/TextInput.tsx +2 -1
- package/template/src/atoms/Toolbar.tsx +64 -30
- package/template/src/atoms/ToolbarItem.tsx +11 -5
- package/template/src/atoms/ToolbarPreset.tsx +13 -2
- package/template/src/atoms/Tooltip.tsx +26 -4
- package/template/src/auth/AuthProvider.tsx +500 -0
- package/template/src/auth/AuthRoute.tsx +94 -0
- package/template/src/auth/IDPAuth.electron.tsx +31 -0
- package/template/src/auth/IDPAuth.tsx +67 -0
- package/template/src/auth/IDPLogoutComponent.tsx +158 -0
- package/template/src/auth/UserCancelPopup.tsx +115 -0
- package/template/src/auth/config.ts +52 -0
- package/template/src/auth/openIDPURL.electron.tsx +39 -0
- package/template/src/auth/openIDPURL.native.tsx +51 -0
- package/template/src/auth/openIDPURL.tsx +20 -0
- package/template/src/auth/useIDPAuth.electron.tsx +65 -0
- package/template/src/auth/useIDPAuth.native.tsx +70 -0
- package/template/src/auth/useIDPAuth.tsx +63 -0
- package/template/src/auth/useTokenAuth.tsx +194 -0
- package/template/src/components/Chat.tsx +5 -8
- package/template/src/components/ChatContext.ts +4 -0
- package/template/src/components/ColorConfigure.tsx +0 -1
- package/template/src/components/CommonStyles.ts +9 -2
- package/template/src/components/Controls.tsx +659 -52
- package/template/src/components/DeviceConfigure.tsx +362 -156
- package/template/src/components/DeviceContext.tsx +2 -0
- package/template/src/components/EventsConfigure.tsx +713 -109
- package/template/src/components/GraphQLProvider.tsx +62 -36
- package/template/src/components/GridVideo.tsx +23 -13
- package/template/src/components/HostControlView.tsx +11 -14
- package/template/src/components/JoinPhrase.tsx +0 -1
- package/template/src/components/Leftbar.tsx +4 -3
- package/template/src/components/Navbar.tsx +110 -42
- package/template/src/components/NavbarMobile.tsx +47 -36
- package/template/src/components/Navigation.native.tsx +1 -15
- package/template/src/{subComponents/screenshare/ScreenshareButton.native.tsx → components/Navigation.sdk.tsx} +17 -3
- package/template/src/components/Navigation.tsx +1 -15
- package/template/src/components/ParticipantsView.tsx +56 -48
- package/template/src/components/PinnedVideo.tsx +188 -114
- package/template/src/components/Precall.native.tsx +169 -67
- package/template/src/components/Precall.tsx +237 -71
- package/template/src/components/RTMConfigure.tsx +167 -55
- package/template/src/components/Rightbar.tsx +4 -3
- package/template/src/components/Router.electron.ts +1 -0
- package/template/src/components/Router.native.ts +1 -0
- package/template/src/components/Router.sdk.ts +1 -0
- package/template/src/components/Router.ts +1 -0
- package/template/src/components/SdkApiContext.tsx +179 -27
- package/template/src/components/SdkMuteToggleListener.tsx +88 -0
- package/template/src/components/SessionContext.tsx +0 -1
- package/template/src/components/Settings.tsx +25 -3
- package/template/src/components/SettingsView.tsx +44 -9
- package/template/src/components/Share.tsx +149 -71
- package/template/src/components/StorageContext.tsx +19 -5
- package/template/src/components/ToastComponent.tsx +3 -0
- package/template/src/components/WhiteboardLayout.tsx +291 -0
- package/template/src/components/chat-messages/useChatMessages.tsx +420 -207
- package/template/src/components/common/Error.tsx +2 -0
- package/template/src/components/common/Logo.tsx +2 -2
- package/template/src/components/contexts/LiveStreamDataContext.tsx +5 -4
- package/template/src/components/contexts/ScreenShareContext.tsx +15 -1
- package/template/src/components/contexts/WaitingRoomContext.tsx +50 -0
- package/template/src/components/contexts/WhiteboardContext.tsx +54 -54
- package/template/src/components/disable-chat/useDisableChat.tsx +32 -0
- package/template/src/components/livestream/LiveStreamContext.tsx +262 -177
- package/template/src/components/livestream/Types.ts +34 -18
- package/template/src/components/livestream/views/LiveStreamAttendeeLandingTile.tsx +295 -0
- package/template/src/components/livestream/views/LiveStreamControls.tsx +2 -4
- package/template/src/components/meeting-info-invite/MeetingInfo.tsx +82 -0
- package/template/src/components/meeting-info-invite/MeetingInfoCardHeader.tsx +86 -0
- package/template/src/components/meeting-info-invite/MeetingInfoGridTile.tsx +218 -0
- package/template/src/components/meeting-info-invite/MeetingInfoLinks.tsx +122 -0
- package/template/src/components/participants/AllAudienceParticipants.tsx +4 -5
- package/template/src/components/participants/AllHostParticipants.tsx +5 -6
- package/template/src/components/participants/Participant.tsx +40 -9
- package/template/src/components/participants/ParticipantSectionTitle.tsx +5 -2
- package/template/src/components/participants/ScreenshareParticipants.tsx +15 -17
- package/template/src/components/participants/UserActionMenuOptions.tsx +157 -49
- package/template/src/components/participants/WaitingRoomParticipants.tsx +74 -0
- package/template/src/components/popups/InvitePopup.tsx +110 -45
- package/template/src/components/popups/StartScreenSharePopup.native.tsx +182 -0
- package/template/src/components/popups/StartScreenSharePopup.tsx +6 -0
- package/template/src/components/popups/StopRecordingPopup.tsx +11 -5
- package/template/src/components/popups/StopScreenSharePopup.native.tsx +135 -0
- package/template/src/components/popups/StopScreenSharePopup.tsx +6 -0
- package/template/src/components/popups/WhiteboardClearAllPopup.tsx +123 -0
- package/template/src/components/precall/LocalMute.tsx +69 -45
- package/template/src/components/precall/PermissionHelper.tsx +52 -24
- package/template/src/components/precall/PreCallSettings.tsx +1 -0
- package/template/src/components/precall/VideoFallback.tsx +173 -0
- package/template/src/components/precall/VideoPreview.native.tsx +16 -50
- package/template/src/components/precall/VideoPreview.tsx +27 -162
- package/template/src/components/precall/index.tsx +2 -0
- package/template/src/components/precall/joinCallBtn.native.tsx +10 -3
- package/template/src/components/precall/joinCallBtn.tsx +11 -2
- package/template/src/components/precall/joinWaitingRoomBtn.native.tsx +210 -0
- package/template/src/components/precall/joinWaitingRoomBtn.tsx +250 -0
- package/template/src/components/precall/meetingTitle.tsx +35 -9
- package/template/src/components/precall/selectDevice.tsx +5 -5
- package/template/src/components/precall/textInput.tsx +16 -18
- package/template/src/components/precall/usePreCall.tsx +14 -4
- package/template/src/components/room-info/useRoomInfo.tsx +34 -0
- package/template/src/components/useShareLink.tsx +24 -59
- package/template/src/components/useUserPreference.tsx +73 -10
- package/template/src/components/useVideoCall.tsx +76 -3
- package/template/src/components/virtual-background/VBButton.tsx +64 -0
- package/template/src/components/virtual-background/VBCard.native.tsx +282 -0
- package/template/src/components/virtual-background/VBCard.tsx +272 -0
- package/template/src/components/virtual-background/VBPanel.tsx +279 -0
- package/template/src/components/virtual-background/VButils.native.ts +37 -0
- package/template/src/components/virtual-background/VButils.ts +104 -0
- package/template/src/components/virtual-background/VideoPreview.native.tsx +43 -0
- package/template/src/components/virtual-background/VideoPreview.tsx +106 -0
- package/template/src/components/virtual-background/imagePaths.ts +87 -0
- package/template/src/components/virtual-background/images/beachImageBase64.ts +1 -0
- package/template/src/components/virtual-background/images/bedroomImageBase64.ts +1 -0
- package/template/src/components/virtual-background/images/bookImageBase64.ts +1 -0
- package/template/src/components/virtual-background/images/earthImageBase64.ts +1 -0
- package/template/src/components/virtual-background/images/index.ts +37 -0
- package/template/src/components/virtual-background/images/lampImageBase64.ts +1 -0
- package/template/src/components/virtual-background/images/mountainsImageBase64.ts +1 -0
- package/template/src/components/virtual-background/images/office1ImageBase64.ts +1 -0
- package/template/src/components/virtual-background/images/officeImageBase64.ts +1 -0
- package/template/src/components/virtual-background/images/plantsImageBase64.ts +1 -0
- package/template/src/components/virtual-background/images/skyImageBase64.ts +1 -0
- package/template/src/components/virtual-background/images/wallImageBase64.ts +1 -0
- package/template/src/components/virtual-background/useVB.native.tsx +188 -0
- package/template/src/components/virtual-background/useVB.tsx +267 -0
- package/template/src/components/whiteboard/StrokeWidthTool.tsx +137 -0
- package/template/src/components/whiteboard/WhiteboardButton.tsx +93 -0
- package/template/src/components/whiteboard/WhiteboardCanvas.tsx +99 -0
- package/template/src/components/whiteboard/WhiteboardConfigure.native.tsx +137 -0
- package/template/src/components/whiteboard/WhiteboardConfigure.tsx +441 -0
- package/template/src/components/whiteboard/WhiteboardCursor.tsx +152 -0
- package/template/src/components/whiteboard/WhiteboardToolBox.tsx +1246 -0
- package/template/src/components/whiteboard/WhiteboardView.native.tsx +109 -0
- package/template/src/components/whiteboard/WhiteboardView.tsx +81 -0
- package/template/src/components/whiteboard/WhiteboardWidget.tsx +674 -0
- package/template/src/components/whiteboard/WhiteboardWrapper.tsx +38 -0
- package/template/src/language/default-labels/commonLabels.ts +51 -14
- package/template/src/language/default-labels/createScreenLabels.ts +97 -17
- package/template/src/language/default-labels/joinScreenLabels.ts +45 -6
- package/template/src/language/default-labels/precallScreenLabels.ts +145 -23
- package/template/src/language/default-labels/shareLinkScreenLabels.ts +85 -37
- package/template/src/language/default-labels/videoCallScreenLabels.ts +1137 -158
- package/template/src/pages/Create.tsx +125 -80
- package/template/src/pages/Join.tsx +76 -34
- package/template/src/pages/Login.tsx +26 -0
- package/template/src/pages/VideoCall.tsx +229 -114
- package/template/src/pages/video-call/ActionSheet.native.tsx +54 -7
- package/template/src/pages/video-call/ActionSheet.tsx +55 -16
- package/template/src/pages/video-call/ActionSheetContent.tsx +366 -291
- package/template/src/pages/video-call/ActionSheetHandle.tsx +7 -1
- package/template/src/pages/video-call/DefaultLayouts.ts +11 -5
- package/template/src/pages/video-call/NameWithMicIcon.tsx +17 -9
- package/template/src/pages/video-call/PinchableView.tsx +119 -0
- package/template/src/pages/video-call/RenderComponent.tsx +12 -3
- package/template/src/pages/video-call/SidePanelHeader.tsx +208 -6
- package/template/src/pages/video-call/VideoCallMobileView.tsx +140 -106
- package/template/src/pages/video-call/VideoCallScreen.native.tsx +3 -2
- package/template/src/pages/video-call/VideoCallScreen.tsx +113 -66
- package/template/src/pages/video-call/VideoComponent.tsx +53 -5
- package/template/src/pages/video-call/VideoRenderer.tsx +309 -52
- package/template/src/pages/video-call/VisibilitySensor.tsx +104 -0
- package/template/src/pages/video-call/ZoomableWrapper.native.tsx +34 -0
- package/template/src/pages/video-call/ZoomableWrapper.tsx +5 -0
- package/template/src/pages/video-call/index.ts +2 -0
- package/template/src/rtm/RTMEngine.ts +9 -4
- package/template/src/rtm-events/constants.ts +20 -0
- package/template/src/rtm-events-api/Events.ts +2 -0
- package/template/src/rtm-events-api/LocalEvents.ts +8 -0
- package/template/src/selection.json +1 -0
- package/template/src/subComponents/ChatBubble.tsx +81 -64
- package/template/src/subComponents/ChatContainer.tsx +20 -13
- package/template/src/subComponents/ChatInput.ios.tsx +11 -2
- package/template/src/subComponents/ChatInput.tsx +12 -3
- package/template/src/subComponents/Checkbox.native.tsx +46 -46
- package/template/src/subComponents/Checkbox.tsx +7 -6
- package/template/src/subComponents/CopyJoinInfo.tsx +26 -11
- package/template/src/subComponents/EndcallPopup.tsx +83 -12
- package/template/src/subComponents/LanguageSelector.tsx +34 -30
- package/template/src/subComponents/LayoutIconButton.tsx +30 -8
- package/template/src/subComponents/LayoutIconDropdown.tsx +19 -3
- package/template/src/subComponents/Loading.tsx +60 -0
- package/template/src/subComponents/LocalAudioMute.tsx +106 -30
- package/template/src/subComponents/LocalEndCall.tsx +91 -15
- package/template/src/subComponents/LocalSwitchCamera.tsx +50 -11
- package/template/src/subComponents/LocalVideoMute.tsx +126 -32
- package/template/src/subComponents/LogoutButton.tsx +1 -1
- package/template/src/subComponents/NetworkQualityPill.tsx +14 -31
- package/template/src/subComponents/Recording.tsx +23 -6
- package/template/src/subComponents/RemoteAudioMute.tsx +3 -3
- package/template/src/subComponents/RemoteMutePopup.tsx +55 -14
- package/template/src/subComponents/RemoteVideoMute.tsx +3 -3
- package/template/src/subComponents/RemoveMeetingPopup.tsx +19 -6
- package/template/src/subComponents/RemoveScreensharePopup.tsx +20 -5
- package/template/src/subComponents/ScreenShareNotice.tsx +11 -6
- package/template/src/subComponents/SelectDevice.tsx +98 -32
- package/template/src/subComponents/SidePanelEnum.tsx +2 -0
- package/template/src/subComponents/SidePanelHeader.tsx +97 -63
- package/template/src/subComponents/ToastConfig.tsx +70 -61
- package/template/src/subComponents/caption/Caption.tsx +130 -0
- package/template/src/subComponents/caption/CaptionContainer.tsx +302 -0
- package/template/src/subComponents/caption/CaptionIcon.tsx +111 -0
- package/template/src/subComponents/caption/CaptionText.tsx +182 -0
- package/template/src/subComponents/caption/DownloadTranscriptBtn.tsx +65 -0
- package/template/src/subComponents/caption/LanguageSelectorPopup.tsx +192 -0
- package/template/src/subComponents/caption/Transcript.tsx +449 -0
- package/template/src/subComponents/caption/TranscriptIcon.tsx +123 -0
- package/template/src/subComponents/caption/TranscriptText.tsx +98 -0
- package/template/src/subComponents/caption/index.ts +3 -0
- package/template/src/subComponents/caption/proto/ptoto.js +91 -0
- package/template/src/subComponents/caption/proto/test.proto +23 -0
- package/template/src/subComponents/caption/useCaption.tsx +123 -0
- package/template/src/subComponents/caption/useCaptionWidth.ts +27 -0
- package/template/src/subComponents/caption/useSTTAPI.tsx +179 -0
- package/template/src/subComponents/caption/useStreamMessageUtils.native.ts +211 -0
- package/template/src/subComponents/caption/useStreamMessageUtils.ts +235 -0
- package/template/src/subComponents/caption/useTranscriptDownload.native.ts +68 -0
- package/template/src/subComponents/caption/useTranscriptDownload.ts +52 -0
- package/template/src/subComponents/caption/utils.ts +125 -0
- package/template/src/subComponents/chat/ChatParticipants.tsx +53 -17
- package/template/src/subComponents/livestream/CurrentLiveStreamRequestsView.tsx +11 -13
- package/template/src/subComponents/livestream/controls/LocalRaiseHand.tsx +33 -9
- package/template/src/subComponents/livestream/controls/RemoteLiveStreamApprovedRequestRecall.tsx +1 -0
- package/template/src/subComponents/livestream/controls/RemoteLiveStreamRequestApprove.tsx +10 -6
- package/template/src/subComponents/livestream/controls/RemoteLiveStreamRequestReject.tsx +28 -19
- package/template/src/subComponents/recording/useRecording.tsx +49 -20
- package/template/src/subComponents/recording/useRecordingLayoutQuery.tsx +0 -1
- package/template/src/subComponents/screenshare/ScreenshareButton.tsx +29 -10
- package/template/src/subComponents/screenshare/ScreenshareConfigure.native.tsx +270 -66
- package/template/src/subComponents/screenshare/ScreenshareConfigure.tsx +182 -95
- package/template/src/subComponents/screenshare/useScreenshare.tsx +2 -0
- package/template/src/subComponents/waiting-rooms/WaitingRoomControls.tsx +85 -0
- package/template/src/subComponents/waiting-rooms/useWaitingRoomAPI.ts +75 -0
- package/template/src/theme/index.ts +9 -0
- package/template/src/utils/SdkEvents.ts +14 -0
- package/template/src/utils/SdkMethodEvents.ts +23 -3
- package/template/src/utils/axiomLogger.ts +117 -0
- package/template/src/utils/book.jpg +0 -0
- package/template/src/utils/common.tsx +118 -6
- package/template/src/utils/endCallEveryOne.ts +7 -0
- package/template/src/utils/getCustomRoute.ts +7 -0
- package/template/src/utils/index.tsx +23 -0
- package/template/src/utils/useActionSheet.tsx +50 -0
- package/template/src/utils/useActiveSpeaker.ts +3 -7
- package/template/src/utils/useAppState.ts +17 -0
- package/template/src/utils/useAsyncEffect.ts +138 -0
- package/template/src/utils/useCreateRoom.ts +8 -12
- package/template/src/utils/useDisableButton.tsx +37 -0
- package/template/src/utils/useFindActiveSpeaker.native.ts +4 -0
- package/template/src/utils/useFindActiveSpeaker.ts +335 -0
- package/template/src/utils/useIsLocalUserSpeaking.native.ts +4 -0
- package/template/src/utils/useIsLocalUserSpeaking.ts +98 -0
- package/template/src/utils/useJoinRoom.ts +97 -36
- package/template/src/utils/useMuteToggleLocal.ts +114 -96
- package/template/src/utils/useString.ts +13 -3
- package/template/static.d.ts +42 -0
- package/template/tsconfig_rsdk_index.json +3 -3
- package/template/tsconfig_wsdk_index.json +1 -1
- package/template/web/index.html +20 -0
- package/template/webpack.commons.js +21 -10
- package/template/webpack.web.config.js +7 -3
- package/template/_buckconfig +0 -6
- package/template/_gitattributes +0 -1
- package/template/android/app/_BUCK +0 -55
- package/template/android/app/build_defs.bzl +0 -19
- package/template/ios/HelloWorld/AppDelegate.m +0 -74
- package/template/src/components/OAuth.electron.tsx +0 -41
- package/template/src/components/OAuth.native.tsx +0 -55
- package/template/src/components/OAuth.tsx +0 -30
- package/template/src/components/OAuthConfig.ts +0 -77
- package/template/src/components/Settings.native.tsx +0 -21
- package/template/src/components/StoreToken.tsx +0 -39
|
@@ -1,4 +1,11 @@
|
|
|
1
|
-
import React, {
|
|
1
|
+
import React, {
|
|
2
|
+
createContext,
|
|
3
|
+
useContext,
|
|
4
|
+
useState,
|
|
5
|
+
useRef,
|
|
6
|
+
useCallback,
|
|
7
|
+
useEffect,
|
|
8
|
+
} from 'react';
|
|
2
9
|
import {StyleSheet} from 'react-native';
|
|
3
10
|
import ChatContext, {controlMessageEnum} from '../ChatContext';
|
|
4
11
|
import Toast from '../../../react-native-toast-message';
|
|
@@ -21,14 +28,65 @@ import {SidePanelType, useContent, useSidePanel} from 'customization-api';
|
|
|
21
28
|
import TertiaryButton from '../../atoms/TertiaryButton';
|
|
22
29
|
import PrimaryButton from '../../atoms/PrimaryButton';
|
|
23
30
|
import {trimText} from '../../utils/common';
|
|
31
|
+
import {useStringRef} from '../../utils/useString';
|
|
32
|
+
import {
|
|
33
|
+
livestreamRequestAlreadyProcessed,
|
|
34
|
+
livestreamToastApprovalBtnText,
|
|
35
|
+
livestreamToastDenyBtnText,
|
|
36
|
+
} from '../../language/default-labels/videoCallScreenLabels';
|
|
24
37
|
|
|
25
38
|
const LiveStreamContext = createContext(null as unknown as liveStreamContext);
|
|
26
39
|
|
|
27
40
|
export const LiveStreamContextConsumer = LiveStreamContext.Consumer;
|
|
28
41
|
|
|
29
|
-
export const LiveStreamContextProvider: React.FC<
|
|
30
|
-
|
|
31
|
-
|
|
42
|
+
export const LiveStreamContextProvider: React.FC<
|
|
43
|
+
liveStreamPropsInterface
|
|
44
|
+
> = props => {
|
|
45
|
+
const requestAlreadyProcessed = useStringRef(
|
|
46
|
+
livestreamRequestAlreadyProcessed,
|
|
47
|
+
);
|
|
48
|
+
|
|
49
|
+
const raiseHandRequestReceivedToastHeading = useStringRef(
|
|
50
|
+
LSNotificationObject.RAISE_HAND_RECEIVED.text1TranslationKey,
|
|
51
|
+
);
|
|
52
|
+
const raiseHandRequestReceivedToastSubHeading = useStringRef(
|
|
53
|
+
LSNotificationObject.RAISE_HAND_RECEIVED.text2TranslationKey,
|
|
54
|
+
);
|
|
55
|
+
|
|
56
|
+
const raiseHandRequestRecallToastHeading = useStringRef(
|
|
57
|
+
LSNotificationObject.RAISE_HAND_REQUEST_RECALL.text1TranslationKey,
|
|
58
|
+
);
|
|
59
|
+
|
|
60
|
+
const raiseHandRequestAcceptedToastHeading = useStringRef(
|
|
61
|
+
LSNotificationObject.RAISE_HAND_ACCEPTED.text1TranslationKey,
|
|
62
|
+
);
|
|
63
|
+
const raiseHandRequestAcceptedToastSubHeading = useStringRef(
|
|
64
|
+
LSNotificationObject.RAISE_HAND_ACCEPTED.text2TranslationKey,
|
|
65
|
+
);
|
|
66
|
+
|
|
67
|
+
const raiseHandRequestRejectedToastHeading = useStringRef(
|
|
68
|
+
LSNotificationObject.RAISE_HAND_REJECTED.text1TranslationKey,
|
|
69
|
+
);
|
|
70
|
+
|
|
71
|
+
const raiseHandApprovedRequestRecallToastHeading = useStringRef(
|
|
72
|
+
LSNotificationObject.RAISE_HAND_APPROVED_REQUEST_RECALL.text1TranslationKey,
|
|
73
|
+
);
|
|
74
|
+
|
|
75
|
+
const promoteAsCoHostToastHeading = useStringRef(
|
|
76
|
+
LSNotificationObject.PROMOTE_AS_CO_HOST.text1TranslationKey,
|
|
77
|
+
);
|
|
78
|
+
|
|
79
|
+
const raiseHandRequestToastHeading = useStringRef(
|
|
80
|
+
LSNotificationObject.RAISE_HAND_REQUEST.text1TranslationKey,
|
|
81
|
+
);
|
|
82
|
+
const raiseHandRequestToastSubHeading = useStringRef(
|
|
83
|
+
LSNotificationObject.RAISE_HAND_REQUEST.text2TranslationKey,
|
|
84
|
+
);
|
|
85
|
+
|
|
86
|
+
const raiseHandRequestRecallLocalToastHeading = useStringRef(
|
|
87
|
+
LSNotificationObject.RAISE_HAND_REQUEST_RECALL_LOCAL.text1TranslationKey,
|
|
88
|
+
);
|
|
89
|
+
|
|
32
90
|
const screenshareContextInstance = useScreenshare();
|
|
33
91
|
const screenshareContextInstanceRef = useRef<any>();
|
|
34
92
|
screenshareContextInstanceRef.current = screenshareContextInstance;
|
|
@@ -76,6 +134,7 @@ export const LiveStreamContextProvider: React.FC<liveStreamPropsInterface> = (
|
|
|
76
134
|
const data = Object.keys(
|
|
77
135
|
filterObject(
|
|
78
136
|
defaultContent,
|
|
137
|
+
//@ts-ignore
|
|
79
138
|
([k, v]) => v?.type === 'rtc' && v.offline === true,
|
|
80
139
|
),
|
|
81
140
|
);
|
|
@@ -112,6 +171,8 @@ export const LiveStreamContextProvider: React.FC<liveStreamPropsInterface> = (
|
|
|
112
171
|
|
|
113
172
|
const [isPendingRequestToReview, setPendingRequestToReview] = useState(false);
|
|
114
173
|
|
|
174
|
+
const allowToBePresenter = useStringRef(livestreamToastApprovalBtnText);
|
|
175
|
+
const deny = useStringRef(livestreamToastDenyBtnText);
|
|
115
176
|
const showToast = (
|
|
116
177
|
text: string,
|
|
117
178
|
text2: string,
|
|
@@ -126,7 +187,7 @@ export const LiveStreamContextProvider: React.FC<liveStreamPropsInterface> = (
|
|
|
126
187
|
<PrimaryButton
|
|
127
188
|
containerStyle={style.primaryBtn}
|
|
128
189
|
textStyle={style.primaryBtnText}
|
|
129
|
-
text=
|
|
190
|
+
text={allowToBePresenter?.current()}
|
|
130
191
|
onPress={() => {
|
|
131
192
|
hostApprovesRequestOfUID(uid);
|
|
132
193
|
Toast.hide();
|
|
@@ -136,7 +197,7 @@ export const LiveStreamContextProvider: React.FC<liveStreamPropsInterface> = (
|
|
|
136
197
|
btns.secondaryBtn = (
|
|
137
198
|
<TertiaryButton
|
|
138
199
|
containerStyle={style.secondaryBtn}
|
|
139
|
-
text=
|
|
200
|
+
text={deny?.current()}
|
|
140
201
|
onPress={() => {
|
|
141
202
|
hostRejectsRequestOfUID(uid);
|
|
142
203
|
Toast.hide();
|
|
@@ -149,6 +210,7 @@ export const LiveStreamContextProvider: React.FC<liveStreamPropsInterface> = (
|
|
|
149
210
|
}
|
|
150
211
|
|
|
151
212
|
Toast.show({
|
|
213
|
+
leadingIconName: 'info',
|
|
152
214
|
type: 'info',
|
|
153
215
|
text1: text,
|
|
154
216
|
text2: text2 ? text2 : null,
|
|
@@ -179,7 +241,7 @@ export const LiveStreamContextProvider: React.FC<liveStreamPropsInterface> = (
|
|
|
179
241
|
) => {
|
|
180
242
|
if (userUID && !isEmptyObject(payload)) {
|
|
181
243
|
const userId = `${userUID}`;
|
|
182
|
-
setRaiseHandList(
|
|
244
|
+
setRaiseHandList(oldRaisedHandList => ({
|
|
183
245
|
...oldRaisedHandList,
|
|
184
246
|
[userId]: {
|
|
185
247
|
raised: payload?.raised || RaiseHandValue.FALSE,
|
|
@@ -218,9 +280,9 @@ export const LiveStreamContextProvider: React.FC<liveStreamPropsInterface> = (
|
|
|
218
280
|
PersistanceLevel.Sender,
|
|
219
281
|
);
|
|
220
282
|
//update local cohost state
|
|
221
|
-
setCoHostUids(
|
|
283
|
+
setCoHostUids(prevState => {
|
|
222
284
|
return [
|
|
223
|
-
...prevState.filter(
|
|
285
|
+
...prevState.filter(i => i !== parseInt(localUidRef.current)),
|
|
224
286
|
];
|
|
225
287
|
});
|
|
226
288
|
// Audience notfies all users that co-host permission removed
|
|
@@ -249,7 +311,7 @@ export const LiveStreamContextProvider: React.FC<liveStreamPropsInterface> = (
|
|
|
249
311
|
PersistanceLevel.Sender,
|
|
250
312
|
);
|
|
251
313
|
//update local cohost state
|
|
252
|
-
setCoHostUids(
|
|
314
|
+
setCoHostUids(prevState => {
|
|
253
315
|
return [...prevState, localUidRef.current];
|
|
254
316
|
});
|
|
255
317
|
// Audience notfies all users that co-host has joined
|
|
@@ -299,8 +361,8 @@ export const LiveStreamContextProvider: React.FC<liveStreamPropsInterface> = (
|
|
|
299
361
|
|
|
300
362
|
/** ******* SETTING UP ROLES BEGINS ******* */
|
|
301
363
|
React.useEffect(() => {
|
|
302
|
-
events.on(EventNames.ROLE_ATTRIBUTE,
|
|
303
|
-
setRaiseHandList(
|
|
364
|
+
const unsubRoleAttribute = events.on(EventNames.ROLE_ATTRIBUTE, data => {
|
|
365
|
+
setRaiseHandList(prevState => {
|
|
304
366
|
return {
|
|
305
367
|
...prevState,
|
|
306
368
|
[data.sender]: {
|
|
@@ -313,6 +375,10 @@ export const LiveStreamContextProvider: React.FC<liveStreamPropsInterface> = (
|
|
|
313
375
|
};
|
|
314
376
|
});
|
|
315
377
|
});
|
|
378
|
+
|
|
379
|
+
return () => {
|
|
380
|
+
unsubRoleAttribute();
|
|
381
|
+
};
|
|
316
382
|
}, []);
|
|
317
383
|
|
|
318
384
|
React.useEffect(() => {
|
|
@@ -324,7 +390,7 @@ export const LiveStreamContextProvider: React.FC<liveStreamPropsInterface> = (
|
|
|
324
390
|
),
|
|
325
391
|
PersistanceLevel.Sender,
|
|
326
392
|
);
|
|
327
|
-
setRaiseHandList(
|
|
393
|
+
setRaiseHandList(prevState => {
|
|
328
394
|
return {
|
|
329
395
|
...prevState,
|
|
330
396
|
[localUid]: {
|
|
@@ -342,178 +408,200 @@ export const LiveStreamContextProvider: React.FC<liveStreamPropsInterface> = (
|
|
|
342
408
|
|
|
343
409
|
React.useEffect(() => {
|
|
344
410
|
/** ********************** HOST EVENTS SECTION BEGINS ********************** */
|
|
345
|
-
events.on(
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
411
|
+
const unsubRaisedAttribute = events.on(
|
|
412
|
+
EventNames.RAISED_ATTRIBUTE,
|
|
413
|
+
data => {
|
|
414
|
+
if (!isHost) return;
|
|
415
|
+
const payload = JSON.parse(data.payload);
|
|
416
|
+
const action = payload.action;
|
|
417
|
+
const value = payload.value;
|
|
418
|
+
const isProcessed = payload?.isProcessed || false;
|
|
419
|
+
|
|
420
|
+
switch (action) {
|
|
421
|
+
// 1. Host can receive raise hand request with true or false value
|
|
422
|
+
case LiveStreamControlMessageEnum.raiseHandRequest:
|
|
423
|
+
switch (value) {
|
|
424
|
+
case RaiseHandValue.TRUE:
|
|
425
|
+
// Step 1: Show notifications
|
|
426
|
+
if (
|
|
427
|
+
payload.ts > rtmInitTimstamp &&
|
|
428
|
+
sidePanelRef.current !== SidePanelType.Participants
|
|
429
|
+
) {
|
|
430
|
+
showToast(
|
|
431
|
+
raiseHandRequestReceivedToastHeading?.current(
|
|
432
|
+
trimText(getAttendeeName(data.sender)),
|
|
433
|
+
),
|
|
434
|
+
raiseHandRequestReceivedToastSubHeading?.current(),
|
|
435
|
+
data.sender,
|
|
436
|
+
data.ts,
|
|
437
|
+
);
|
|
438
|
+
}
|
|
439
|
+
// 2. All Hosts in channel update their raised state to "true" when attendee raise their hand
|
|
440
|
+
addOrUpdateLiveStreamRequest(data.sender, {
|
|
441
|
+
ts: data.ts,
|
|
442
|
+
raised: RaiseHandValue.TRUE,
|
|
443
|
+
role: ClientRole.Audience,
|
|
444
|
+
isProcessed: isProcessed,
|
|
445
|
+
});
|
|
446
|
+
break;
|
|
447
|
+
case RaiseHandValue.FALSE:
|
|
448
|
+
// Step 1: Show notifications
|
|
449
|
+
if (
|
|
450
|
+
payload.ts > rtmInitTimstamp &&
|
|
451
|
+
sidePanelRef.current !== SidePanelType.Participants
|
|
452
|
+
) {
|
|
453
|
+
showToast(
|
|
454
|
+
raiseHandRequestRecallToastHeading?.current(
|
|
455
|
+
trimText(getAttendeeName(data.sender)),
|
|
456
|
+
),
|
|
457
|
+
null,
|
|
458
|
+
);
|
|
459
|
+
}
|
|
460
|
+
// 2. All Hosts in channel update raised state to "false" when attendee recalls their request
|
|
461
|
+
addOrUpdateLiveStreamRequest(data.sender, {
|
|
462
|
+
ts: data.ts,
|
|
463
|
+
raised: RaiseHandValue.FALSE,
|
|
464
|
+
role: ClientRole.Audience,
|
|
465
|
+
isProcessed: isProcessed,
|
|
466
|
+
});
|
|
467
|
+
default:
|
|
468
|
+
break;
|
|
469
|
+
}
|
|
470
|
+
break;
|
|
471
|
+
// 2. All Hosts in channel gets notified when an attendee's request gets approved or rejected
|
|
472
|
+
case LiveStreamControlMessageEnum.notifyHostsInChannel:
|
|
473
|
+
if (!isHost) return;
|
|
474
|
+
switch (value) {
|
|
475
|
+
case RaiseHandValue.TRUE:
|
|
476
|
+
addOrUpdateLiveStreamRequest(data.sender, {
|
|
477
|
+
ts: data.ts,
|
|
478
|
+
raised: RaiseHandValue.TRUE,
|
|
479
|
+
role: ClientRole.Broadcaster,
|
|
480
|
+
isProcessed: isProcessed,
|
|
481
|
+
});
|
|
482
|
+
break;
|
|
483
|
+
case RaiseHandValue.FALSE:
|
|
484
|
+
addOrUpdateLiveStreamRequest(data.sender, {
|
|
485
|
+
ts: data.ts,
|
|
486
|
+
raised: RaiseHandValue.FALSE,
|
|
487
|
+
role: ClientRole.Audience,
|
|
488
|
+
isProcessed: isProcessed,
|
|
489
|
+
});
|
|
490
|
+
break;
|
|
491
|
+
default:
|
|
492
|
+
break;
|
|
493
|
+
}
|
|
494
|
+
break;
|
|
495
|
+
default:
|
|
496
|
+
break;
|
|
497
|
+
}
|
|
498
|
+
},
|
|
499
|
+
);
|
|
431
500
|
/** ********************** HOST EVENTS SECTION ENDS ********************** */
|
|
432
501
|
|
|
433
502
|
/** ********************** AUDIENCE EVENTS SECTION BEGINS ********************** */
|
|
434
503
|
// 1. Audience receives this when the request is accepted by host
|
|
435
|
-
events.on(
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
504
|
+
const unsubRaiseHandReqAcpt = events.on(
|
|
505
|
+
LiveStreamControlMessageEnum.raiseHandRequestAccepted,
|
|
506
|
+
data => {
|
|
507
|
+
if (raiseHandList[localUidRef.current]?.raised === RaiseHandValue.FALSE)
|
|
508
|
+
return;
|
|
509
|
+
showToast(
|
|
510
|
+
raiseHandRequestAcceptedToastHeading?.current(),
|
|
511
|
+
raiseHandRequestAcceptedToastSubHeading?.current(),
|
|
512
|
+
);
|
|
513
|
+
// Promote user's privileges to host
|
|
514
|
+
changeClientRoleTo(ClientRole.Broadcaster);
|
|
515
|
+
// Audience updates its local attributes and notfies all host when request is approved
|
|
516
|
+
UpdtLocStateAndBCastAttr(ClientRole.Broadcaster, data.ts);
|
|
517
|
+
},
|
|
518
|
+
);
|
|
447
519
|
/** 2. Audience receives this when the request is rejected by host
|
|
448
520
|
* 2.a Audience receives this when the request is rejected by host which is not yet approved
|
|
449
521
|
* 2.b Audience receives this when the request when is demoted by the host
|
|
450
522
|
*/
|
|
451
|
-
events.on(
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
523
|
+
const unsubRaiseHandReqRej = events.on(
|
|
524
|
+
LiveStreamControlMessageEnum.raiseHandRequestRejected,
|
|
525
|
+
data => {
|
|
526
|
+
/** 2.a */
|
|
527
|
+
if (
|
|
528
|
+
raiseHandListRef.current[localUidRef.current].role ==
|
|
529
|
+
ClientRole.Audience
|
|
530
|
+
) {
|
|
531
|
+
showToast(raiseHandRequestRejectedToastHeading?.current(), null);
|
|
532
|
+
} else if (
|
|
533
|
+
raiseHandListRef.current[localUidRef.current].role ==
|
|
534
|
+
ClientRole.Broadcaster
|
|
535
|
+
) {
|
|
536
|
+
/** 2.b */
|
|
537
|
+
showToast(
|
|
538
|
+
raiseHandApprovedRequestRecallToastHeading?.current(),
|
|
539
|
+
null,
|
|
540
|
+
);
|
|
541
|
+
screenshareContextInstanceRef?.current?.stopUserScreenShare(); // This will not exist on ios
|
|
542
|
+
|
|
543
|
+
// Demote user's privileges to audience
|
|
544
|
+
changeClientRoleTo(ClientRole.Audience);
|
|
545
|
+
}
|
|
546
|
+
// Audience updates its local attributes and notfies all host when demoted/request rejected
|
|
547
|
+
UpdtLocStateAndBCastAttr(ClientRole.Audience, data.ts);
|
|
548
|
+
},
|
|
549
|
+
);
|
|
478
550
|
// 3. Audience when receives kickUser notifies all host when is kicked out
|
|
479
|
-
events.on(controlMessageEnum.kickUser,
|
|
551
|
+
const unsubKickUser = events.on(controlMessageEnum.kickUser, data => {
|
|
480
552
|
// Audience updates its local attributes and notfies all host when they(audience) are kicked out
|
|
481
553
|
UpdtLocStateAndBCastAttr(ClientRole.Audience, data.ts);
|
|
482
554
|
});
|
|
483
555
|
// 4. Host promote audience as co-host
|
|
484
|
-
events.on(
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
556
|
+
const unsubPromoteAsCoHost = events.on(
|
|
557
|
+
LiveStreamControlMessageEnum.promoteAsCoHost,
|
|
558
|
+
data => {
|
|
559
|
+
showToast(promoteAsCoHostToastHeading.current(), null);
|
|
560
|
+
// Promote user's privileges to host
|
|
561
|
+
changeClientRoleTo(ClientRole.Broadcaster);
|
|
562
|
+
// Audience updates its local attributes and notfies all host when request is approved
|
|
563
|
+
UpdtLocStateAndBCastAttr(ClientRole.Broadcaster, data.ts);
|
|
564
|
+
},
|
|
565
|
+
);
|
|
494
566
|
// 4. New co-host has joined
|
|
495
|
-
events.on(
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
567
|
+
const unsubCoHostJoined = events.on(
|
|
568
|
+
LiveStreamControlMessageEnum.coHostJoined,
|
|
569
|
+
({payload}) => {
|
|
570
|
+
try {
|
|
571
|
+
const data = JSON.parse(payload);
|
|
572
|
+
if (data?.uid) {
|
|
573
|
+
setCoHostUids(prevState => {
|
|
574
|
+
return [...prevState, parseInt(data.uid)];
|
|
575
|
+
});
|
|
576
|
+
}
|
|
577
|
+
} catch (error) {}
|
|
578
|
+
},
|
|
579
|
+
);
|
|
505
580
|
// 5. Co-host removed
|
|
506
|
-
events.on(
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
581
|
+
const unsubCoHostRemoved = events.on(
|
|
582
|
+
LiveStreamControlMessageEnum.coHostRemoved,
|
|
583
|
+
({payload}) => {
|
|
584
|
+
try {
|
|
585
|
+
const data = JSON.parse(payload);
|
|
586
|
+
if (data?.uid) {
|
|
587
|
+
setCoHostUids(prevState => {
|
|
588
|
+
return [...prevState.filter(i => i !== parseInt(data.uid))];
|
|
589
|
+
});
|
|
590
|
+
}
|
|
591
|
+
} catch (error) {}
|
|
592
|
+
},
|
|
593
|
+
);
|
|
516
594
|
/** ********************** AUDIENCE EVENTS SECTION ENDS ********************** */
|
|
595
|
+
|
|
596
|
+
return () => {
|
|
597
|
+
unsubRaisedAttribute();
|
|
598
|
+
unsubRaiseHandReqAcpt();
|
|
599
|
+
unsubRaiseHandReqRej();
|
|
600
|
+
unsubKickUser();
|
|
601
|
+
unsubPromoteAsCoHost();
|
|
602
|
+
unsubCoHostJoined();
|
|
603
|
+
unsubCoHostRemoved();
|
|
604
|
+
};
|
|
517
605
|
}, []);
|
|
518
606
|
|
|
519
607
|
/** ******* EVENT LISTENERS SECTION ENDS ******* */
|
|
@@ -540,7 +628,7 @@ export const LiveStreamContextProvider: React.FC<liveStreamPropsInterface> = (
|
|
|
540
628
|
} else {
|
|
541
629
|
Toast.hide();
|
|
542
630
|
setTimeout(() => {
|
|
543
|
-
showToast(
|
|
631
|
+
showToast(requestAlreadyProcessed?.current(), null);
|
|
544
632
|
});
|
|
545
633
|
}
|
|
546
634
|
};
|
|
@@ -561,7 +649,7 @@ export const LiveStreamContextProvider: React.FC<liveStreamPropsInterface> = (
|
|
|
561
649
|
} else {
|
|
562
650
|
Toast.hide();
|
|
563
651
|
setTimeout(() => {
|
|
564
|
-
showToast(
|
|
652
|
+
showToast(requestAlreadyProcessed?.current(), null);
|
|
565
653
|
});
|
|
566
654
|
}
|
|
567
655
|
};
|
|
@@ -590,8 +678,8 @@ export const LiveStreamContextProvider: React.FC<liveStreamPropsInterface> = (
|
|
|
590
678
|
if (raiseHandList[localUidRef.current]?.raised === RaiseHandValue.TRUE)
|
|
591
679
|
return;
|
|
592
680
|
showToast(
|
|
593
|
-
|
|
594
|
-
|
|
681
|
+
raiseHandRequestToastHeading?.current(),
|
|
682
|
+
raiseHandRequestToastSubHeading?.current(),
|
|
595
683
|
);
|
|
596
684
|
events.send(
|
|
597
685
|
EventNames.RAISED_ATTRIBUTE,
|
|
@@ -638,10 +726,7 @@ export const LiveStreamContextProvider: React.FC<liveStreamPropsInterface> = (
|
|
|
638
726
|
PersistanceLevel.Sender,
|
|
639
727
|
);
|
|
640
728
|
UpdtLocStateAndBCastAttr(ClientRole.Audience, new Date().getTime());
|
|
641
|
-
showToast(
|
|
642
|
-
LSNotificationObject.RAISE_HAND_REQUEST_RECALL_LOCAL.text1,
|
|
643
|
-
LSNotificationObject.RAISE_HAND_REQUEST_RECALL_LOCAL.text2,
|
|
644
|
-
);
|
|
729
|
+
showToast(raiseHandRequestRecallLocalToastHeading?.current(), null);
|
|
645
730
|
};
|
|
646
731
|
|
|
647
732
|
/** ******* AUDIENCE CONTROLS SECTION ENDS ******* */
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
// DECLARE ENUMS & CONTANTS
|
|
2
|
+
import {TextDataInterface} from '../../language/default-labels';
|
|
2
3
|
import {ClientRole} from '../../../agora-rn-uikit';
|
|
3
4
|
|
|
4
5
|
export enum RaiseHandValue {
|
|
@@ -20,6 +21,19 @@ export interface raiseHandItemInterface {
|
|
|
20
21
|
}
|
|
21
22
|
|
|
22
23
|
import {UidType} from '../../../agora-rn-uikit';
|
|
24
|
+
import {
|
|
25
|
+
livestreamPromoteAsCoHostToastHeading,
|
|
26
|
+
livestreamRaiseHandApprovedRequestRecallToastHeading,
|
|
27
|
+
livestreamRaiseHandRequestAcceptedToastHeading,
|
|
28
|
+
livestreamRaiseHandRequestAcceptedToastSubHeading,
|
|
29
|
+
livestreamRaiseHandRequestRecallLocalToastHeading,
|
|
30
|
+
livestreamRaiseHandRequestRecallToastHeading,
|
|
31
|
+
livestreamRaiseHandRequestReceivedToastHeading,
|
|
32
|
+
livestreamRaiseHandRequestReceivedToastSubHeading,
|
|
33
|
+
livestreamRaiseHandRequestRejectedToastHeading,
|
|
34
|
+
livestreamRaiseHandRequestToastHeading,
|
|
35
|
+
livestreamRaiseHandRequestToastSubHeading,
|
|
36
|
+
} from '../../language/default-labels/videoCallScreenLabels';
|
|
23
37
|
|
|
24
38
|
export enum requestStatus {
|
|
25
39
|
AwaitingAction = 'AWAITING_ACTION',
|
|
@@ -47,40 +61,42 @@ export enum LiveStreamControlMessageEnum {
|
|
|
47
61
|
coHostJoined = 'CO_HOST_JOINED',
|
|
48
62
|
coHostRemoved = 'CO_HOST_REMOVED',
|
|
49
63
|
}
|
|
64
|
+
interface LSNotificationObjectInterface {
|
|
65
|
+
[key: string]: {
|
|
66
|
+
//text1: string;
|
|
67
|
+
//text2: string | null;
|
|
50
68
|
|
|
51
|
-
|
|
69
|
+
text1TranslationKey: keyof TextDataInterface;
|
|
70
|
+
text2TranslationKey?: keyof TextDataInterface;
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
export const LSNotificationObject: LSNotificationObjectInterface = {
|
|
52
74
|
[LiveStreamControlMessageEnum.raiseHandRequest]: {
|
|
53
|
-
|
|
54
|
-
|
|
75
|
+
text1TranslationKey: livestreamRaiseHandRequestToastHeading,
|
|
76
|
+
text2TranslationKey: livestreamRaiseHandRequestToastSubHeading,
|
|
55
77
|
},
|
|
56
78
|
[LiveStreamControlMessageEnum.raiseHandRequestReceived]: {
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
'Once approved they will be able to speak, share their video and present during this call.',
|
|
79
|
+
text1TranslationKey: livestreamRaiseHandRequestReceivedToastHeading,
|
|
80
|
+
text2TranslationKey: livestreamRaiseHandRequestReceivedToastSubHeading,
|
|
60
81
|
},
|
|
61
82
|
[LiveStreamControlMessageEnum.raiseHandRequestAccepted]: {
|
|
62
|
-
|
|
63
|
-
|
|
83
|
+
text1TranslationKey: livestreamRaiseHandRequestAcceptedToastHeading,
|
|
84
|
+
text2TranslationKey: livestreamRaiseHandRequestAcceptedToastSubHeading,
|
|
64
85
|
},
|
|
65
86
|
[LiveStreamControlMessageEnum.raiseHandRequestRejected]: {
|
|
66
|
-
|
|
67
|
-
text2: null,
|
|
87
|
+
text1TranslationKey: livestreamRaiseHandRequestRejectedToastHeading,
|
|
68
88
|
},
|
|
69
89
|
[LiveStreamControlMessageEnum.raiseHandRequestRecall]: {
|
|
70
|
-
|
|
71
|
-
text2: null,
|
|
90
|
+
text1TranslationKey: livestreamRaiseHandRequestRecallToastHeading,
|
|
72
91
|
},
|
|
73
92
|
[LiveStreamControlMessageEnum.raiseHandRequestRecallLocal]: {
|
|
74
|
-
|
|
75
|
-
text2: null,
|
|
93
|
+
text1TranslationKey: livestreamRaiseHandRequestRecallLocalToastHeading,
|
|
76
94
|
},
|
|
77
95
|
[LiveStreamControlMessageEnum.raiseHandApprovedRequestRecall]: {
|
|
78
|
-
|
|
79
|
-
text2: null,
|
|
96
|
+
text1TranslationKey: livestreamRaiseHandApprovedRequestRecallToastHeading,
|
|
80
97
|
},
|
|
81
98
|
[LiveStreamControlMessageEnum.promoteAsCoHost]: {
|
|
82
|
-
|
|
83
|
-
text2: null,
|
|
99
|
+
text1TranslationKey: livestreamPromoteAsCoHostToastHeading,
|
|
84
100
|
},
|
|
85
101
|
};
|
|
86
102
|
|