agora-appbuilder-core 2.2.0 → 2.3.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Readme.md +7 -1
- package/package.json +4 -3
- package/template/Gulpfile.js +306 -87
- package/template/_gitignore +4 -1
- package/template/_package-lock.json +2297 -2533
- package/template/agora-rn-uikit/.git/HEAD +1 -1
- package/template/agora-rn-uikit/.git/config +3 -3
- package/template/agora-rn-uikit/.git/index +0 -0
- package/template/agora-rn-uikit/.git/logs/HEAD +2 -2
- package/template/agora-rn-uikit/.git/logs/refs/heads/master +1 -1
- package/template/agora-rn-uikit/.git/logs/refs/heads/release/fpe-1.0.0 +1 -0
- package/template/agora-rn-uikit/.git/logs/refs/remotes/origin/HEAD +1 -1
- package/template/agora-rn-uikit/.git/objects/pack/pack-f274a85fccfc9b5112d154bb3b6d34cb4b8dedde.idx +0 -0
- package/template/agora-rn-uikit/.git/objects/pack/{pack-0061d00cd98162a329a32b537488a35d0abeb069.pack → pack-f274a85fccfc9b5112d154bb3b6d34cb4b8dedde.pack} +0 -0
- package/template/agora-rn-uikit/.git/packed-refs +5 -1
- package/template/agora-rn-uikit/.git/refs/heads/release/fpe-1.0.0 +1 -0
- package/template/agora-rn-uikit/src/AgoraUIKit.tsx +23 -20
- package/template/agora-rn-uikit/src/Contexts/LocalUserContext.tsx +13 -8
- package/template/agora-rn-uikit/src/Contexts/PropsContext.tsx +25 -9
- package/template/agora-rn-uikit/src/Contexts/RenderContext.tsx +10 -0
- package/template/agora-rn-uikit/src/Contexts/RtcContext.tsx +11 -5
- package/template/agora-rn-uikit/src/Controls/BtnTemplate.tsx +6 -2
- package/template/agora-rn-uikit/src/Controls/ImageIcon.tsx +1 -1
- package/template/agora-rn-uikit/src/Controls/Local/EndCall.tsx +6 -2
- package/template/agora-rn-uikit/src/Controls/Local/LocalAudioMute.tsx +2 -2
- package/template/agora-rn-uikit/src/Controls/Local/LocalVideoMute.tsx +2 -2
- package/template/agora-rn-uikit/src/Controls/Local/SwitchCamera.tsx +6 -2
- package/template/agora-rn-uikit/src/Controls/LocalControls.tsx +11 -6
- package/template/agora-rn-uikit/src/Controls/Remote/RemoteAudioMute.tsx +10 -6
- package/template/agora-rn-uikit/src/Controls/Remote/RemoteSwap.tsx +7 -6
- package/template/agora-rn-uikit/src/Controls/Remote/RemoteVideoMute.tsx +6 -5
- package/template/agora-rn-uikit/src/Controls/RemoteControls.tsx +3 -3
- package/template/agora-rn-uikit/src/Reducer/LocalMuteAudio.ts +16 -13
- package/template/agora-rn-uikit/src/Reducer/LocalMuteVideo.ts +16 -13
- package/template/agora-rn-uikit/src/Reducer/RemoteAudioStateChanged.ts +13 -13
- package/template/agora-rn-uikit/src/Reducer/RemoteVideoStateChanged.ts +16 -13
- package/template/agora-rn-uikit/src/Reducer/UpdateDualStreamMode.ts +28 -31
- package/template/agora-rn-uikit/src/Reducer/UserJoined.ts +48 -35
- package/template/agora-rn-uikit/src/Reducer/UserMuteRemoteAudio.ts +11 -13
- package/template/agora-rn-uikit/src/Reducer/UserMuteRemoteVideo.ts +11 -13
- package/template/agora-rn-uikit/src/Reducer/UserOffline.ts +18 -15
- package/template/agora-rn-uikit/src/Rtc/Create.tsx +14 -2
- package/template/agora-rn-uikit/src/Rtc/Join.tsx +19 -3
- package/template/agora-rn-uikit/src/RtcConfigure.tsx +161 -44
- package/template/agora-rn-uikit/src/Utils/useLocalUid.ts +8 -0
- package/template/agora-rn-uikit/src/Views/MaxVideoView.native.tsx +8 -6
- package/template/agora-rn-uikit/src/Views/MaxVideoView.tsx +8 -6
- package/template/agora-rn-uikit/src/Views/MinVideoView.tsx +18 -9
- package/template/agora-rn-uikit/src/index.ts +12 -12
- package/template/babel.config.js +17 -1
- package/template/bridge/rtc/webNg/RtcEngine.ts +34 -28
- package/template/bridge/rtc/webNg/SurfaceView.tsx +3 -2
- package/template/bridge/rtc/webNg/Types.ts +14 -0
- package/template/bridge/rtc/webNg/index.ts +5 -2
- package/template/bridge/rtm/web/index.ts +13 -7
- package/template/electron-builder.js +3 -2
- package/template/esbuild.rsdk.go +226 -0
- package/template/{src/subComponents/LayoutEnum.tsx → esbuildConfigTransform.js} +1 -5
- package/template/fpe-api/components.ts +42 -0
- package/template/fpe-api/context.ts +45 -0
- package/template/fpe-api/fpeEvents.ts +9 -0
- package/template/fpe-api/index.ts +21 -0
- package/template/fpe-api/install.ts +128 -0
- package/template/fpe-api/typeDefinition.ts +143 -0
- package/template/fpe-api/useFpe.tsx +35 -0
- package/template/fpe-api/utils.ts +62 -0
- package/template/fpe-implementation/createHook.ts +33 -0
- package/template/fpe-implementation/dummyFpe.ts +17 -0
- package/template/fpe-implementation/index.ts +1 -0
- package/template/fpe-todo.txt +14 -0
- package/template/fpe.config.js +25 -0
- package/template/global.d.ts +4 -0
- package/template/index.rsdk.tsx +27 -0
- package/template/index.wsdk.tsx +27 -0
- package/template/package-lock.json +2297 -2533
- package/template/package.json +28 -12
- package/template/react-native-toast-message/src/index.js +9 -10
- package/template/react-native-toast-message/src/index.wsdk.js +419 -0
- package/template/src/App.tsx +97 -65
- package/template/src/AppWrapper.tsx +79 -0
- package/template/src/SDKAppWrapper.tsx +67 -0
- package/template/src/atoms/PrimaryButton.tsx +14 -8
- package/template/src/atoms/TextInput.tsx +13 -5
- package/template/src/components/Chat.tsx +171 -139
- package/template/src/components/ChatContext.ts +14 -22
- package/template/src/components/ColorConfigure.tsx +2 -2
- package/template/src/components/Controls.native.tsx +72 -62
- package/template/src/components/Controls.tsx +90 -69
- package/template/src/components/DeviceConfigure.tsx +1 -1
- package/template/src/components/DeviceContext.tsx +14 -7
- package/template/src/components/GraphQLProvider.tsx +9 -2
- package/template/src/components/GridVideo.tsx +20 -159
- package/template/src/components/HostControlView.tsx +54 -15
- package/template/src/components/Navbar.tsx +408 -157
- package/template/src/components/NetworkQualityContext.tsx +29 -22
- package/template/src/components/ParticipantsView.tsx +97 -119
- package/template/src/components/PinnedVideo.tsx +41 -188
- package/template/src/components/Precall.native.tsx +131 -97
- package/template/src/components/Precall.tsx +193 -158
- package/template/src/components/RTMConfigure.tsx +320 -398
- package/template/src/components/Router.sdk.ts +20 -0
- package/template/src/components/SessionContext.tsx +6 -3
- package/template/src/components/Settings.native.tsx +3 -0
- package/template/src/components/Settings.tsx +65 -31
- package/template/src/components/SettingsView.tsx +14 -8
- package/template/src/components/Share.tsx +188 -220
- package/template/src/components/StorageContext.tsx +5 -5
- package/template/src/components/StoreToken.tsx +5 -1
- package/template/src/components/chat-messages/useChatMessages.tsx +202 -0
- package/template/src/components/chat-notification/useChatNotification.tsx +78 -0
- package/template/src/components/chat-ui/useChatUIControl.tsx +66 -0
- package/template/src/components/common/Error.tsx +54 -0
- package/template/src/components/common/Logo.tsx +35 -0
- package/template/src/components/common/index.tsx +8 -0
- package/template/src/components/contexts/LiveStreamDataContext.tsx +79 -0
- package/template/src/components/contexts/ScreenShareContext.tsx +47 -0
- package/template/src/components/contexts/WhiteboardContext.tsx +59 -0
- package/template/src/components/dimension/DimensionContext.ts +27 -0
- package/template/src/components/dimension/DimensionProvider.tsx +34 -0
- package/template/src/components/livestream/LiveStreamContext.tsx +293 -272
- package/template/src/components/livestream/Types.ts +26 -7
- package/template/src/components/livestream/index.ts +13 -2
- package/template/src/components/livestream/views/LiveStreamControls.tsx +5 -1
- package/template/src/components/meeting-info/useMeetingInfo.tsx +63 -0
- package/template/src/components/meeting-info/useSetMeetingInfo.tsx +38 -0
- package/template/src/components/participants/AllAudienceParticipants.tsx +26 -21
- package/template/src/components/participants/AllHostParticipants.tsx +36 -53
- package/template/src/components/participants/MeParticipant.tsx +9 -10
- package/template/src/components/participants/ParticipantName.tsx +2 -1
- package/template/src/components/participants/RemoteParticipants.tsx +3 -3
- package/template/src/components/precall/LocalMute.native.tsx +91 -0
- package/template/src/components/precall/LocalMute.tsx +90 -0
- package/template/src/components/precall/VideoPreview.native.tsx +35 -0
- package/template/src/components/precall/VideoPreview.tsx +33 -0
- package/template/src/components/precall/index.tsx +28 -0
- package/template/src/components/precall/joinCallBtn.native.tsx +69 -0
- package/template/src/components/precall/joinCallBtn.tsx +91 -0
- package/template/src/components/precall/meetingTitle.tsx +26 -0
- package/template/src/components/precall/selectDevice.tsx +46 -0
- package/template/src/components/precall/textInput.tsx +43 -0
- package/template/src/components/precall/usePreCall.tsx +41 -0
- package/template/src/components/styles.ts +20 -3
- package/template/src/components/useShareLink.tsx +222 -0
- package/template/src/components/useWakeLock.tsx +3 -3
- package/template/src/custom-events/CustomEvents.ts +197 -0
- package/template/src/custom-events/index.tsx +4 -0
- package/template/src/custom-events/types.ts +51 -0
- package/template/src/language/default-labels/commonLabels.ts +21 -0
- package/template/src/language/default-labels/createScreenLabels.ts +22 -0
- package/template/src/language/default-labels/index.ts +38 -0
- package/template/src/language/default-labels/joinScreenLabels.ts +13 -0
- package/template/src/language/default-labels/precallScreenLabels.ts +33 -0
- package/template/src/language/default-labels/shareLinkScreenLabels.ts +44 -0
- package/template/src/language/default-labels/videoCallScreenLabels.ts +189 -0
- package/template/src/language/i18nTypes.ts +10 -0
- package/template/src/language/index.ts +18 -0
- package/template/src/language/useLanguage.tsx +92 -0
- package/template/src/pages/Authenticate.tsx +21 -15
- package/template/src/pages/Create.tsx +176 -159
- package/template/src/pages/Join.tsx +44 -32
- package/template/src/pages/VideoCall.tsx +134 -406
- package/template/src/pages/create/useCreate.tsx +37 -0
- package/template/src/pages/video-call/CustomLayout.ts +17 -0
- package/template/src/pages/video-call/CustomUserContextHolder.tsx +12 -0
- package/template/src/pages/video-call/DefaultLayouts.ts +65 -0
- package/template/src/pages/video-call/NameWithMicStatus.tsx +62 -0
- package/template/src/pages/video-call/RenderComponent.tsx +52 -0
- package/template/src/pages/video-call/VideoCallScreen.tsx +191 -0
- package/template/src/pages/video-call/VideoComponent.tsx +34 -0
- package/template/src/pages/video-call/VideoRenderer.tsx +86 -0
- package/template/src/pages/video-call/index.ts +20 -0
- package/template/src/rtm/RTMEngine.ts +58 -0
- package/template/src/rtm/utils.ts +28 -0
- package/template/src/rtm-events/EventUtils.ts +268 -0
- package/template/src/rtm-events/EventsQueue.ts +38 -0
- package/template/src/rtm-events/constants.ts +40 -0
- package/template/src/rtm-events/index.tsx +8 -0
- package/template/src/rtm-events/types.ts +7 -0
- package/template/src/subComponents/ChatBubble.tsx +18 -11
- package/template/src/subComponents/ChatContainer.tsx +78 -29
- package/template/src/subComponents/ChatInput.tsx +146 -70
- package/template/src/subComponents/CopyJoinInfo.tsx +52 -67
- package/template/src/subComponents/Error.tsx +35 -24
- package/template/src/subComponents/LanguageSelector.tsx +85 -0
- package/template/src/subComponents/LayoutIconDropdown.native.tsx +163 -0
- package/template/src/subComponents/LayoutIconDropdown.tsx +198 -0
- package/template/src/subComponents/LocalAudioMute.tsx +52 -30
- package/template/src/subComponents/LocalEndCall.tsx +52 -0
- package/template/src/subComponents/LocalSwitchCamera.tsx +61 -0
- package/template/src/subComponents/LocalVideoMute.tsx +48 -30
- package/template/src/subComponents/LogoutButton.tsx +20 -5
- package/template/src/subComponents/NetworkQualityPill.tsx +43 -13
- package/template/src/subComponents/OpenInNativeButton.tsx +3 -2
- package/template/src/subComponents/Recording.tsx +46 -138
- package/template/src/subComponents/RemoteAudioMute.tsx +30 -34
- package/template/src/subComponents/RemoteEndCall.tsx +18 -7
- package/template/src/subComponents/RemoteVideoMute.tsx +17 -9
- package/template/src/subComponents/ScreenShareNotice.tsx +40 -40
- package/template/src/subComponents/SelectDevice.tsx +88 -45
- package/template/src/subComponents/SelectOAuth.tsx +30 -6
- package/template/src/subComponents/SidePanelButtons.ts +39 -0
- package/template/src/subComponents/TextWithTooltip.native.tsx +2 -1
- package/template/src/subComponents/TextWithTooltip.tsx +15 -20
- package/template/src/subComponents/chat/ChatParticipants.tsx +31 -32
- package/template/src/subComponents/livestream/ApprovedLiveStreamControlsView.tsx +7 -3
- package/template/src/subComponents/livestream/CurrentLiveStreamRequestsView.tsx +32 -18
- package/template/src/subComponents/livestream/controls/LocalRaiseHand.tsx +22 -8
- package/template/src/subComponents/livestream/controls/RemoteLiveStreamApprovedRequestRecall.tsx +12 -7
- package/template/src/subComponents/livestream/controls/RemoteLiveStreamRequestApprove.tsx +24 -27
- package/template/src/subComponents/livestream/controls/RemoteLiveStreamRequestReject.tsx +23 -26
- package/template/src/subComponents/livestream/index.ts +10 -2
- package/template/src/subComponents/recording/useRecording.tsx +209 -0
- package/template/src/subComponents/recording/useRecordingLayoutQuery.tsx +64 -0
- package/template/src/subComponents/screenshare/ScreenshareButton.native.tsx +18 -0
- package/template/src/subComponents/screenshare/ScreenshareButton.tsx +59 -31
- package/template/src/subComponents/screenshare/ScreenshareConfigure.native.tsx +57 -52
- package/template/src/subComponents/screenshare/ScreenshareConfigure.tsx +97 -138
- package/template/src/subComponents/screenshare/useScreenshare.tsx +29 -0
- package/template/src/subComponents/toastConfig.tsx +25 -20
- package/template/src/utils/IsAttendeeUser.ts +34 -0
- package/template/src/utils/SdkEvents.ts +68 -0
- package/template/src/utils/common.tsx +40 -0
- package/template/src/utils/eventEmitter.ts +29 -0
- package/template/src/utils/getMeetingInvite.ts +30 -0
- package/template/src/utils/index.tsx +11 -2
- package/template/src/utils/isAudioEnabled.ts +29 -0
- package/template/src/utils/isHostUser.ts +33 -0
- package/template/src/utils/isMobileOrTablet.native.ts +5 -0
- package/template/src/utils/{mobileWebTest.tsx → isMobileOrTablet.ts} +5 -2
- package/template/src/utils/isPSTNUser.ts +30 -0
- package/template/src/utils/isSDK.sdk.ts +5 -0
- package/template/src/utils/isSDK.ts +5 -0
- package/template/src/utils/isScreenShareUser.ts +31 -0
- package/template/src/utils/isVideoEnabled.ts +29 -0
- package/template/src/utils/useButtonTemplate.tsx +43 -0
- package/template/src/utils/useCreateMeeting.ts +74 -0
- package/template/src/utils/useGetLiveStreamingRequests.ts +24 -0
- package/template/src/utils/useGetMeetingPhrase.ts +68 -0
- package/template/src/utils/useGetName.ts +20 -0
- package/template/src/{subComponents/screenshare/ScreenshareContext.tsx → utils/useGroupMessages.ts} +10 -7
- package/template/src/utils/useJoinMeeting.ts +120 -0
- package/template/src/utils/useLayout.tsx +40 -0
- package/template/src/utils/useLiveStreamingUids.ts +26 -0
- package/template/src/utils/useMutePSTN.ts +43 -0
- package/template/src/utils/useMuteToggleLocal.ts +109 -0
- package/template/src/utils/useNavParams.ts +6 -0
- package/template/src/utils/useNavigateTo.ts +8 -0
- package/template/src/utils/usePrivateMessages.ts +33 -0
- package/template/src/utils/useRemoteEndCall.ts +27 -0
- package/template/src/utils/useRemoteMute.ts +64 -0
- package/template/src/utils/useSendControlMessage.ts +51 -0
- package/template/src/utils/useSendMessage.ts +40 -0
- package/template/src/utils/useSetName.ts +20 -0
- package/template/src/utils/useSetUnreadMessageCount.ts +43 -0
- package/template/src/utils/useSidePanel.tsx +41 -0
- package/template/src/utils/useString.ts +61 -0
- package/template/src/utils/useUnreadMessageCount.ts +50 -0
- package/template/src/utils/useUserList.ts +26 -0
- package/template/tsconfig.json +4 -4
- package/template/tsconfig_fpeApi.json +103 -0
- package/template/tsconfig_rsdk_index.json +105 -0
- package/template/tsconfig_wsdk_index.json +104 -0
- package/template/webpack.commons.js +40 -16
- package/template/webpack.main.config.js +2 -1
- package/template/webpack.renderer.config.js +1 -1
- package/template/webpack.rsdk.config.js +33 -0
- package/template/webpack.ts.config.js +89 -0
- package/template/webpack.web.config.js +8 -1
- package/template/webpack.wsdk.config.js +34 -0
- package/template/agora-rn-uikit/.git/logs/refs/heads/ab-dev-auto +0 -1
- package/template/agora-rn-uikit/.git/objects/pack/pack-0061d00cd98162a329a32b537488a35d0abeb069.idx +0 -0
- package/template/agora-rn-uikit/.git/refs/heads/ab-dev-auto +0 -1
- package/template/agora-rn-uikit/src/Contexts/MaxUidContext.tsx +0 -7
- package/template/agora-rn-uikit/src/Contexts/MinUidContext.tsx +0 -8
- package/template/src/components/participants/context/ParticipantContext.tsx +0 -97
- package/template/src/subComponents/ScreenshareButton.tsx +0 -257
- package/template/src/subComponents/SwitchCamera.tsx +0 -35
- package/template/src/utils/hasBrandLogo.tsx +0 -3
- package/template/src/utils/mobileWebTest.native.tsx +0 -5
- package/template/src/utils/shouldAuthenticate.tsx +0 -7
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/*
|
|
2
|
+
********************************************
|
|
3
|
+
Copyright © 2021 Agora Lab, Inc., all rights reserved.
|
|
4
|
+
AppBuilder and all associated components, source code, APIs, services, and documentation
|
|
5
|
+
(the “Materials”) are owned by Agora Lab, Inc. and its licensors. The Materials may not be
|
|
6
|
+
accessed, used, modified, or distributed for any purpose without a license from Agora Lab, Inc.
|
|
7
|
+
Use without a license or in violation of any license terms and conditions (including use for
|
|
8
|
+
any purpose competitive to Agora Lab, Inc.’s business) is strictly prohibited. For more
|
|
9
|
+
information visit https://appbuilder.agora.io.
|
|
10
|
+
*********************************************
|
|
11
|
+
*/
|
|
12
|
+
import React, {createContext, useContext, useEffect, useState} from 'react';
|
|
13
|
+
import {createHook} from 'fpe-implementation';
|
|
14
|
+
import {useFpe} from 'fpe-api';
|
|
15
|
+
import {DEFAULT_I18_DATA} from './index';
|
|
16
|
+
import StorageContext from '../components/StorageContext';
|
|
17
|
+
|
|
18
|
+
export interface LanguageContextInterface {
|
|
19
|
+
languageCode: string;
|
|
20
|
+
setLanguageCode: (code: string) => void;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export interface LanguagePropsInterface {
|
|
24
|
+
children: React.ReactNode;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
const LanguageContext = createContext<LanguageContextInterface>({
|
|
28
|
+
languageCode: DEFAULT_I18_DATA.locale,
|
|
29
|
+
setLanguageCode: () => {},
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
const LanguageProvider = (props: LanguagePropsInterface) => {
|
|
33
|
+
const {store, setStore} = useContext(StorageContext);
|
|
34
|
+
const i18nData = useFpe((data) => data?.i18n);
|
|
35
|
+
|
|
36
|
+
//If language code is stored in the localstorage no longer available in fpe data
|
|
37
|
+
//then we will update the localstorage value to default value
|
|
38
|
+
let storedCode =
|
|
39
|
+
i18nData && Array.isArray(i18nData) && i18nData.length
|
|
40
|
+
? i18nData?.find((item) => item.locale === store.selectedLanguageCode)
|
|
41
|
+
? store.selectedLanguageCode
|
|
42
|
+
: undefined
|
|
43
|
+
: undefined;
|
|
44
|
+
|
|
45
|
+
const [languageCode, setLanguageCodeLocal] = useState(
|
|
46
|
+
storedCode ||
|
|
47
|
+
(i18nData && Array.isArray(i18nData) && i18nData.length
|
|
48
|
+
? i18nData[0].locale
|
|
49
|
+
: false) ||
|
|
50
|
+
DEFAULT_I18_DATA.locale,
|
|
51
|
+
);
|
|
52
|
+
|
|
53
|
+
useEffect(() => {
|
|
54
|
+
if (setStore) {
|
|
55
|
+
setStore((prevState) => {
|
|
56
|
+
return {
|
|
57
|
+
...prevState,
|
|
58
|
+
selectedLanguageCode: languageCode,
|
|
59
|
+
};
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
}, [languageCode]);
|
|
63
|
+
|
|
64
|
+
useEffect(() => {
|
|
65
|
+
let storedCode =
|
|
66
|
+
i18nData && Array.isArray(i18nData) && i18nData.length
|
|
67
|
+
? i18nData?.find((item) => item.locale === store.selectedLanguageCode)
|
|
68
|
+
? store.selectedLanguageCode
|
|
69
|
+
: undefined
|
|
70
|
+
: undefined;
|
|
71
|
+
setLanguageCodeLocal(
|
|
72
|
+
storedCode ||
|
|
73
|
+
(i18nData && Array.isArray(i18nData) && i18nData.length
|
|
74
|
+
? i18nData[0].locale
|
|
75
|
+
: false) ||
|
|
76
|
+
DEFAULT_I18_DATA.locale,
|
|
77
|
+
);
|
|
78
|
+
}, [i18nData]);
|
|
79
|
+
|
|
80
|
+
const setLanguageCode = (langCode: string) => {
|
|
81
|
+
setLanguageCodeLocal(langCode);
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
return (
|
|
85
|
+
<LanguageContext.Provider value={{languageCode, setLanguageCode}}>
|
|
86
|
+
{props.children}
|
|
87
|
+
</LanguageContext.Provider>
|
|
88
|
+
);
|
|
89
|
+
};
|
|
90
|
+
const useLanguage = createHook(LanguageContext);
|
|
91
|
+
|
|
92
|
+
export {LanguageProvider, useLanguage};
|
|
@@ -9,28 +9,36 @@
|
|
|
9
9
|
information visit https://appbuilder.agora.io.
|
|
10
10
|
*********************************************
|
|
11
11
|
*/
|
|
12
|
-
import React, {useState} from 'react';
|
|
12
|
+
import React, {useContext, useState} from 'react';
|
|
13
13
|
import {
|
|
14
14
|
View,
|
|
15
15
|
Text,
|
|
16
16
|
ImageBackground,
|
|
17
17
|
StyleSheet,
|
|
18
|
-
|
|
18
|
+
LayoutChangeEvent,
|
|
19
19
|
} from 'react-native';
|
|
20
20
|
import Logo from '../subComponents/Logo';
|
|
21
21
|
import OAuth from '../components/OAuth';
|
|
22
22
|
import Illustration from '../subComponents/Illustration';
|
|
23
|
-
import hasBrandLogo from '../utils/
|
|
23
|
+
import {hasBrandLogo} from '../utils/common';
|
|
24
|
+
import DimensionContext from '../components/dimension/DimensionContext';
|
|
25
|
+
import {useString} from '../utils/useString';
|
|
24
26
|
|
|
25
27
|
const Authenticate = () => {
|
|
26
|
-
const
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
28
|
+
const {getDimensionData} = useContext(DimensionContext);
|
|
29
|
+
const [isDesktop, setIsDesktop] = useState(false);
|
|
30
|
+
let onLayout = (e: LayoutChangeEvent) => {
|
|
31
|
+
const {isDesktop} = getDimensionData(
|
|
32
|
+
e.nativeEvent.layout.width,
|
|
33
|
+
e.nativeEvent.layout.height,
|
|
34
|
+
);
|
|
35
|
+
setIsDesktop(isDesktop);
|
|
33
36
|
};
|
|
37
|
+
//commented for v1 release
|
|
38
|
+
// const oauthLoginLabel = useString('oauthLoginLabel')();
|
|
39
|
+
// const oauthProviderLabel = useString('oauthProviderLabel')();
|
|
40
|
+
const oauthLoginLabel = 'Login using OAuth';
|
|
41
|
+
const oauthProviderLabel = 'Please select an OAuth provider to login.';
|
|
34
42
|
return (
|
|
35
43
|
<ImageBackground
|
|
36
44
|
onLayout={onLayout}
|
|
@@ -41,13 +49,11 @@ const Authenticate = () => {
|
|
|
41
49
|
<View style={style.nav}>{hasBrandLogo && <Logo />}</View>
|
|
42
50
|
<View style={style.content}>
|
|
43
51
|
<View style={style.leftContent}>
|
|
44
|
-
<Text style={style.heading}>
|
|
45
|
-
<Text style={style.headline}>
|
|
46
|
-
Please select an OAuth provider to login.
|
|
47
|
-
</Text>
|
|
52
|
+
<Text style={style.heading}>{oauthLoginLabel}</Text>
|
|
53
|
+
<Text style={style.headline}>{oauthProviderLabel}</Text>
|
|
48
54
|
<OAuth />
|
|
49
55
|
</View>
|
|
50
|
-
{
|
|
56
|
+
{isDesktop ? (
|
|
51
57
|
<View style={style.full}>
|
|
52
58
|
<Illustration />
|
|
53
59
|
</View>
|
|
@@ -9,200 +9,217 @@
|
|
|
9
9
|
information visit https://appbuilder.agora.io.
|
|
10
10
|
*********************************************
|
|
11
11
|
*/
|
|
12
|
-
import React, {useEffect, useState} from 'react';
|
|
13
|
-
import {
|
|
14
|
-
View,
|
|
15
|
-
Text,
|
|
16
|
-
StyleSheet,
|
|
17
|
-
Dimensions,
|
|
18
|
-
ScrollView,
|
|
19
|
-
Platform,
|
|
20
|
-
} from 'react-native';
|
|
12
|
+
import React, {useEffect, useState, useContext} from 'react';
|
|
13
|
+
import {View, Text, StyleSheet, ScrollView} from 'react-native';
|
|
21
14
|
import {useHistory} from '../components/Router';
|
|
22
15
|
import Checkbox from '../subComponents/Checkbox';
|
|
23
|
-
import {gql, useMutation} from '@apollo/client';
|
|
24
|
-
import Logo from '../subComponents/Logo';
|
|
25
|
-
// import OpenInNativeButton from '../subComponents/OpenInNativeButton';
|
|
26
|
-
import Share from '../components/Share';
|
|
27
|
-
// import ColorContext from '../components/ColorContext';
|
|
28
|
-
// import Illustration from '../subComponents/Illustration';
|
|
29
|
-
// import {textInput} from '../../theme.json';
|
|
30
16
|
import PrimaryButton from '../atoms/PrimaryButton';
|
|
31
17
|
import SecondaryButton from '../atoms/SecondaryButton';
|
|
32
18
|
import HorizontalRule from '../atoms/HorizontalRule';
|
|
33
19
|
import TextInput from '../atoms/TextInput';
|
|
34
|
-
import Error from '../subComponents/Error';
|
|
35
20
|
import Toast from '../../react-native-toast-message';
|
|
36
|
-
import
|
|
21
|
+
import {ErrorContext} from '../components/common';
|
|
22
|
+
import ShareLink from '../components/Share';
|
|
23
|
+
import Logo from '../components/common/Logo';
|
|
24
|
+
import {isWeb, isValidReactComponent} from '../utils/common';
|
|
25
|
+
import {useFpe, useMeetingInfo} from 'fpe-api';
|
|
26
|
+
import {useString} from '../utils/useString';
|
|
27
|
+
import useCreateMeeting from '../utils/useCreateMeeting';
|
|
28
|
+
import {CreateProvider} from './create/useCreate';
|
|
29
|
+
import useJoinMeeting from '../utils/useJoinMeeting';
|
|
30
|
+
import SDKEvents from '../utils/SdkEvents';
|
|
37
31
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
32
|
+
const Create = () => {
|
|
33
|
+
const {CreateComponent} = useFpe((data) => {
|
|
34
|
+
let components: {
|
|
35
|
+
CreateComponent?: React.ElementType;
|
|
36
|
+
} = {};
|
|
37
|
+
// commented for v1 release
|
|
38
|
+
// if (
|
|
39
|
+
// data?.components?.create &&
|
|
40
|
+
// typeof data?.components?.create !== 'object'
|
|
41
|
+
// ) {
|
|
42
|
+
// if (
|
|
43
|
+
// data?.components?.create &&
|
|
44
|
+
// isValidReactComponent(data?.components?.create)
|
|
45
|
+
// )
|
|
46
|
+
// components.CreateComponent = data?.components?.create;
|
|
47
|
+
// }
|
|
48
|
+
return components;
|
|
49
|
+
});
|
|
42
50
|
|
|
43
|
-
const
|
|
44
|
-
mutation CreateChannel(
|
|
45
|
-
$title: String!
|
|
46
|
-
$backendURL: String!
|
|
47
|
-
$enablePSTN: Boolean
|
|
48
|
-
) {
|
|
49
|
-
createChannel(
|
|
50
|
-
title: $title
|
|
51
|
-
backendURL: $backendURL
|
|
52
|
-
enablePSTN: $enablePSTN
|
|
53
|
-
) {
|
|
54
|
-
passphrase {
|
|
55
|
-
host
|
|
56
|
-
view
|
|
57
|
-
}
|
|
58
|
-
channel
|
|
59
|
-
title
|
|
60
|
-
pstn {
|
|
61
|
-
number
|
|
62
|
-
dtmf
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
`;
|
|
51
|
+
const useJoin = useJoinMeeting();
|
|
67
52
|
|
|
68
|
-
const
|
|
69
|
-
// const {primaryColor} = useContext(ColorContext);
|
|
53
|
+
const {setGlobalErrorMessage} = useContext(ErrorContext);
|
|
70
54
|
const history = useHistory();
|
|
55
|
+
const [loading, setLoading] = useState(false);
|
|
71
56
|
const [roomTitle, onChangeRoomTitle] = useState('');
|
|
72
57
|
const [pstnCheckbox, setPstnCheckbox] = useState(false);
|
|
73
58
|
const [hostControlCheckbox, setHostControlCheckbox] = useState(true);
|
|
74
|
-
const [urlView, setUrlView] = useState(null);
|
|
75
|
-
const [urlHost, setUrlHost] = useState(null);
|
|
76
|
-
const [pstn, setPstn] = useState(null);
|
|
77
59
|
const [roomCreated, setRoomCreated] = useState(false);
|
|
78
|
-
const
|
|
79
|
-
const
|
|
60
|
+
const createRoomFun = useCreateMeeting();
|
|
61
|
+
const {
|
|
62
|
+
meetingPassphrase: {attendee, host, pstn},
|
|
63
|
+
} = useMeetingInfo();
|
|
64
|
+
//commented for v1 release
|
|
65
|
+
// const createdText = useString('meetingCreatedNotificationLabel')();
|
|
66
|
+
// const hostControlsToggle = useString<boolean>('hostControlsToggle');
|
|
67
|
+
// const pstnToggle = useString<boolean>('pstnToggle');
|
|
68
|
+
// const loadingWithDots = useString('loadingWithDots')();
|
|
69
|
+
// const createMeetingButton = useString('createMeetingButton')();
|
|
70
|
+
// const haveMeetingID = useString('haveMeetingID')();
|
|
80
71
|
|
|
81
|
-
|
|
72
|
+
const createdText = 'Created';
|
|
73
|
+
const hostControlsToggle = (toggle: boolean) =>
|
|
74
|
+
toggle
|
|
75
|
+
? 'Restrict Host Controls (Separate host link)'
|
|
76
|
+
: 'Restrict Host Controls (Everyone is a Host)';
|
|
77
|
+
const pstnToggle = () => 'Use PSTN (Join by dialing a number)';
|
|
78
|
+
const meetingNameInputPlaceholder = useString(
|
|
79
|
+
'meetingNameInputPlaceholder',
|
|
80
|
+
)();
|
|
81
|
+
const loadingWithDots = 'Loading...';
|
|
82
|
+
const createMeetingButton = 'Create Meeting';
|
|
83
|
+
const haveMeetingID = 'Have a Meeting ID?';
|
|
82
84
|
|
|
83
85
|
useEffect(() => {
|
|
84
|
-
if (
|
|
86
|
+
if (isWeb) {
|
|
85
87
|
document.title = $config.APP_NAME;
|
|
86
88
|
}
|
|
89
|
+
SDKEvents.on('joinMeetingWithPhrase', (phrase) => {
|
|
90
|
+
console.log(
|
|
91
|
+
'DEBUG(aditya)-SDKEvents: joinMeetingWithPhrase event called',
|
|
92
|
+
);
|
|
93
|
+
useJoin(phrase);
|
|
94
|
+
});
|
|
95
|
+
return () => {
|
|
96
|
+
SDKEvents.off('joinMeetingWithPhrase');
|
|
97
|
+
};
|
|
87
98
|
}, []);
|
|
88
99
|
|
|
89
|
-
const
|
|
100
|
+
const showShareScreen = () => {
|
|
101
|
+
setRoomCreated(true);
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
useEffect(() => {
|
|
105
|
+
if (attendee) {
|
|
106
|
+
SDKEvents.emit('create', host, attendee, pstn);
|
|
107
|
+
}
|
|
108
|
+
}, [attendee]);
|
|
109
|
+
|
|
110
|
+
const createRoomAndNavigateToShare = async (
|
|
111
|
+
roomTitle: string,
|
|
112
|
+
enablePSTN: boolean,
|
|
113
|
+
isSeparateHostLink: boolean,
|
|
114
|
+
) => {
|
|
90
115
|
if (roomTitle !== '') {
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
.then((res: any) => {
|
|
100
|
-
Toast.show({
|
|
101
|
-
text1: 'Created: ' + roomTitle,
|
|
102
|
-
visibilityTime: 1000,
|
|
103
|
-
});
|
|
104
|
-
console.log('promise data', res);
|
|
105
|
-
setUrlView(res.data.createChannel.passphrase.view);
|
|
106
|
-
setUrlHost(res.data.createChannel.passphrase.host);
|
|
107
|
-
setPstn(res.data.createChannel.pstn);
|
|
108
|
-
setJoinPhrase(res.data.createChannel.passphrase.host);
|
|
109
|
-
setRoomCreated(true);
|
|
110
|
-
})
|
|
111
|
-
.catch((e) => {
|
|
112
|
-
console.log(e);
|
|
116
|
+
setLoading(true);
|
|
117
|
+
try {
|
|
118
|
+
await createRoomFun(roomTitle, enablePSTN, isSeparateHostLink);
|
|
119
|
+
setLoading(false);
|
|
120
|
+
Toast.show({
|
|
121
|
+
type: 'success',
|
|
122
|
+
text1: createdText + ': ' + roomTitle,
|
|
123
|
+
visibilityTime: 1000,
|
|
113
124
|
});
|
|
125
|
+
showShareScreen();
|
|
126
|
+
} catch (error) {
|
|
127
|
+
setLoading(false);
|
|
128
|
+
setGlobalErrorMessage(error);
|
|
129
|
+
}
|
|
114
130
|
}
|
|
115
131
|
};
|
|
116
132
|
|
|
117
|
-
const [dim, setDim] = useState([
|
|
118
|
-
Dimensions.get('window').width,
|
|
119
|
-
Dimensions.get('window').height,
|
|
120
|
-
Dimensions.get('window').width > Dimensions.get('window').height,
|
|
121
|
-
]);
|
|
122
|
-
let onLayout = (e: any) => {
|
|
123
|
-
setDim([e.nativeEvent.layout.width, e.nativeEvent.layout.height]);
|
|
124
|
-
};
|
|
125
|
-
|
|
126
133
|
return (
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
<ScrollView contentContainerStyle={style.main}>
|
|
132
|
-
<View style={style.nav}>
|
|
133
|
-
{hasBrandLogo && <Logo />}
|
|
134
|
-
{error ? <Error error={error} /> : <></>}
|
|
135
|
-
{/* <OpenInNativeButton /> */}
|
|
136
|
-
</View>
|
|
134
|
+
<CreateProvider
|
|
135
|
+
value={{
|
|
136
|
+
showShareScreen,
|
|
137
|
+
}}>
|
|
137
138
|
{!roomCreated ? (
|
|
138
|
-
|
|
139
|
-
<
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
<
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
139
|
+
CreateComponent ? (
|
|
140
|
+
<CreateComponent />
|
|
141
|
+
) : (
|
|
142
|
+
<ScrollView contentContainerStyle={style.main}>
|
|
143
|
+
<Logo />
|
|
144
|
+
<View style={style.content}>
|
|
145
|
+
<View style={style.leftContent}>
|
|
146
|
+
<Text style={style.heading}>{$config.APP_NAME}</Text>
|
|
147
|
+
<Text style={style.headline}>
|
|
148
|
+
{$config.LANDING_SUB_HEADING}
|
|
149
|
+
</Text>
|
|
150
|
+
<View style={style.inputs}>
|
|
151
|
+
<TextInput
|
|
152
|
+
value={roomTitle}
|
|
153
|
+
onChangeText={(text) => onChangeRoomTitle(text)}
|
|
154
|
+
onSubmitEditing={() =>
|
|
155
|
+
createRoomAndNavigateToShare(
|
|
156
|
+
roomTitle,
|
|
157
|
+
pstnCheckbox,
|
|
158
|
+
hostControlCheckbox,
|
|
159
|
+
)
|
|
160
|
+
}
|
|
161
|
+
placeholder={meetingNameInputPlaceholder}
|
|
162
|
+
/>
|
|
163
|
+
<View style={{paddingVertical: 10}}>
|
|
164
|
+
<View style={style.checkboxHolder}>
|
|
165
|
+
{$config.EVENT_MODE ? (
|
|
166
|
+
<></>
|
|
167
|
+
) : (
|
|
168
|
+
<>
|
|
169
|
+
<Checkbox
|
|
170
|
+
disabled={$config.EVENT_MODE}
|
|
171
|
+
value={hostControlCheckbox}
|
|
172
|
+
onValueChange={setHostControlCheckbox}
|
|
173
|
+
/>
|
|
174
|
+
<Text style={style.checkboxTitle}>
|
|
175
|
+
{/* Restrict Host Controls (Separate host link) */}
|
|
176
|
+
{hostControlsToggle(hostControlCheckbox)}
|
|
177
|
+
</Text>
|
|
178
|
+
</>
|
|
179
|
+
)}
|
|
180
|
+
</View>
|
|
181
|
+
{$config.PSTN ? (
|
|
182
|
+
<View style={style.checkboxHolder}>
|
|
183
|
+
<Checkbox
|
|
184
|
+
value={pstnCheckbox}
|
|
185
|
+
onValueChange={setPstnCheckbox}
|
|
186
|
+
/>
|
|
187
|
+
<Text style={style.checkboxTitle}>
|
|
188
|
+
{pstnToggle(pstnCheckbox)}
|
|
189
|
+
</Text>
|
|
190
|
+
</View>
|
|
191
|
+
) : (
|
|
192
|
+
<></>
|
|
193
|
+
)}
|
|
194
|
+
</View>
|
|
195
|
+
<View style={style.btnContainer}>
|
|
196
|
+
<PrimaryButton
|
|
197
|
+
disabled={roomTitle === '' || loading}
|
|
198
|
+
onPress={() =>
|
|
199
|
+
createRoomAndNavigateToShare(
|
|
200
|
+
roomTitle,
|
|
201
|
+
pstnCheckbox,
|
|
202
|
+
hostControlCheckbox,
|
|
203
|
+
)
|
|
204
|
+
}
|
|
205
|
+
text={loading ? loadingWithDots : createMeetingButton}
|
|
206
|
+
/>
|
|
207
|
+
<HorizontalRule />
|
|
208
|
+
<SecondaryButton
|
|
209
|
+
onPress={() => history.push('/join')}
|
|
210
|
+
text={haveMeetingID}
|
|
171
211
|
/>
|
|
172
|
-
<Text style={style.checkboxTitle}>
|
|
173
|
-
Use PSTN (Join by dialing a number)
|
|
174
|
-
</Text>
|
|
175
212
|
</View>
|
|
176
|
-
|
|
177
|
-
<></>
|
|
178
|
-
)}
|
|
179
|
-
</View>
|
|
180
|
-
<View style={style.btnContainer}>
|
|
181
|
-
<PrimaryButton
|
|
182
|
-
disabled={roomTitle === '' || loading}
|
|
183
|
-
onPress={() => createRoom()}
|
|
184
|
-
text={loading ? 'Loading...' : 'Create Meeting'}
|
|
185
|
-
/>
|
|
186
|
-
<HorizontalRule />
|
|
187
|
-
<SecondaryButton
|
|
188
|
-
onPress={() => history.push('/join')}
|
|
189
|
-
text={'Have a Meeting ID?'}
|
|
190
|
-
/>
|
|
213
|
+
</View>
|
|
191
214
|
</View>
|
|
192
215
|
</View>
|
|
193
|
-
</
|
|
194
|
-
|
|
216
|
+
</ScrollView>
|
|
217
|
+
)
|
|
195
218
|
) : (
|
|
196
|
-
|
|
197
|
-
urlView={urlView}
|
|
198
|
-
urlHost={urlHost}
|
|
199
|
-
pstn={pstn}
|
|
200
|
-
hostControlCheckbox={hostControlCheckbox}
|
|
201
|
-
joinPhrase={joinPhrase}
|
|
202
|
-
roomTitle={roomTitle}
|
|
203
|
-
/>
|
|
219
|
+
<></>
|
|
204
220
|
)}
|
|
205
|
-
|
|
221
|
+
{roomCreated ? <ShareLink /> : <></>}
|
|
222
|
+
</CreateProvider>
|
|
206
223
|
);
|
|
207
224
|
};
|
|
208
225
|
|
|
@@ -9,54 +9,66 @@
|
|
|
9
9
|
information visit https://appbuilder.agora.io.
|
|
10
10
|
*********************************************
|
|
11
11
|
*/
|
|
12
|
-
|
|
12
|
+
// @ts-nocheck
|
|
13
|
+
import React, {useState} from 'react';
|
|
13
14
|
import {View, Text, StyleSheet, ScrollView} from 'react-native';
|
|
14
15
|
import {useHistory} from '../components/Router';
|
|
15
|
-
import SessionContext from '../components/SessionContext';
|
|
16
|
-
// import OpenInNativeButton from '../subComponents/OpenInNativeButton';
|
|
17
16
|
import Logo from '../subComponents/Logo';
|
|
18
|
-
import
|
|
17
|
+
import {
|
|
18
|
+
isValidReactComponent,
|
|
19
|
+
shouldAuthenticate,
|
|
20
|
+
hasBrandLogo,
|
|
21
|
+
} from '../utils/common';
|
|
19
22
|
import LogoutButton from '../subComponents/LogoutButton';
|
|
20
|
-
import ColorContext from '../components/ColorContext';
|
|
21
|
-
// import Illustration from '../subComponents/Illustration';
|
|
22
|
-
// import {secondaryBtn} from '../../theme.json';
|
|
23
23
|
import PrimaryButton from '../atoms/PrimaryButton';
|
|
24
24
|
import SecondaryButton from '../atoms/SecondaryButton';
|
|
25
25
|
import HorizontalRule from '../atoms/HorizontalRule';
|
|
26
26
|
import TextInput from '../atoms/TextInput';
|
|
27
27
|
import Error from '../subComponents/Error';
|
|
28
|
-
import
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
const
|
|
28
|
+
import {useString} from '../utils/useString';
|
|
29
|
+
import useNavigateTo from '../utils/useNavigateTo';
|
|
30
|
+
import {useFpe} from 'fpe-api';
|
|
31
|
+
|
|
32
|
+
const Join = () => {
|
|
33
|
+
//commented for v1 release
|
|
34
|
+
// const meetingIdInputPlaceholder = useString('meetingIdInputPlaceholder')();
|
|
35
|
+
// const enterMeetingButton = useString('enterMeetingButton')();
|
|
36
|
+
// const createMeetingButton = useString('createMeetingButton')();
|
|
37
|
+
const meetingIdInputPlaceholder = 'Enter Meeting ID';
|
|
38
|
+
const enterMeetingButton = 'Enter Meeting';
|
|
39
|
+
const createMeetingButton = 'Create Meeting';
|
|
35
40
|
const history = useHistory();
|
|
36
|
-
const
|
|
37
|
-
const
|
|
41
|
+
const [phrase, setPhrase] = useState('');
|
|
42
|
+
const navigateTo = useNavigateTo();
|
|
38
43
|
const [error, setError] = useState<null | {name: string; message: string}>(
|
|
39
44
|
null,
|
|
40
45
|
);
|
|
41
|
-
|
|
42
|
-
// Dimensions.get('window').width,
|
|
43
|
-
// Dimensions.get('window').height,
|
|
44
|
-
// Dimensions.get('window').width > Dimensions.get('window').height,
|
|
45
|
-
// ]);
|
|
46
|
-
// let onLayout = (e: any) => {
|
|
47
|
-
// setDim([e.nativeEvent.layout.width, e.nativeEvent.layout.height]);
|
|
48
|
-
// };
|
|
46
|
+
|
|
49
47
|
const createMeeting = () => {
|
|
50
48
|
history.push('/create');
|
|
51
49
|
};
|
|
52
50
|
|
|
53
|
-
const phrase = props.phrase;
|
|
54
|
-
const onChangePhrase = props.onChangePhrase;
|
|
55
51
|
const startCall = async () => {
|
|
56
|
-
|
|
52
|
+
navigateTo(phrase);
|
|
57
53
|
};
|
|
54
|
+
const {JoinComponent} = useFpe((data) => {
|
|
55
|
+
let components: {
|
|
56
|
+
JoinComponent?: React.ComponentType;
|
|
57
|
+
} = {};
|
|
58
|
+
// commented for v1 release
|
|
59
|
+
// if (
|
|
60
|
+
// data?.components?.join &&
|
|
61
|
+
// typeof data?.components?.join !== 'object' &&
|
|
62
|
+
// isValidReactComponent(data?.components?.join)
|
|
63
|
+
// ) {
|
|
64
|
+
// components.JoinComponent = data?.components?.join;
|
|
65
|
+
// }
|
|
66
|
+
return components;
|
|
67
|
+
});
|
|
58
68
|
|
|
59
|
-
return (
|
|
69
|
+
return JoinComponent ? (
|
|
70
|
+
<JoinComponent />
|
|
71
|
+
) : (
|
|
60
72
|
<ScrollView contentContainerStyle={style.main}>
|
|
61
73
|
<View style={style.nav}>
|
|
62
74
|
{hasBrandLogo && <Logo />}
|
|
@@ -69,20 +81,20 @@ const Join = (props: joinProps) => {
|
|
|
69
81
|
<View style={style.inputs}>
|
|
70
82
|
<TextInput
|
|
71
83
|
value={phrase}
|
|
72
|
-
onChangeText={(text) =>
|
|
84
|
+
onChangeText={(text) => setPhrase(text)}
|
|
73
85
|
onSubmitEditing={() => startCall()}
|
|
74
|
-
placeholder=
|
|
86
|
+
placeholder={meetingIdInputPlaceholder}
|
|
75
87
|
/>
|
|
76
88
|
<View style={{height: 10}} />
|
|
77
89
|
<PrimaryButton
|
|
78
90
|
disabled={phrase === ''}
|
|
79
91
|
onPress={() => startCall()}
|
|
80
|
-
text={
|
|
92
|
+
text={enterMeetingButton}
|
|
81
93
|
/>
|
|
82
94
|
<HorizontalRule />
|
|
83
95
|
<SecondaryButton
|
|
84
96
|
onPress={() => createMeeting()}
|
|
85
|
-
text={
|
|
97
|
+
text={createMeetingButton}
|
|
86
98
|
/>
|
|
87
99
|
{shouldAuthenticate ? (
|
|
88
100
|
<LogoutButton setError={setError} /> //setError not available in logout?
|