UNPKG

@0xsequence/connect

Version:
99 lines 5.89 kB
"use strict"; 'use client'; Object.defineProperty(exports, "__esModule", { value: true }); exports.SequenceConnectPreviewProvider = void 0; const jsx_runtime_1 = require("react/jsx-runtime"); const _0xsequence_1 = require("0xsequence"); const design_system_1 = require("@0xsequence/design-system"); const google_1 = require("@react-oauth/google"); const react_1 = require("react"); const wagmi_1 = require("wagmi"); const ethAuth_js_1 = require("../../constants/ethAuth.js"); const localStorage_js_1 = require("../../constants/localStorage.js"); const Analytics_js_1 = require("../../contexts/Analytics.js"); const ConnectConfig_js_1 = require("../../contexts/ConnectConfig.js"); const ConnectModal_js_1 = require("../../contexts/ConnectModal.js"); const Theme_js_1 = require("../../contexts/Theme.js"); const WalletConfig_js_1 = require("../../contexts/WalletConfig.js"); const useStorage_js_1 = require("../../hooks/useStorage.js"); const useWaasEmailConflict_js_1 = require("../../hooks/useWaasEmailConflict.js"); const Connect_js_1 = require("../Connect/Connect.js"); const SequenceConnectPreviewProvider = (props) => { const { config, children } = props; const { defaultTheme = 'dark', signIn = {}, position = 'center', displayedAssets: displayedAssetsSetting = [], readOnlyNetworks, ethAuth = {}, disableAnalytics = false, hideExternalConnectOptions = false, hideConnectedWallets = false, hideSocialConnectOptions = false } = config; const defaultAppName = signIn.projectName || 'app'; const { expiry = ethAuth_js_1.DEFAULT_SESSION_EXPIRATION, app = defaultAppName, origin, nonce } = ethAuth; const [openConnectModal, setOpenConnectModal] = (0, react_1.useState)(false); const [theme, setTheme] = (0, react_1.useState)(defaultTheme || 'dark'); const [modalPosition, setModalPosition] = (0, react_1.useState)(position); const [displayedAssets, setDisplayedAssets] = (0, react_1.useState)(displayedAssetsSetting); const [analytics, setAnalytics] = (0, react_1.useState)(); const { address, isConnected } = (0, wagmi_1.useAccount)(); const wagmiConfig = (0, wagmi_1.useConfig)(); const storage = (0, useStorage_js_1.useStorage)(); const googleWaasConnector = wagmiConfig.connectors.find(c => c.id === 'sequence-waas' && c._wallet.id === 'google-waas'); const googleClientId = googleWaasConnector?.params?.googleClientId || ''; const setupAnalytics = (projectAccessKey) => { const s = _0xsequence_1.sequence.initWallet(projectAccessKey); const sequenceAnalytics = s.client.analytics; setAnalytics(sequenceAnalytics); }; (0, react_1.useEffect)(() => { if (!isConnected) { analytics?.reset(); return; } if (address) { analytics?.identify(address.toLowerCase()); } }, [analytics, address, isConnected]); (0, react_1.useEffect)(() => { if (!disableAnalytics) { setupAnalytics(config.projectAccessKey); } }, []); (0, react_1.useEffect)(() => { if (theme !== defaultTheme) { setTheme(defaultTheme); } }, [defaultTheme]); // Write data in local storage for retrieval in connectors (0, react_1.useEffect)(() => { // Theme // TODO: set the sequence theme once it is added to connect options if (typeof theme === 'object') { // localStorage.setItem(LocalStorageKey.Theme, JSON.stringify(theme)) } else { localStorage.setItem(localStorage_js_1.LocalStorageKey.Theme, theme); } // EthAuth // note: keep an eye out for potential race-conditions, though they shouldn't occur. // If there are race conditions, the settings could be a function executed prior to being passed to wagmi storage?.setItem(localStorage_js_1.LocalStorageKey.EthAuthSettings, { expiry, app, origin: origin || location.origin, nonce }); }, [theme, ethAuth]); (0, react_1.useEffect)(() => { setDisplayedAssets(displayedAssets); }, [displayedAssetsSetting]); const { emailConflictInfo } = (0, useWaasEmailConflict_js_1.useEmailConflict)(); return ((0, jsx_runtime_1.jsx)(ConnectConfig_js_1.ConnectConfigContextProvider, { value: config, children: (0, jsx_runtime_1.jsx)(Theme_js_1.ThemeContextProvider, { value: { theme, setTheme, position: modalPosition, setPosition: setModalPosition }, children: (0, jsx_runtime_1.jsx)(google_1.GoogleOAuthProvider, { clientId: googleClientId, children: (0, jsx_runtime_1.jsx)(ConnectModal_js_1.ConnectModalContextProvider, { value: { isConnectModalOpen: openConnectModal, setOpenConnectModal, openConnectModalState: openConnectModal }, children: (0, jsx_runtime_1.jsx)(WalletConfig_js_1.WalletConfigContextProvider, { value: { setDisplayedAssets, displayedAssets, readOnlyNetworks, hideExternalConnectOptions, hideConnectedWallets, hideSocialConnectOptions }, children: (0, jsx_runtime_1.jsxs)(Analytics_js_1.AnalyticsContextProvider, { value: { setAnalytics, analytics }, children: [(0, jsx_runtime_1.jsx)("div", { id: "kit-provider", children: (0, jsx_runtime_1.jsx)(design_system_1.ThemeProvider, { root: "#kit-provider", scope: "kit", theme: theme, children: (0, jsx_runtime_1.jsx)(Connect_js_1.Connect, { onClose: () => setOpenConnectModal(false), emailConflictInfo: emailConflictInfo, isPreview: true, ...props }) }) }), children] }) }) }) }) }) })); }; exports.SequenceConnectPreviewProvider = SequenceConnectPreviewProvider; //# sourceMappingURL=SequenceConnectPreviewProvider.js.map