agora-appbuilder-core 4.0.0-test.2 → 4.0.1
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 +3 -3
- package/template/.bundle/config +2 -0
- package/template/Gemfile +4 -0
- package/template/Gulpfile.js +22 -22
- package/template/_eslintrc.js +3 -3
- package/template/_gitignore +12 -11
- package/template/_package-lock.json +20328 -20229
- package/template/_prettierrc.js +2 -2
- package/template/agora-rn-uikit/.eslintrc.js +5 -0
- package/template/agora-rn-uikit/package.json +14 -14
- package/template/agora-rn-uikit/src/AgoraUIKit.tsx +6 -6
- package/template/agora-rn-uikit/src/Contexts/ContentContext.tsx +10 -0
- package/template/agora-rn-uikit/src/Contexts/DispatchContext.tsx +22 -0
- package/template/agora-rn-uikit/src/Contexts/LocalUserContext.tsx +6 -6
- package/template/agora-rn-uikit/src/Contexts/PropsContext.tsx +78 -38
- package/template/agora-rn-uikit/src/Contexts/RtcContext.tsx +26 -17
- package/template/agora-rn-uikit/src/Controls/BtnTemplate.tsx +1 -0
- package/template/agora-rn-uikit/src/Controls/Icons.ts +39 -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 +5 -2
- package/template/agora-rn-uikit/src/Controls/Local/LocalVideoMute.tsx +5 -2
- package/template/agora-rn-uikit/src/Controls/Local/Recording.tsx +0 -2
- package/template/agora-rn-uikit/src/Controls/Local/SwitchCamera.tsx +7 -6
- package/template/agora-rn-uikit/src/Controls/LocalControls.tsx +5 -5
- package/template/agora-rn-uikit/src/Controls/Remote/RemoteAudioMute.tsx +5 -4
- package/template/agora-rn-uikit/src/Controls/Remote/RemoteSwap.tsx +3 -1
- package/template/agora-rn-uikit/src/Controls/Remote/RemoteVideoMute.tsx +5 -4
- package/template/agora-rn-uikit/src/Controls/RemoteControls.tsx +2 -2
- package/template/agora-rn-uikit/src/Reducer/ActiveSpeaker.ts +30 -0
- package/template/agora-rn-uikit/src/Reducer/LocalMuteAudio.ts +8 -7
- package/template/agora-rn-uikit/src/Reducer/LocalMuteVideo.ts +8 -7
- package/template/agora-rn-uikit/src/Reducer/LocalPermissionState.ts +6 -7
- package/template/agora-rn-uikit/src/Reducer/RemoteAudioStateChanged.ts +7 -8
- package/template/agora-rn-uikit/src/Reducer/RemoteVideoStateChanged.ts +9 -9
- package/template/agora-rn-uikit/src/Reducer/UpdateDualStreamMode.ts +7 -8
- package/template/agora-rn-uikit/src/Reducer/UserJoined.ts +14 -13
- package/template/agora-rn-uikit/src/Reducer/UserMuteRemoteAudio.ts +6 -7
- package/template/agora-rn-uikit/src/Reducer/UserMuteRemoteVideo.ts +6 -7
- package/template/agora-rn-uikit/src/Reducer/UserOffline.ts +5 -6
- package/template/agora-rn-uikit/src/Reducer/UserPin.ts +20 -3
- package/template/agora-rn-uikit/src/Reducer/UserSecondaryPin.ts +23 -0
- package/template/agora-rn-uikit/src/Reducer/index.ts +2 -1
- package/template/agora-rn-uikit/src/Rtc/Create.tsx +117 -111
- package/template/agora-rn-uikit/src/Rtc/Join.tsx +46 -27
- package/template/agora-rn-uikit/src/RtcConfigure.tsx +174 -75
- package/template/agora-rn-uikit/src/Utils/isBotUser.ts +15 -0
- package/template/agora-rn-uikit/src/Utils/quality.tsx +2 -2
- package/template/agora-rn-uikit/src/Views/MaxVideoView.native.tsx +41 -19
- package/template/agora-rn-uikit/src/Views/MaxVideoView.tsx +37 -17
- package/template/agora-rn-uikit/src/Views/MinVideoView.tsx +19 -11
- package/template/agora-rn-uikit/src/index.ts +15 -9
- 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 +22 -36
- package/template/android/app/src/main/java/com/helloworld/SSLPinningFactory.java +30 -0
- package/template/android/app/src/main/res/values/strings.xml +3 -0
- package/template/android/app/src/release/java/com/helloworld/ReactNativeFlipper.java +20 -0
- package/template/android/build.gradle +17 -31
- 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 +191 -71
- package/template/bridge/rtc/webNg/{SurfaceView.tsx → RtcSurfaceView.tsx} +20 -26
- package/template/bridge/rtc/webNg/Types.ts +20 -5
- package/template/bridge/rtc/webNg/index.ts +81 -14
- package/template/bridge/rtm/web/index.ts +5 -3
- package/template/configTransform.js +16 -1
- package/template/customization-api/action-library.ts +4 -16
- package/template/customization-api/app-state.ts +15 -8
- package/template/customization-api/customEvents.ts +7 -2
- package/template/customization-api/customize.ts +1 -1
- package/template/customization-api/index.ts +4 -0
- package/template/customization-api/sub-components.ts +17 -16
- package/template/customization-api/temp.ts +52 -0
- package/template/customization-api/typeDefinition.ts +32 -45
- package/template/customization-api/types.ts +26 -0
- package/template/customization-api/utils.ts +4 -0
- package/template/customization-implementation/index.ts +0 -1
- package/template/defaultConfig.js +72 -0
- package/template/global.d.ts +9 -1
- package/template/index.js +1 -4
- package/template/index.web.js +0 -5
- package/template/ios/.xcode.env +11 -0
- package/template/ios/HelloWorld/AppDelegate.h +2 -4
- package/template/ios/HelloWorld/AppDelegate.mm +64 -0
- package/template/ios/HelloWorld/HelloWorldDebug.entitlements +10 -0
- package/template/ios/HelloWorld/Info.plist +7 -1
- package/template/ios/HelloWorld/main.m +2 -1
- package/template/ios/HelloWorld.xcodeproj/project.pbxproj +81 -119
- 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 +51 -21
- package/template/ios/Podfile.lock +553 -294
- package/template/jest.config.js +4 -0
- package/template/metro.config.js +7 -32
- package/template/package.json +48 -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 +79 -22
- package/template/src/AppRoutes.tsx +48 -3
- package/template/src/AppWrapper.tsx +25 -21
- package/template/src/SDKAppWrapper.tsx +11 -11
- package/template/src/app-state/useLocalUserInfo.ts +3 -3
- 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 +174 -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 +46 -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 +18 -5
- package/template/src/atoms/InlineNotification.tsx +81 -0
- package/template/src/atoms/InviteInfo.tsx +4 -4
- package/template/src/atoms/MeetingLink.tsx +160 -0
- package/template/src/atoms/ParticipantsCount.tsx +20 -8
- package/template/src/atoms/Popup.tsx +46 -26
- package/template/src/atoms/PrimaryButton.tsx +19 -5
- package/template/src/atoms/RecordingInfo.tsx +8 -5
- 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 +102 -0
- package/template/src/atoms/ToolbarItem.tsx +85 -0
- package/template/src/atoms/ToolbarMenu.tsx +40 -0
- package/template/src/atoms/ToolbarMenuItem.tsx +104 -0
- package/template/src/atoms/ToolbarPreset.tsx +71 -0
- package/template/src/atoms/Tooltip.tsx +30 -13
- package/template/src/atoms/pagination/Pagination.tsx +127 -0
- package/template/src/atoms/pagination/usePagination.tsx +88 -0
- package/template/src/auth/AuthProvider.tsx +30 -32
- package/template/src/auth/AuthRoute.tsx +11 -3
- package/template/src/auth/IDPAuth.electron.tsx +4 -3
- package/template/src/auth/IDPAuth.tsx +10 -2
- package/template/src/auth/IDPLogoutComponent.tsx +14 -5
- package/template/src/auth/UserCancelPopup.tsx +11 -4
- package/template/src/auth/openIDPURL.electron.tsx +5 -4
- package/template/src/auth/openIDPURL.tsx +1 -1
- package/template/src/auth/useIDPAuth.electron.tsx +6 -3
- package/template/src/auth/useIDPAuth.tsx +0 -4
- package/template/src/auth/useTokenAuth.tsx +10 -8
- package/template/src/components/Chat.tsx +97 -78
- package/template/src/components/ChatContext.ts +2 -0
- package/template/src/components/ColorConfigure.tsx +0 -1
- package/template/src/components/CommonStyles.ts +9 -2
- package/template/src/components/Controls.tsx +914 -182
- package/template/src/components/Controls1.native.tsx +9 -5
- package/template/src/components/DeviceConfigure.native.tsx +2 -2
- package/template/src/components/DeviceConfigure.tsx +88 -43
- package/template/src/components/DeviceContext.tsx +2 -0
- package/template/src/components/EventsConfigure.tsx +685 -81
- package/template/src/components/GraphQLProvider.tsx +51 -33
- package/template/src/components/GridVideo.tsx +30 -16
- package/template/src/components/HostControlView.tsx +11 -14
- package/template/src/components/JoinPhrase.tsx +0 -1
- package/template/src/components/Leftbar.tsx +110 -0
- package/template/src/components/Navbar.tsx +296 -149
- package/template/src/components/NavbarMobile.tsx +119 -0
- package/template/src/components/NetworkQualityContext.tsx +12 -6
- package/template/src/components/ParticipantsView.tsx +62 -55
- package/template/src/components/PinnedVideo.tsx +191 -119
- package/template/src/components/Precall.native.tsx +155 -72
- package/template/src/components/Precall.tsx +225 -73
- package/template/src/components/RTMConfigure.tsx +180 -63
- package/template/src/components/Rightbar.tsx +112 -0
- package/template/src/components/SdkApiContext.tsx +26 -24
- package/template/src/components/SdkMuteToggleListener.tsx +8 -12
- package/template/src/components/SessionContext.tsx +0 -1
- package/template/src/components/Settings.tsx +33 -4
- package/template/src/components/SettingsView.tsx +42 -9
- package/template/src/components/Share.tsx +130 -72
- package/template/src/components/StorageContext.tsx +5 -4
- package/template/src/components/ToastComponent.tsx +7 -1
- package/template/src/components/WhiteboardLayout.tsx +291 -0
- package/template/src/components/chat-messages/useChatMessages.tsx +454 -239
- package/template/src/components/chat-ui/{useChatUIControl.tsx → useChatUIControls.tsx} +29 -29
- 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 +13 -12
- package/template/src/components/contexts/ScreenShareContext.tsx +1 -0
- package/template/src/components/contexts/VideoMeetingDataContext.tsx +6 -6
- 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 +314 -220
- package/template/src/components/livestream/Types.ts +36 -20
- package/template/src/components/livestream/views/LiveStreamAttendeeLandingTile.tsx +295 -0
- package/template/src/components/livestream/views/LiveStreamControls.tsx +5 -10
- 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 +19 -20
- package/template/src/components/participants/AllHostParticipants.tsx +20 -19
- package/template/src/components/participants/Participant.tsx +45 -16
- package/template/src/components/participants/ParticipantSectionTitle.tsx +5 -2
- package/template/src/components/participants/ScreenshareParticipants.tsx +17 -19
- package/template/src/components/participants/UserActionMenuOptions.tsx +173 -62
- package/template/src/components/participants/WaitingRoomParticipants.tsx +74 -0
- package/template/src/components/popups/InvitePopup.tsx +105 -44
- package/template/src/components/popups/StartScreenSharePopup.native.tsx +26 -23
- package/template/src/components/popups/StopRecordingPopup.tsx +11 -5
- package/template/src/components/popups/StopScreenSharePopup.native.tsx +17 -5
- 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 +31 -28
- 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 +19 -53
- package/template/src/components/precall/VideoPreview.tsx +29 -164
- package/template/src/components/precall/index.tsx +2 -0
- package/template/src/components/precall/joinCallBtn.native.tsx +9 -4
- package/template/src/components/precall/joinCallBtn.tsx +9 -4
- 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 +37 -11
- package/template/src/components/precall/selectDevice.tsx +5 -5
- package/template/src/components/precall/textInput.tsx +17 -19
- package/template/src/components/precall/usePreCall.tsx +4 -4
- package/template/src/components/recording-bot/RecordingBotRoute.tsx +42 -0
- package/template/src/components/recordings/RecordingsDateTable.tsx +62 -0
- package/template/src/components/recordings/RecordingsModal.tsx +135 -0
- package/template/src/components/recordings/ViewRecordingsModal.tsx +51 -0
- package/template/src/components/recordings/recording-table.tsx +154 -0
- package/template/src/components/recordings/style.ts +183 -0
- package/template/src/components/recordings/utils.ts +80 -0
- package/template/src/components/{meeting-info/useMeetingInfo.tsx → room-info/useRoomInfo.tsx} +46 -12
- package/template/src/components/{meeting-info/useSetMeetingInfo.tsx → room-info/useSetRoomInfo.tsx} +12 -12
- package/template/src/components/useShareLink.tsx +23 -60
- package/template/src/components/useUserPreference.tsx +54 -17
- package/template/src/components/useVideoCall.tsx +52 -7
- 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 +185 -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 +148 -0
- package/template/src/components/whiteboard/WhiteboardConfigure.tsx +446 -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 +188 -0
- package/template/src/components/whiteboard/WhiteboardView.tsx +81 -0
- package/template/src/components/whiteboard/WhiteboardWidget.tsx +685 -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 +149 -25
- package/template/src/language/default-labels/shareLinkScreenLabels.ts +85 -37
- package/template/src/language/default-labels/videoCallScreenLabels.ts +1195 -158
- package/template/src/pages/Create.tsx +118 -92
- package/template/src/pages/Endcall.tsx +2 -2
- package/template/src/pages/Join.tsx +67 -45
- package/template/src/pages/VideoCall.tsx +240 -132
- package/template/src/pages/video-call/ActionSheet.native.tsx +33 -3
- package/template/src/pages/video-call/ActionSheet.tsx +54 -15
- package/template/src/pages/video-call/ActionSheetContent.tsx +487 -313
- package/template/src/pages/video-call/ActionSheetHandle.tsx +7 -1
- package/template/src/pages/video-call/DefaultLayouts.ts +20 -8
- package/template/src/pages/video-call/NameWithMicIcon.tsx +41 -64
- package/template/src/pages/video-call/RenderComponent.tsx +14 -30
- package/template/src/pages/video-call/SidePanelHeader.tsx +227 -29
- package/template/src/pages/video-call/VideoCallMobileView.tsx +199 -99
- package/template/src/pages/video-call/VideoCallScreen.native.tsx +2 -25
- package/template/src/pages/video-call/VideoCallScreen.tsx +233 -57
- package/template/src/pages/video-call/VideoCallScreenWrapper.tsx +41 -0
- package/template/src/pages/video-call/VideoComponent.tsx +60 -8
- package/template/src/pages/video-call/VideoRenderer.tsx +237 -98
- package/template/src/pages/video-call/VisibilitySensor.tsx +104 -0
- package/template/src/pages/video-call/index.ts +42 -8
- package/template/src/rtm/RTMEngine.ts +9 -4
- package/template/src/rtm-events/constants.ts +21 -3
- package/template/src/rtm-events-api/Events.ts +6 -4
- package/template/src/rtm-events-api/LocalEvents.ts +14 -0
- package/template/src/rtm-events-api/types.ts +5 -5
- package/template/src/selection.json +1 -0
- package/template/src/subComponents/ChatBubble.tsx +87 -67
- package/template/src/subComponents/ChatContainer.tsx +70 -49
- package/template/src/subComponents/ChatInput.ios.tsx +32 -85
- package/template/src/subComponents/ChatInput.tsx +31 -80
- package/template/src/subComponents/Checkbox.native.tsx +46 -46
- package/template/src/subComponents/Checkbox.tsx +7 -6
- package/template/src/subComponents/CopyJoinInfo.tsx +31 -11
- package/template/src/subComponents/EndcallPopup.tsx +83 -12
- package/template/src/subComponents/FallbackLogo.tsx +2 -2
- package/template/src/subComponents/LanguageSelector.tsx +34 -30
- package/template/src/subComponents/LayoutIconButton.tsx +34 -17
- package/template/src/subComponents/LayoutIconDropdown.tsx +21 -8
- package/template/src/subComponents/Loading.tsx +22 -9
- package/template/src/subComponents/LocalAudioMute.tsx +87 -34
- package/template/src/subComponents/LocalEndCall.tsx +48 -31
- package/template/src/subComponents/LocalSwitchCamera.tsx +49 -11
- package/template/src/subComponents/LocalVideoMute.tsx +87 -35
- package/template/src/subComponents/NetworkQualityPill.tsx +22 -38
- package/template/src/subComponents/Recording.tsx +29 -9
- package/template/src/subComponents/RemoteAudioMute.tsx +5 -5
- package/template/src/subComponents/RemoteMutePopup.tsx +55 -14
- package/template/src/subComponents/RemoteVideoMute.tsx +5 -5
- 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 +103 -34
- package/template/src/subComponents/SelectDeviceSettings.backup.tsx +9 -6
- package/template/src/subComponents/SidePanelButtons.ts +0 -3
- 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 +132 -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 +452 -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 +63 -0
- package/template/src/subComponents/caption/useTranscriptDownload.ts +52 -0
- package/template/src/subComponents/caption/utils.ts +126 -0
- package/template/src/subComponents/chat/ChatParticipants.tsx +60 -24
- package/template/src/subComponents/livestream/ApprovedLiveStreamControlsView.tsx +2 -2
- package/template/src/subComponents/livestream/CurrentLiveStreamRequestsView.tsx +19 -20
- package/template/src/subComponents/livestream/controls/LocalRaiseHand.tsx +66 -35
- package/template/src/subComponents/livestream/controls/RemoteLiveStreamApprovedRequestRecall.tsx +3 -2
- 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/useIsRecordingBot.tsx +38 -0
- package/template/src/subComponents/recording/useRecording.tsx +251 -150
- package/template/src/subComponents/recording/useRecordingLayoutQuery.tsx +0 -1
- package/template/src/subComponents/screenshare/ScreenshareButton.tsx +18 -13
- package/template/src/subComponents/screenshare/ScreenshareConfigure.native.tsx +164 -93
- package/template/src/subComponents/screenshare/ScreenshareConfigure.tsx +163 -108
- 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 +13 -0
- package/template/src/utils/SdkMethodEvents.ts +5 -5
- package/template/src/utils/axiomLogger.ts +117 -0
- package/template/src/utils/book.jpg +0 -0
- package/template/src/utils/common.tsx +96 -1
- package/template/src/utils/constants.ts +4 -0
- package/template/src/utils/getCustomRoute.ts +7 -0
- package/template/src/utils/index.tsx +34 -0
- package/template/src/utils/useActionSheet.tsx +50 -0
- package/template/src/utils/useActiveSpeaker.ts +38 -0
- package/template/src/utils/useAppState.ts +17 -0
- package/template/src/utils/useAsyncEffect.ts +138 -0
- package/template/src/utils/{useCreateMeeting.ts → useCreateRoom.ts} +19 -14
- package/template/src/utils/useEndCall.ts +65 -0
- package/template/src/utils/useFindActiveSpeaker.native.ts +4 -0
- package/template/src/utils/useFindActiveSpeaker.ts +335 -0
- package/template/src/utils/useGetMeetingPhrase.ts +10 -10
- package/template/src/utils/useIsAudioEnabled.ts +3 -3
- package/template/src/utils/useIsLocalUserSpeaking.native.ts +4 -0
- package/template/src/utils/useIsLocalUserSpeaking.ts +103 -0
- package/template/src/utils/useIsPSTN.ts +3 -3
- package/template/src/utils/useIsVideoEnabled.ts +3 -3
- package/template/src/utils/useJoinRoom.ts +199 -0
- package/template/src/utils/{useIsActiveSpeaker.ts → useLocalAudio.ts} +23 -12
- package/template/src/{components/Settings.native.tsx → utils/useMenu.tsx} +16 -6
- package/template/src/utils/useModal.tsx +8 -0
- package/template/src/utils/useMutePSTN.ts +2 -2
- package/template/src/utils/useMuteToggleLocal.ts +21 -9
- package/template/src/utils/useRemoteEndCall.ts +4 -4
- package/template/src/utils/useRemoteEndScreenshare.ts +4 -4
- package/template/src/utils/useRemoteMute.ts +7 -7
- package/template/src/utils/useRemoteRequest.ts +7 -7
- package/template/src/utils/useSearchParams.tsx +18 -0
- package/template/src/utils/useString.ts +13 -3
- package/template/src/utils/useSwitchCamera.native.tsx +25 -0
- package/template/src/utils/useSwitchCamera.tsx +19 -0
- package/template/src/utils/useToolbar.tsx +59 -0
- package/template/src/wasms/agora-virtual-background.wasm +0 -0
- package/template/static.d.ts +42 -0
- package/template/web/index.html +20 -0
- package/template/webpack.commons.js +21 -10
- package/template/_buckconfig +0 -6
- package/template/_gitattributes +0 -1
- package/template/agora-rn-uikit/src/Contexts/RenderContext.tsx +0 -10
- package/template/agora-rn-uikit/src/Reducer/ActiveSpeakerDetected.ts +0 -11
- package/template/android/app/_BUCK +0 -55
- package/template/android/app/build_defs.bzl +0 -19
- package/template/bridge/rtc/webNg/LocalView.tsx +0 -20
- package/template/ios/HelloWorld/AppDelegate.m +0 -74
- package/template/src/pages/video-call/CustomUserContextHolder.tsx +0 -20
- package/template/src/utils/useButtonTemplate.tsx +0 -44
- package/template/src/utils/useJoinMeeting.ts +0 -142
|
@@ -32,6 +32,11 @@ import SDKMethodEventsManager from '../utils/SdkMethodEvents';
|
|
|
32
32
|
import StorageContext from '../components/StorageContext';
|
|
33
33
|
import UserCancelPopup from './UserCancelPopup';
|
|
34
34
|
import {exitApp} from './openIDPURL';
|
|
35
|
+
import {useString} from '../utils/useString';
|
|
36
|
+
import {
|
|
37
|
+
authSessionTimeoutToastHeading,
|
|
38
|
+
loadingText,
|
|
39
|
+
} from '../language/default-labels/commonLabels';
|
|
35
40
|
|
|
36
41
|
export const GET_USER = gql`
|
|
37
42
|
query getUser {
|
|
@@ -58,6 +63,8 @@ interface AuthContextInterface {
|
|
|
58
63
|
const AuthContext = createContext<AuthContextInterface | null>(null);
|
|
59
64
|
|
|
60
65
|
const AuthProvider = (props: AuthProviderProps) => {
|
|
66
|
+
const loadingLabel = useString(loadingText)();
|
|
67
|
+
const timeoutHeading = useString(authSessionTimeoutToastHeading)();
|
|
61
68
|
const regEvent = useRef(true);
|
|
62
69
|
const refreshTimeoutWeb = useRef(null);
|
|
63
70
|
const [showNativePopup, setShowNativePopup] = useState(false);
|
|
@@ -92,7 +99,6 @@ const AuthProvider = (props: AuthProviderProps) => {
|
|
|
92
99
|
//production - 59min 1 sec
|
|
93
100
|
// if (authenticated && $config.ENABLE_IDP_AUTH && isWeb()) {
|
|
94
101
|
// refreshTimeoutWeb.current = setTimeout(() => {
|
|
95
|
-
// console.log('debugging calling refresh');
|
|
96
102
|
// fetch(`${$config.BACKEND_ENDPOINT}/v1/token/refresh`, {
|
|
97
103
|
// method: 'POST',
|
|
98
104
|
// credentials: 'include',
|
|
@@ -103,19 +109,15 @@ const AuthProvider = (props: AuthProviderProps) => {
|
|
|
103
109
|
// .then((data) => {
|
|
104
110
|
// clearTimeout(refreshTimeoutWeb.current);
|
|
105
111
|
// tokenRefreshWeb();
|
|
106
|
-
// console.log('debugging cookie set');
|
|
107
112
|
// })
|
|
108
113
|
// .catch((error) => {
|
|
109
|
-
// console.log('debugging error', error);
|
|
110
114
|
// });
|
|
111
115
|
// }, timeout);
|
|
112
116
|
// } else if (!authenticated && $config.ENABLE_IDP_AUTH && isWeb()) {
|
|
113
117
|
// //not authenticated
|
|
114
118
|
// if (refreshTimeoutWeb.current) {
|
|
115
|
-
// console.log('debugging clearing the interval');
|
|
116
119
|
// clearTimeout(refreshTimeoutWeb.current);
|
|
117
120
|
// } else {
|
|
118
|
-
// console.log('debugging no interval to clear');
|
|
119
121
|
// }
|
|
120
122
|
// }
|
|
121
123
|
};
|
|
@@ -136,20 +138,18 @@ const AuthProvider = (props: AuthProviderProps) => {
|
|
|
136
138
|
}, [store?.token]);
|
|
137
139
|
|
|
138
140
|
const deepLinkUrl = (link: string | null) => {
|
|
139
|
-
console.log('debugging Deep-linking url: ', link);
|
|
140
|
-
|
|
141
141
|
if (link !== null) {
|
|
142
142
|
//deeplinking handling with authentication enabled
|
|
143
143
|
if ($config.ENABLE_IDP_AUTH) {
|
|
144
144
|
const url = processDeepLinkURI(link);
|
|
145
|
-
console.log('debugging Deep-linking processed url', url);
|
|
146
145
|
try {
|
|
147
146
|
//login link expiry fix
|
|
148
147
|
if (url?.indexOf('msg') !== -1) {
|
|
149
148
|
//adding time delay to open in app browser
|
|
150
149
|
Toast.show({
|
|
150
|
+
leadingIconName: 'alert',
|
|
151
151
|
type: 'error',
|
|
152
|
-
text1:
|
|
152
|
+
text1: timeoutHeading,
|
|
153
153
|
visibilityTime: 3000,
|
|
154
154
|
});
|
|
155
155
|
setTimeout(() => {
|
|
@@ -158,7 +158,6 @@ const AuthProvider = (props: AuthProviderProps) => {
|
|
|
158
158
|
} else if (url?.indexOf('authorize') !== -1) {
|
|
159
159
|
const token = getParamFromURL(url, 'token');
|
|
160
160
|
if (token) {
|
|
161
|
-
console.log('debugging deep-linking got token');
|
|
162
161
|
enableTokenAuth(token)
|
|
163
162
|
.then(() => {
|
|
164
163
|
setIsAuthenticated(true);
|
|
@@ -188,7 +187,6 @@ const AuthProvider = (props: AuthProviderProps) => {
|
|
|
188
187
|
}
|
|
189
188
|
} else {
|
|
190
189
|
//deeplinking handling with authentication enabled
|
|
191
|
-
console.log('debugging path', processDeepLinkURI(link));
|
|
192
190
|
const url = processDeepLinkURI(link);
|
|
193
191
|
setReturnTo(url);
|
|
194
192
|
}
|
|
@@ -200,9 +198,7 @@ const AuthProvider = (props: AuthProviderProps) => {
|
|
|
200
198
|
if (isIOS() || isAndroid()) {
|
|
201
199
|
const deepLink = async () => {
|
|
202
200
|
const initialUrl = await Linking.getInitialURL();
|
|
203
|
-
|
|
204
|
-
Linking.addEventListener('url', (e) => {
|
|
205
|
-
console.log('debugging url from listener', e.url);
|
|
201
|
+
Linking.addEventListener('url', e => {
|
|
206
202
|
deepLinkUrl(e.url);
|
|
207
203
|
});
|
|
208
204
|
deepLinkUrl(initialUrl);
|
|
@@ -216,7 +212,7 @@ const AuthProvider = (props: AuthProviderProps) => {
|
|
|
216
212
|
regEvent.current = false;
|
|
217
213
|
SDKMethodEventsManager.on('login', async (res, rej, token) => {
|
|
218
214
|
try {
|
|
219
|
-
setStore(
|
|
215
|
+
setStore(prevState => {
|
|
220
216
|
return {...prevState, token};
|
|
221
217
|
});
|
|
222
218
|
setTimeout(async () => {
|
|
@@ -224,7 +220,7 @@ const AuthProvider = (props: AuthProviderProps) => {
|
|
|
224
220
|
.then(() => {
|
|
225
221
|
res();
|
|
226
222
|
})
|
|
227
|
-
.catch(
|
|
223
|
+
.catch(error => {
|
|
228
224
|
rej('SDK Login failed' + JSON.stringify(error));
|
|
229
225
|
});
|
|
230
226
|
});
|
|
@@ -244,6 +240,7 @@ const AuthProvider = (props: AuthProviderProps) => {
|
|
|
244
240
|
|
|
245
241
|
if (!isSDK() && $config.ENABLE_TOKEN_AUTH) {
|
|
246
242
|
Toast.show({
|
|
243
|
+
leadingIconName: 'alert',
|
|
247
244
|
type: 'error',
|
|
248
245
|
text1: 'Token Server Authentication only supports SDK integration',
|
|
249
246
|
text2: 'Please use Auth0 Authentication.',
|
|
@@ -252,6 +249,7 @@ const AuthProvider = (props: AuthProviderProps) => {
|
|
|
252
249
|
}
|
|
253
250
|
if (isSDK() && $config.ENABLE_IDP_AUTH) {
|
|
254
251
|
Toast.show({
|
|
252
|
+
leadingIconName: 'alert',
|
|
255
253
|
type: 'error',
|
|
256
254
|
text1: 'Auth0 Authentication does not support SDK integration',
|
|
257
255
|
text2: 'Please use Token Server Authentication.',
|
|
@@ -263,6 +261,7 @@ const AuthProvider = (props: AuthProviderProps) => {
|
|
|
263
261
|
useEffect(() => {
|
|
264
262
|
if (!authenticated && authError) {
|
|
265
263
|
Toast.show({
|
|
264
|
+
leadingIconName: 'alert',
|
|
266
265
|
type: 'error',
|
|
267
266
|
text1: authError,
|
|
268
267
|
visibilityTime: 3000,
|
|
@@ -285,7 +284,8 @@ const AuthProvider = (props: AuthProviderProps) => {
|
|
|
285
284
|
|
|
286
285
|
useEffect(() => {
|
|
287
286
|
// Ignore if on sdk since IDP flow is not supported
|
|
288
|
-
|
|
287
|
+
// For unauthenticated flow authLogin should be called to get the token
|
|
288
|
+
if (isSDK() && ENABLE_AUTH) {
|
|
289
289
|
setIsAuthenticated(true);
|
|
290
290
|
setLoading(false);
|
|
291
291
|
return () => {};
|
|
@@ -300,7 +300,7 @@ const AuthProvider = (props: AuthProviderProps) => {
|
|
|
300
300
|
) {
|
|
301
301
|
//fetch user details
|
|
302
302
|
getUserDetails()
|
|
303
|
-
.then(
|
|
303
|
+
.then(_ => {
|
|
304
304
|
//Each time user refresh the page we have to redirect the user to IDP login.then only we can able to refresh the token
|
|
305
305
|
//because we can't read the cookie so we don't know expirytime.
|
|
306
306
|
//so each time page refresh will get new token
|
|
@@ -319,8 +319,9 @@ const AuthProvider = (props: AuthProviderProps) => {
|
|
|
319
319
|
} else {
|
|
320
320
|
if (location?.search?.indexOf('msg') !== -1) {
|
|
321
321
|
Toast.show({
|
|
322
|
+
leadingIconName: 'alert',
|
|
322
323
|
type: 'error',
|
|
323
|
-
text1:
|
|
324
|
+
text1: timeoutHeading,
|
|
324
325
|
visibilityTime: 3000,
|
|
325
326
|
});
|
|
326
327
|
setTimeout(() => {
|
|
@@ -350,6 +351,7 @@ const AuthProvider = (props: AuthProviderProps) => {
|
|
|
350
351
|
: isIOS() || isAndroid()
|
|
351
352
|
? deepLinkUrl
|
|
352
353
|
: '',
|
|
354
|
+
timeoutHeading,
|
|
353
355
|
)?.then((response: any) => {
|
|
354
356
|
if (isAndroid() || isIOS()) {
|
|
355
357
|
if (response && response?.showNativePopup) {
|
|
@@ -363,11 +365,11 @@ const AuthProvider = (props: AuthProviderProps) => {
|
|
|
363
365
|
//AUTH -> IDP -> SDK ONLY
|
|
364
366
|
else if ($config.ENABLE_TOKEN_AUTH && isSDK()) {
|
|
365
367
|
enableTokenAuth()
|
|
366
|
-
.then(
|
|
368
|
+
.then(res => {
|
|
367
369
|
setIsAuthenticated(true);
|
|
368
370
|
history.push('/create');
|
|
369
371
|
})
|
|
370
|
-
.catch(
|
|
372
|
+
.catch(error => {
|
|
371
373
|
//don't show token expire/not found toast in the sdk
|
|
372
374
|
//we have event emitter to inform the customer application
|
|
373
375
|
//they have to listen for those events
|
|
@@ -389,8 +391,8 @@ const AuthProvider = (props: AuthProviderProps) => {
|
|
|
389
391
|
fetch(GET_UNAUTH_FLOW_API_ENDPOINT(), {
|
|
390
392
|
credentials: 'include',
|
|
391
393
|
})
|
|
392
|
-
.then(
|
|
393
|
-
.then(
|
|
394
|
+
.then(response => response.json())
|
|
395
|
+
.then(response => {
|
|
394
396
|
// unauthenticated flow all platform we will have to handle the token manually
|
|
395
397
|
// we need to store token manually
|
|
396
398
|
if (!response.token) {
|
|
@@ -398,10 +400,9 @@ const AuthProvider = (props: AuthProviderProps) => {
|
|
|
398
400
|
} else {
|
|
399
401
|
enableTokenAuth(response.token)
|
|
400
402
|
.then(() => {
|
|
401
|
-
console.log('debugging token auth enabled');
|
|
402
403
|
//set auth enabled on useEffect
|
|
403
404
|
})
|
|
404
|
-
.catch(
|
|
405
|
+
.catch(error => {
|
|
405
406
|
//we don't need to show token expire/not found toast in the sdk
|
|
406
407
|
//we have event emitter to inform the customer application
|
|
407
408
|
//they have to listen for those events
|
|
@@ -416,7 +417,7 @@ const AuthProvider = (props: AuthProviderProps) => {
|
|
|
416
417
|
});
|
|
417
418
|
}
|
|
418
419
|
})
|
|
419
|
-
.catch(
|
|
420
|
+
.catch(error => {
|
|
420
421
|
if (error instanceof Error) {
|
|
421
422
|
setAuthError(error.message);
|
|
422
423
|
} else {
|
|
@@ -430,8 +431,7 @@ const AuthProvider = (props: AuthProviderProps) => {
|
|
|
430
431
|
const authLogout = () => {
|
|
431
432
|
if (ENABLE_AUTH && $config.ENABLE_IDP_AUTH && !isSDK()) {
|
|
432
433
|
idpLogout(isAndroid() || isIOS() ? setShowNativePopup : {})
|
|
433
|
-
.then(
|
|
434
|
-
console.log('user successfully logged out');
|
|
434
|
+
.then(res => {
|
|
435
435
|
setIsAuthenticated(false);
|
|
436
436
|
})
|
|
437
437
|
.catch(() => {
|
|
@@ -450,9 +450,7 @@ const AuthProvider = (props: AuthProviderProps) => {
|
|
|
450
450
|
history.push('/create');
|
|
451
451
|
} else {
|
|
452
452
|
tokenLogout()
|
|
453
|
-
.then(
|
|
454
|
-
console.log('user successfully logged out');
|
|
455
|
-
})
|
|
453
|
+
.then(res => {})
|
|
456
454
|
.catch(() => {
|
|
457
455
|
console.error('user logout failed');
|
|
458
456
|
setAuthError('Error occured on Logout, please try again.');
|
|
@@ -490,7 +488,7 @@ const AuthProvider = (props: AuthProviderProps) => {
|
|
|
490
488
|
<></>
|
|
491
489
|
)}
|
|
492
490
|
{(!authenticated && !ENABLE_AUTH) || (ENABLE_AUTH && loading) ? (
|
|
493
|
-
<Loading text={
|
|
491
|
+
<Loading text={loadingLabel} />
|
|
494
492
|
) : (
|
|
495
493
|
props.children
|
|
496
494
|
)}
|
|
@@ -18,21 +18,29 @@ import isSDK from '../utils/isSDK';
|
|
|
18
18
|
import Loading from '../subComponents/Loading';
|
|
19
19
|
import Login from '../pages/Login';
|
|
20
20
|
import {isAndroid, isIOS} from '../utils/common';
|
|
21
|
+
import {useString} from '../utils/useString';
|
|
22
|
+
import {
|
|
23
|
+
authAuthenticationFailedText,
|
|
24
|
+
loadingText,
|
|
25
|
+
} from '../language/default-labels/commonLabels';
|
|
21
26
|
|
|
22
27
|
interface PrivateRouteProps extends RouteProps {
|
|
23
28
|
children: React.ReactNode;
|
|
24
29
|
}
|
|
25
30
|
|
|
26
|
-
const AuthRoute: React.FC<PrivateRouteProps> =
|
|
31
|
+
const AuthRoute: React.FC<PrivateRouteProps> = props => {
|
|
27
32
|
const didMountRef = useRef(false);
|
|
28
33
|
const {authenticated} = useAuth();
|
|
34
|
+
const loadingLabel = useString(loadingText)();
|
|
35
|
+
const failedtext = useString(authAuthenticationFailedText)();
|
|
29
36
|
|
|
30
37
|
useEffect(() => {
|
|
31
38
|
if (!didMountRef.current) return;
|
|
32
39
|
if (!authenticated) {
|
|
33
40
|
Toast.show({
|
|
41
|
+
leadingIconName: 'alert',
|
|
34
42
|
type: 'error',
|
|
35
|
-
text1:
|
|
43
|
+
text1: failedtext,
|
|
36
44
|
visibilityTime: 1000,
|
|
37
45
|
});
|
|
38
46
|
}
|
|
@@ -55,7 +63,7 @@ const AuthRoute: React.FC<PrivateRouteProps> = (props) => {
|
|
|
55
63
|
//if user closes inapp browser then show login/signup button
|
|
56
64
|
// <Login />
|
|
57
65
|
//)
|
|
58
|
-
<Loading text={
|
|
66
|
+
<Loading text={loadingLabel} />
|
|
59
67
|
);
|
|
60
68
|
// <Redirect
|
|
61
69
|
// to={{
|
|
@@ -3,20 +3,21 @@ import {useAuth} from './AuthProvider';
|
|
|
3
3
|
import {useHistory, useParams} from '../components/Router';
|
|
4
4
|
import Loading from '../subComponents/Loading';
|
|
5
5
|
import useTokenAuth from './useTokenAuth';
|
|
6
|
+
import {useString} from '../utils/useString';
|
|
7
|
+
import {authAuthorizingApplicationText} from '../language/default-labels/commonLabels';
|
|
6
8
|
|
|
7
9
|
export const IDPAuth = () => {
|
|
8
10
|
const {setIsAuthenticated} = useAuth();
|
|
9
11
|
const {enableTokenAuth} = useTokenAuth();
|
|
10
12
|
const history = useHistory();
|
|
11
13
|
const {token}: {token: string} = useParams();
|
|
14
|
+
const text = useString(authAuthorizingApplicationText)();
|
|
12
15
|
|
|
13
16
|
useEffect(() => {
|
|
14
|
-
console.log('debugging electron token', token);
|
|
15
17
|
if (token) {
|
|
16
18
|
enableTokenAuth(token)
|
|
17
19
|
.then(() => {
|
|
18
20
|
setIsAuthenticated(true);
|
|
19
|
-
console.log('debugging electron login success');
|
|
20
21
|
history.push('/');
|
|
21
22
|
})
|
|
22
23
|
.catch(() => {
|
|
@@ -26,5 +27,5 @@ export const IDPAuth = () => {
|
|
|
26
27
|
}
|
|
27
28
|
}, []);
|
|
28
29
|
|
|
29
|
-
return <Loading text={
|
|
30
|
+
return <Loading text={text} />;
|
|
30
31
|
};
|
|
@@ -6,8 +6,15 @@ import {useApolloClient} from '@apollo/client';
|
|
|
6
6
|
import Toast from '../../react-native-toast-message';
|
|
7
7
|
import {getParamFromURL} from '../utils/common';
|
|
8
8
|
import useTokenAuth from './useTokenAuth';
|
|
9
|
+
import {useString} from '../utils/useString';
|
|
10
|
+
import {
|
|
11
|
+
authAuthorizingApplicationText,
|
|
12
|
+
authErrorOnLoginToastHeading,
|
|
13
|
+
} from '../language/default-labels/commonLabels';
|
|
9
14
|
|
|
10
15
|
export const IDPAuth = () => {
|
|
16
|
+
const toastheading = useString(authErrorOnLoginToastHeading)();
|
|
17
|
+
const text = useString(authAuthorizingApplicationText)();
|
|
11
18
|
const {setIsAuthenticated, authLogin} = useAuth();
|
|
12
19
|
const history = useHistory();
|
|
13
20
|
const {token: returnTo}: {token: string} = useParams();
|
|
@@ -45,8 +52,9 @@ export const IDPAuth = () => {
|
|
|
45
52
|
} else {
|
|
46
53
|
setIsAuthenticated(false);
|
|
47
54
|
Toast.show({
|
|
55
|
+
leadingIconName: 'alert',
|
|
48
56
|
type: 'error',
|
|
49
|
-
text1:
|
|
57
|
+
text1: toastheading,
|
|
50
58
|
visibilityTime: 3000,
|
|
51
59
|
});
|
|
52
60
|
setTimeout(() => {
|
|
@@ -55,5 +63,5 @@ export const IDPAuth = () => {
|
|
|
55
63
|
}
|
|
56
64
|
}, []);
|
|
57
65
|
|
|
58
|
-
return <Loading text={
|
|
66
|
+
return <Loading text={text} />;
|
|
59
67
|
};
|
|
@@ -8,6 +8,14 @@ import {isMobileUA, useIsDesktop} from '../utils/common';
|
|
|
8
8
|
import TertiaryButton from '../atoms/TertiaryButton';
|
|
9
9
|
import isSDK from '../utils/isSDK';
|
|
10
10
|
import {useAuth} from './AuthProvider';
|
|
11
|
+
import {useString} from '../utils/useString';
|
|
12
|
+
import {
|
|
13
|
+
authLogoutPopupHeading,
|
|
14
|
+
authLogoutPopupPrimaryBtnText,
|
|
15
|
+
authLogoutPopupSubHeading,
|
|
16
|
+
cancelText,
|
|
17
|
+
logoutText,
|
|
18
|
+
} from '../language/default-labels/commonLabels';
|
|
11
19
|
|
|
12
20
|
interface LogoutPopupProps {
|
|
13
21
|
modalVisible: boolean;
|
|
@@ -16,11 +24,11 @@ interface LogoutPopupProps {
|
|
|
16
24
|
}
|
|
17
25
|
const LogoutPopup = (props: LogoutPopupProps) => {
|
|
18
26
|
const isDesktop = useIsDesktop()('popup');
|
|
19
|
-
const logoutLabelHeading =
|
|
20
|
-
const logoutLabelSubHeading =
|
|
27
|
+
const logoutLabelHeading = useString(authLogoutPopupHeading)();
|
|
28
|
+
const logoutLabelSubHeading = useString(authLogoutPopupSubHeading)();
|
|
21
29
|
|
|
22
|
-
const cancelBtnLabel =
|
|
23
|
-
const confirmBtnLabel =
|
|
30
|
+
const cancelBtnLabel = useString(cancelText)();
|
|
31
|
+
const confirmBtnLabel = useString(authLogoutPopupPrimaryBtnText)();
|
|
24
32
|
return (
|
|
25
33
|
<Popup
|
|
26
34
|
modalVisible={props.modalVisible}
|
|
@@ -114,6 +122,7 @@ interface IDPLogoutComponentProps {
|
|
|
114
122
|
}
|
|
115
123
|
|
|
116
124
|
const IDPLogoutComponent = (props?: IDPLogoutComponentProps) => {
|
|
125
|
+
const logoutLabel = useString(logoutText)();
|
|
117
126
|
const {authenticated, authLogout} = useAuth();
|
|
118
127
|
const [modalVisible, setModalVisible] = useState(false);
|
|
119
128
|
return authenticated && $config.ENABLE_IDP_AUTH && !isSDK() ? (
|
|
@@ -136,7 +145,7 @@ const IDPLogoutComponent = (props?: IDPLogoutComponentProps) => {
|
|
|
136
145
|
setModalVisible={setModalVisible}
|
|
137
146
|
/>
|
|
138
147
|
<TertiaryButton
|
|
139
|
-
text=
|
|
148
|
+
text={logoutLabel}
|
|
140
149
|
onPress={() => {
|
|
141
150
|
setModalVisible(true);
|
|
142
151
|
}}
|
|
@@ -6,6 +6,13 @@ import PrimaryButton from '../atoms/PrimaryButton';
|
|
|
6
6
|
import ThemeConfig from '../theme';
|
|
7
7
|
import {useIsDesktop} from '../utils/common';
|
|
8
8
|
import TertiaryButton from '../atoms/TertiaryButton';
|
|
9
|
+
import {useString} from '../utils/useString';
|
|
10
|
+
import {
|
|
11
|
+
authLogInRequiredPopupHeading,
|
|
12
|
+
authLogInRequiredPopupPrimaryBtnText,
|
|
13
|
+
authLogInRequiredPopupSecondaryBtnText,
|
|
14
|
+
authLogInRequiredPopupSubHeading,
|
|
15
|
+
} from '../language/default-labels/commonLabels';
|
|
9
16
|
|
|
10
17
|
interface UserCancelPopupProps {
|
|
11
18
|
modalVisible: boolean;
|
|
@@ -15,11 +22,11 @@ interface UserCancelPopupProps {
|
|
|
15
22
|
}
|
|
16
23
|
const UserCancelPopup = (props: UserCancelPopupProps) => {
|
|
17
24
|
const isDesktop = useIsDesktop()('popup');
|
|
18
|
-
const logoutLabelHeading =
|
|
19
|
-
const logoutLabelSubHeading =
|
|
25
|
+
const logoutLabelHeading = useString(authLogInRequiredPopupHeading)();
|
|
26
|
+
const logoutLabelSubHeading = useString(authLogInRequiredPopupSubHeading)();
|
|
20
27
|
|
|
21
|
-
const
|
|
22
|
-
const
|
|
28
|
+
const loginBtnLabel = useString(authLogInRequiredPopupPrimaryBtnText)();
|
|
29
|
+
const closeAppBtnLabel = useString(authLogInRequiredPopupSecondaryBtnText)();
|
|
23
30
|
return (
|
|
24
31
|
<Popup
|
|
25
32
|
cancelable={false}
|
|
@@ -8,7 +8,7 @@ export const getIDPAuthLoginURL = () => {
|
|
|
8
8
|
}&origin_url=${getOriginURL()}&platform_id=${getPlatformId()}`;
|
|
9
9
|
};
|
|
10
10
|
|
|
11
|
-
export const addEventListenerForToken = (history) => {
|
|
11
|
+
export const addEventListenerForToken = (history, heading) => {
|
|
12
12
|
window.addEventListener(
|
|
13
13
|
'message',
|
|
14
14
|
({data, origin}: {data: {token: string; msg: string}; origin: string}) => {
|
|
@@ -16,8 +16,9 @@ export const addEventListenerForToken = (history) => {
|
|
|
16
16
|
history.push(`/authorize/${data.token}`);
|
|
17
17
|
} else if (data?.msg && data?.msg === 'login_link_expired') {
|
|
18
18
|
Toast.show({
|
|
19
|
+
leadingIconName: 'alert',
|
|
19
20
|
type: 'error',
|
|
20
|
-
text1: 'Your session has timed out, Retrying...',
|
|
21
|
+
text1: heading ? heading : 'Your session has timed out, Retrying...',
|
|
21
22
|
visibilityTime: 3000,
|
|
22
23
|
});
|
|
23
24
|
setTimeout(() => {
|
|
@@ -30,8 +31,8 @@ export const addEventListenerForToken = (history) => {
|
|
|
30
31
|
);
|
|
31
32
|
};
|
|
32
33
|
|
|
33
|
-
export const enableIDPAuth = async (history) => {
|
|
34
|
-
addEventListenerForToken(history);
|
|
34
|
+
export const enableIDPAuth = async (history, heading) => {
|
|
35
|
+
addEventListenerForToken(history, heading);
|
|
35
36
|
//open the auth login in the popup
|
|
36
37
|
window.open(getIDPAuthLoginURL(), 'modal');
|
|
37
38
|
};
|
|
@@ -13,7 +13,7 @@ export const getIDPAuthLoginURL = (returnTo?: any) => {
|
|
|
13
13
|
}&redirect_url=${finalRedirectURL}&origin_url=${getOriginURL()}&platform_id=${getPlatformId()}`;
|
|
14
14
|
};
|
|
15
15
|
|
|
16
|
-
export const enableIDPAuth = async (returnTo?: any) => {
|
|
16
|
+
export const enableIDPAuth = async (returnTo?: any, heading?: string) => {
|
|
17
17
|
Linking.openURL(getIDPAuthLoginURL(returnTo));
|
|
18
18
|
};
|
|
19
19
|
|
|
@@ -7,10 +7,13 @@ import {
|
|
|
7
7
|
import StorageContext from '../components/StorageContext';
|
|
8
8
|
import useTokenAuth from './useTokenAuth';
|
|
9
9
|
import {useHistory} from '../components/Router';
|
|
10
|
+
import {useString} from '../utils/useString';
|
|
11
|
+
import {authSessionTimeoutToastHeading} from '../language/default-labels/commonLabels';
|
|
10
12
|
|
|
11
13
|
export const useIDPAuth = () => {
|
|
12
14
|
const {store, setStore} = useContext(StorageContext);
|
|
13
15
|
const {tokenLogout} = useTokenAuth();
|
|
16
|
+
const headingText = useString(authSessionTimeoutToastHeading)();
|
|
14
17
|
const history = useHistory();
|
|
15
18
|
const idpLogout = () => {
|
|
16
19
|
return new Promise((resolve, reject) => {
|
|
@@ -21,7 +24,7 @@ export const useIDPAuth = () => {
|
|
|
21
24
|
authorization: store?.token ? `Bearer ${store?.token}` : '',
|
|
22
25
|
},
|
|
23
26
|
})
|
|
24
|
-
.then(
|
|
27
|
+
.then(response => response.json())
|
|
25
28
|
.then((res: any) => {
|
|
26
29
|
if (res && res?.url) {
|
|
27
30
|
//Storing the URL in the local variable
|
|
@@ -33,7 +36,7 @@ export const useIDPAuth = () => {
|
|
|
33
36
|
tokenLogout()
|
|
34
37
|
.then(() => {
|
|
35
38
|
//call IDP logout url
|
|
36
|
-
addEventListenerForToken(history);
|
|
39
|
+
addEventListenerForToken(history, headingText);
|
|
37
40
|
setTimeout(() => {
|
|
38
41
|
window.open(IDPAuthLogoutURL, 'modal');
|
|
39
42
|
});
|
|
@@ -46,7 +49,7 @@ export const useIDPAuth = () => {
|
|
|
46
49
|
reject(false);
|
|
47
50
|
}
|
|
48
51
|
})
|
|
49
|
-
.catch(
|
|
52
|
+
.catch(_ => {
|
|
50
53
|
reject(false);
|
|
51
54
|
});
|
|
52
55
|
} catch (error) {
|
|
@@ -30,10 +30,6 @@ export const useIDPAuth = () => {
|
|
|
30
30
|
`&returnTo=${encodeURIComponent(
|
|
31
31
|
getIDPAuthLoginURL(location.pathname),
|
|
32
32
|
)}`;
|
|
33
|
-
console.log(
|
|
34
|
-
'debugging non native IDPAuthLogoutURL',
|
|
35
|
-
IDPAuthLogoutURL,
|
|
36
|
-
);
|
|
37
33
|
//manage backend logout
|
|
38
34
|
//it will invalid the user session from the manage backend
|
|
39
35
|
//cookie logout -> true
|
|
@@ -12,12 +12,13 @@ const useTokenAuth = () => {
|
|
|
12
12
|
const [tokenExpiresAt, setTokenExpiresAt] = React.useState(0);
|
|
13
13
|
const timerRef = useRef(null);
|
|
14
14
|
const updateToken = (token: string) => {
|
|
15
|
-
setStore && setStore(
|
|
15
|
+
setStore && setStore(store => ({...store, token}));
|
|
16
16
|
};
|
|
17
17
|
|
|
18
18
|
const validateToken = (token: string) => {
|
|
19
19
|
if (token && token.trim() !== '') {
|
|
20
20
|
const decoded = jwt_decode(token);
|
|
21
|
+
// @ts-ignore
|
|
21
22
|
const expiresAt = decoded?.exp * 1000;
|
|
22
23
|
if (Date.now() >= expiresAt) {
|
|
23
24
|
if (isSDK()) {
|
|
@@ -44,8 +45,8 @@ const useTokenAuth = () => {
|
|
|
44
45
|
'X-Platform-ID': getPlatformId(),
|
|
45
46
|
},
|
|
46
47
|
})
|
|
47
|
-
.then(
|
|
48
|
-
.then(
|
|
48
|
+
.then(response => response.json())
|
|
49
|
+
.then(data => {
|
|
49
50
|
if (data?.token) {
|
|
50
51
|
updateToken(data.token);
|
|
51
52
|
if (isSDK()) {
|
|
@@ -54,7 +55,7 @@ const useTokenAuth = () => {
|
|
|
54
55
|
}
|
|
55
56
|
});
|
|
56
57
|
} else {
|
|
57
|
-
|
|
58
|
+
//'debugging no token to refresh'
|
|
58
59
|
}
|
|
59
60
|
};
|
|
60
61
|
|
|
@@ -99,12 +100,13 @@ const useTokenAuth = () => {
|
|
|
99
100
|
}
|
|
100
101
|
} else {
|
|
101
102
|
const decoded = jwt_decode(store.token);
|
|
103
|
+
// @ts-ignore
|
|
102
104
|
const expiresAt = decoded?.exp * 1000;
|
|
103
105
|
if (Date.now() >= expiresAt) {
|
|
104
106
|
if (isSDK()) {
|
|
105
107
|
SdkEvents.emit('did-token-expire');
|
|
106
108
|
}
|
|
107
|
-
|
|
109
|
+
//token expired
|
|
108
110
|
} else {
|
|
109
111
|
setTokenExpiresAt(expiresAt);
|
|
110
112
|
}
|
|
@@ -169,12 +171,12 @@ const useTokenAuth = () => {
|
|
|
169
171
|
},
|
|
170
172
|
},
|
|
171
173
|
)
|
|
172
|
-
.then(
|
|
173
|
-
.then(
|
|
174
|
+
.then(response => response.text())
|
|
175
|
+
.then(_ => {
|
|
174
176
|
resolve(true);
|
|
175
177
|
updateToken(null);
|
|
176
178
|
})
|
|
177
|
-
.catch(
|
|
179
|
+
.catch(_ => {
|
|
178
180
|
reject(false);
|
|
179
181
|
});
|
|
180
182
|
} catch (error) {
|