@sky-mavis/tanto-widget
Version:
Tanto Widget
95 lines (91 loc) • 3.29 kB
JavaScript
;
var jsxRuntime = require('@emotion/react/jsx-runtime');
var react$1 = require('motion/react');
var react = require('react');
var wagmi = require('wagmi');
var analytic = require('../../analytic.cjs');
var index$1 = require('../../constants/index.cjs');
var useConnectCallback = require('../../hooks/useConnectCallback.cjs');
var useConnectorRequestAnalyticInterceptor = require('../../hooks/useConnectorRequestAnalyticInterceptor.cjs');
var usePreloadImages = require('../../hooks/usePreloadImages.cjs');
var useSolveRoninConnectionConflict = require('../../hooks/useSolveRoninConnectionConflict.cjs');
var useWalletConnectListener = require('../../hooks/useWalletConnectListener.cjs');
var index = require('../../utils/index.cjs');
var openWindow = require('../../utils/openWindow.cjs');
var ThemeProvider = require('../theme/ThemeProvider.cjs');
var WidgetModalProvider = require('../widget-modal/WidgetModalProvider.cjs');
var TantoContext = require('./TantoContext.cjs');
function TantoProvider({
config: customConfig,
theme,
customThemeToken,
onConnect,
onDisconnect,
children
}) {
useSolveRoninConnectionConflict.useSolveRoninConnectionConflict();
usePreloadImages.usePreloadTantoImages();
useConnectCallback.useConnectCallback({
onConnect: data => {
onConnect?.(data);
analytic.analytic.updateSession({
userAddress: data.address,
force: true
});
analytic.analytic.sendEvent('wallet_connect_success', {
wallet_id: data.connectorId,
address: data.address,
chain_id: data.chainId
});
},
onDisconnect: () => {
onDisconnect?.();
analytic.analytic.sendEvent('sdk_disconnect').then(() => {
analytic.analytic.updateSession({
userAddress: undefined,
force: true
});
});
}
});
useWalletConnectListener.useWalletConnectListener({
onSignRequest: () => {
if (index.isMobile()) openWindow.openWindow(index$1.RONIN_WALLET_APP_DEEPLINK);
}
});
useConnectorRequestAnalyticInterceptor.useConnectorRequestAnalyticInterceptor();
const chains = wagmi.useChains();
const defaultTantoConfig = {
reducedMotion: false,
disableProfile: false,
hideConnectSuccessPrompt: false,
initialChainId: chains?.[0]?.id
};
const config = react.useMemo(() => Object.assign({}, defaultTantoConfig, customConfig), [customConfig]);
const contextValue = react.useMemo(() => ({
config
}), [config]);
/* Start Analytic Session */
react.useEffect(() => {
analytic.analytic.updateSession({});
analytic.analytic.sendEvent('sdk_init');
}, []);
return jsxRuntime.jsx(TantoContext.TantoContext.Provider, {
value: contextValue,
children: jsxRuntime.jsx(ThemeProvider.ThemeProvider, {
theme: theme,
customThemeToken: customThemeToken,
children: jsxRuntime.jsx(react$1.MotionConfig, {
reducedMotion: config.reducedMotion ? 'always' : 'never',
children: jsxRuntime.jsx(react$1.LazyMotion, {
features: react$1.domAnimation,
strict: true,
children: jsxRuntime.jsx(WidgetModalProvider.WidgetModalProvider, {
children: children
})
})
})
})
});
}
exports.TantoProvider = TantoProvider;