@n1xyz/wallet-widget 0.0.28 → 0.0.30
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 +89 -11
- package/dist/Logic/sessionManager.js +8 -8
- package/dist/Logic/sessionManager.js.map +1 -1
- package/dist/Logic/transactionManager.d.ts +0 -22
- package/dist/Logic/transactionManager.js +0 -189
- package/dist/Logic/transactionManager.js.map +1 -1
- package/dist/Logic/utils.d.ts +3 -7
- package/dist/Logic/utils.js +3 -186
- package/dist/Logic/utils.js.map +1 -1
- package/dist/Modal/LoadingFallback.js +1 -1
- package/dist/Modal/LoadingFallback.js.map +1 -1
- package/dist/Modal/N1WalletModal.d.ts +1 -1
- package/dist/Modal/N1WalletModal.js +50 -205
- package/dist/Modal/N1WalletModal.js.map +1 -1
- package/dist/Modal/NTSFlow/views/CreateSessionView.d.ts +1 -1
- package/dist/Modal/NordFlow/NordFlow.js +44 -17
- package/dist/Modal/NordFlow/NordFlow.js.map +1 -1
- package/dist/Modal/NordFlow/components/ChainButton.d.ts +5 -2
- package/dist/Modal/NordFlow/components/ChainButton.js +16 -13
- package/dist/Modal/NordFlow/components/ChainButton.js.map +1 -1
- package/dist/Modal/NordFlow/components/EVMChainsButton.d.ts +2 -1
- package/dist/Modal/NordFlow/components/EVMChainsButton.js +11 -9
- package/dist/Modal/NordFlow/components/EVMChainsButton.js.map +1 -1
- package/dist/Modal/NordFlow/components/Header.d.ts +3 -1
- package/dist/Modal/NordFlow/components/Header.js +38 -4
- package/dist/Modal/NordFlow/components/Header.js.map +1 -1
- package/dist/Modal/NordFlow/components/ImageWithFallback.js +1 -1
- package/dist/Modal/NordFlow/components/ImageWithFallback.js.map +1 -1
- package/dist/Modal/NordFlow/components/MoreButton.d.ts +1 -1
- package/dist/Modal/NordFlow/components/MoreButton.js +4 -4
- package/dist/Modal/NordFlow/components/MoreButton.js.map +1 -1
- package/dist/Modal/NordFlow/components/TransactionTable.d.ts +1 -1
- package/dist/Modal/NordFlow/components/TransactionTable.js +11 -11
- package/dist/Modal/NordFlow/components/TransactionTable.js.map +1 -1
- package/dist/Modal/NordFlow/components/WaitingMessage.d.ts +3 -1
- package/dist/Modal/NordFlow/components/WaitingMessage.js +14 -3
- package/dist/Modal/NordFlow/components/WaitingMessage.js.map +1 -1
- package/dist/Modal/NordFlow/components/index.d.ts +0 -1
- package/dist/Modal/NordFlow/components/index.js +0 -1
- package/dist/Modal/NordFlow/components/index.js.map +1 -1
- package/dist/Modal/NordFlow/constants.js +12 -48
- package/dist/Modal/NordFlow/constants.js.map +1 -1
- package/dist/Modal/NordFlow/context/DepositContext.js +112 -41
- package/dist/Modal/NordFlow/context/DepositContext.js.map +1 -1
- package/dist/Modal/NordFlow/context/FlowContext.d.ts +1 -0
- package/dist/Modal/NordFlow/context/FlowContext.js +99 -6
- package/dist/Modal/NordFlow/context/FlowContext.js.map +1 -1
- package/dist/Modal/NordFlow/context/WalletConnectContext.js +76 -20
- package/dist/Modal/NordFlow/context/WalletConnectContext.js.map +1 -1
- package/dist/Modal/NordFlow/hoc/withImageFallback.js.map +1 -1
- package/dist/Modal/NordFlow/hooks/useTestnetFaucet.d.ts +18 -0
- package/dist/Modal/NordFlow/hooks/useTestnetFaucet.js +181 -0
- package/dist/Modal/NordFlow/hooks/useTestnetFaucet.js.map +1 -0
- package/dist/Modal/NordFlow/screens/01-ConnectWalletScreen.d.ts +1 -1
- package/dist/Modal/NordFlow/screens/01-ConnectWalletScreen.js +10 -15
- package/dist/Modal/NordFlow/screens/01-ConnectWalletScreen.js.map +1 -1
- package/dist/Modal/NordFlow/screens/02-ChainSelectionScreen.d.ts +1 -0
- package/dist/Modal/NordFlow/screens/02-ChainSelectionScreen.js +115 -0
- package/dist/Modal/NordFlow/screens/02-ChainSelectionScreen.js.map +1 -0
- package/dist/Modal/NordFlow/screens/03-AmountInputScreen.d.ts +4 -0
- package/dist/Modal/NordFlow/screens/03-AmountInputScreen.js +298 -0
- package/dist/Modal/NordFlow/screens/03-AmountInputScreen.js.map +1 -0
- package/dist/Modal/NordFlow/screens/04-DepositProgressScreen.d.ts +1 -0
- package/dist/Modal/NordFlow/screens/04-DepositProgressScreen.js +29 -0
- package/dist/Modal/NordFlow/screens/04-DepositProgressScreen.js.map +1 -0
- package/dist/Modal/NordFlow/screens/05-DepositSuccessScreen.d.ts +1 -0
- package/dist/Modal/NordFlow/screens/05-DepositSuccessScreen.js +131 -0
- package/dist/Modal/NordFlow/screens/05-DepositSuccessScreen.js.map +1 -0
- package/dist/Modal/NordFlow/screens/06-AuthLoadingScreen.d.ts +1 -0
- package/dist/Modal/NordFlow/screens/06-AuthLoadingScreen.js +37 -0
- package/dist/Modal/NordFlow/screens/06-AuthLoadingScreen.js.map +1 -0
- package/dist/Modal/NordFlow/screens/07-FinalSuccessScreen.d.ts +5 -0
- package/dist/Modal/NordFlow/screens/07-FinalSuccessScreen.js +39 -0
- package/dist/Modal/NordFlow/screens/07-FinalSuccessScreen.js.map +1 -0
- package/dist/Modal/NordFlow/screens/08-ErrorScreen.d.ts +1 -0
- package/dist/Modal/NordFlow/screens/08-ErrorScreen.js +68 -0
- package/dist/Modal/NordFlow/screens/08-ErrorScreen.js.map +1 -0
- package/dist/Modal/NordFlow/screens/index.d.ts +5 -9
- package/dist/Modal/NordFlow/screens/index.js +5 -9
- package/dist/Modal/NordFlow/screens/index.js.map +1 -1
- package/dist/Modal/NordFlow/types.d.ts +13 -3
- package/dist/Modal/NordFlow/types.js +4 -3
- package/dist/Modal/NordFlow/types.js.map +1 -1
- package/dist/Modal/NordFlow/utils/depositStorage.d.ts +4 -0
- package/dist/Modal/NordFlow/utils/depositStorage.js +48 -0
- package/dist/Modal/NordFlow/utils/depositStorage.js.map +1 -0
- package/dist/Modal/NordFlow/utils/nordUtils.d.ts +1 -1
- package/dist/Modal/NordFlow/utils/nordUtils.js +1 -1
- package/dist/Modal/NordFlow/utils/nordUtils.js.map +1 -1
- package/dist/Provider/LazyWalletProvider.d.ts +1 -1
- package/dist/Provider/LazyWalletProvider.js +38 -38
- package/dist/Provider/LazyWalletProvider.js.map +1 -1
- package/dist/Provider/N1WalletProvider.d.ts +2 -1
- package/dist/Provider/N1WalletProvider.js +85 -82
- package/dist/Provider/N1WalletProvider.js.map +1 -1
- package/dist/Provider/ShadowRootWrapper.d.ts +1 -1
- package/dist/Provider/WalletErrorBoundary.d.ts +9 -2
- package/dist/Provider/WalletErrorBoundary.js +19 -1
- package/dist/Provider/WalletErrorBoundary.js.map +1 -1
- package/dist/Provider/hooks/useNordUserInitialization.js +87 -35
- package/dist/Provider/hooks/useNordUserInitialization.js.map +1 -1
- package/dist/Provider/icons/CoinbaseWalletIcon.d.ts +1 -1
- package/dist/Provider/icons/ConnectionDotsSVG.d.ts +1 -1
- package/dist/Provider/icons/MetamaskIcon.d.ts +1 -1
- package/dist/Provider/icons/PhantomIcon.d.ts +1 -1
- package/dist/Provider/icons/UserIcon.d.ts +1 -1
- package/dist/Provider/icons/WalletConnectIcon.d.ts +1 -1
- package/dist/Provider/types.d.ts +18 -16
- package/dist/Provider/types.js +8 -2
- package/dist/Provider/types.js.map +1 -1
- package/dist/WidgetButton/N1ConnectButton.d.ts +1 -1
- package/dist/WidgetButton/N1ConnectButton.js +29 -10
- package/dist/WidgetButton/N1ConnectButton.js.map +1 -1
- package/dist/animations/N1Loader.d.ts +11 -0
- package/dist/animations/N1Loader.js +42 -0
- package/dist/animations/N1Loader.js.map +1 -0
- package/dist/animations/N1Loader.json +1 -0
- package/dist/animations/Processing.d.ts +11 -0
- package/dist/animations/Processing.js +42 -0
- package/dist/animations/Processing.js.map +1 -0
- package/dist/animations/Processing.json +1 -0
- package/dist/components/Logo.d.ts +2 -1
- package/dist/components/Logo.js +5 -2
- package/dist/components/Logo.js.map +1 -1
- package/dist/components/QRCodeLoader.d.ts +1 -1
- package/dist/components/QRCodeLoader.js +1 -1
- package/dist/components/QRCodeLoader.js.map +1 -1
- package/dist/components/logos/EVMChainsGroup.js +1 -1
- package/dist/components/logos/EVMChainsGroup.js.map +1 -1
- package/dist/components/logos/MoreChainsGroup.js +1 -1
- package/dist/components/logos/MoreChainsGroup.js.map +1 -1
- package/dist/components/logos/index.d.ts +0 -2
- package/dist/components/logos/index.js +0 -2
- package/dist/components/logos/index.js.map +1 -1
- package/dist/config/solana.d.ts +3 -15
- package/dist/config/solana.js +6 -29
- package/dist/config/solana.js.map +1 -1
- package/dist/embedded-main-css.d.ts +1 -1
- package/dist/embedded-main-css.js +1 -1
- package/dist/embedded-main-css.js.map +1 -1
- package/dist/fonts/apk-galeria/APK-Galeria-Bold-Italic-Trial.otf +0 -0
- package/dist/fonts/apk-galeria/APK-Galeria-Bold-Trial.otf +0 -0
- package/dist/fonts/apk-galeria/APK-Galeria-Extra-Bold-Italic-Trial.otf +0 -0
- package/dist/fonts/apk-galeria/APK-Galeria-Extra-Bold-Trial.otf +0 -0
- package/dist/fonts/apk-galeria/APK-Galeria-Light-Italic-Trial.otf +0 -0
- package/dist/fonts/apk-galeria/APK-Galeria-Light-Trial.otf +0 -0
- package/dist/fonts/apk-galeria/APK-Galeria-Medium-Italic-Trial.otf +0 -0
- package/dist/fonts/apk-galeria/APK-Galeria-Medium-Trial.otf +0 -0
- package/dist/fonts/apk-galeria/APK-Galeria-Regular-Italic-Trial.otf +0 -0
- package/dist/fonts/apk-galeria/APK-Galeria-Regular-Trial.otf +0 -0
- package/dist/fonts/apk-galeria/APK-Galeria-Semi-Bold-Italic-Trial.otf +0 -0
- package/dist/fonts/apk-galeria/APK-Galeria-Semi-Bold-Trial.otf +0 -0
- package/dist/fonts/apk-galeria/APK-Galeria-Thin-Italic-Trial.otf +0 -0
- package/dist/fonts/apk-galeria/APK-Galeria-Thin-Trial.otf +0 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/main.css +2 -2
- package/dist/polyfills/windowEthereumGuard.d.ts +6 -0
- package/dist/polyfills/windowEthereumGuard.js +28 -0
- package/dist/polyfills/windowEthereumGuard.js.map +1 -0
- package/dist/utils/dynamicNord.d.ts +2 -0
- package/dist/utils/dynamicNord.js +59 -0
- package/dist/utils/dynamicNord.js.map +1 -0
- package/dist/utils/ed25519.d.ts +8 -0
- package/dist/utils/ed25519.js +87 -0
- package/dist/utils/ed25519.js.map +1 -0
- package/package.json +26 -11
- package/dist/utils/dynamicImports.d.ts +0 -25
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"06-AuthLoadingScreen.js","sourceRoot":"","sources":["../../../../src/Modal/NordFlow/screens/06-AuthLoadingScreen.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,MAAM,UAAU,iBAAiB;IACzB,IAAA,KAA4B,QAAQ,CAAU,KAAK,CAAC,EAAnD,SAAS,QAAA,EAAE,YAAY,QAA4B,CAAC;IAC3D,IAAM,gBAAgB,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAEvC,2DAA2D;IACrD,IAAA,KAKF,iBAAiB,EAAE,EAJrB,WAAW,iBAAA,EACX,UAAU,gBAAA,EACV,gBAAgB,sBAAA,EAChB,iBAAiB,uBACI,CAAC;IAExB,SAAS,CAAC;QACR,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;YAC9B,gBAAgB,CAAC,OAAO,GAAG,IAAI,CAAC;YAChC,WAAW,EAAE,CAAC;QAChB,CAAC;IACH,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAElB,IAAM,WAAW,GAAG;QAClB,iCAAiC;QACjC,gBAAgB,CAAC,OAAO,GAAG,KAAK,CAAC;QACjC,WAAW,EAAE,CAAC;IAChB,CAAC,CAAC;IAEF,IAAM,cAAc,GAAG;QACrB,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,gBAAgB;QACvB,QAAQ,EACN,iBAAiB,IAAI,+CAA+C;QACtE,QAAQ,EAAE,KAAK;KAChB,CAAC;IAEF,IAAM,aAAa,GACjB,UAAU,KAAK,SAAS;QACtB,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,UAAU,KAAK,OAAO;YACtB,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,SAAS,CAAC;IAElB,OAAO,CACL,cAAK,SAAS,EAAC,0BAA0B,YACtC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,CAC1B,KAAC,cAAc,IAAC,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,cAAc,GAAI,CAC5D,CAAC,CAAC,CAAC,CACF,eAAK,SAAS,EAAC,mDAAmD,aAChE,cAAI,SAAS,EAAC,kCAAkC,aAC7C,aAAa,KAAK,SAAS,IAAI,2BAA2B,EAC1D,aAAa,KAAK,OAAO,IAAI,uBAAuB,IAClD,EACL,aAAG,SAAS,EAAC,0BAA0B,aACpC,aAAa,KAAK,SAAS,IAAI,sCAAsC,EACrE,aAAa,KAAK,OAAO;4BACxB,6DAA6D,IAC7D,EACH,aAAa,KAAK,OAAO,IAAI,gBAAgB,IAAI,CAChD,YAAG,SAAS,EAAC,sBAAsB,YAAE,gBAAgB,GAAK,CAC3D,EACA,aAAa,KAAK,OAAO,IAAI,CAC5B,cAAK,SAAS,EAAC,aAAa,YAC1B,iBACE,OAAO,EAAE,WAAW,EACpB,YAAY,EAAE,cAAM,OAAA,YAAY,CAAC,IAAI,CAAC,EAAlB,CAAkB,EACtC,YAAY,EAAE,cAAM,OAAA,YAAY,CAAC,KAAK,CAAC,EAAnB,CAAmB,EACvC,SAAS,EAAE,0RAIV,EACD,KAAK,EAAE;4BACL,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU;yBAClD,0BAGM,GACL,CACP,IACG,CACP,GACG,CACP,CAAC;AACJ,CAAC","sourcesContent":["import { useEffect, useRef, useState } from 'react';\nimport { useDepositContext } from '../context/DepositContext';\nimport { WaitingMessage } from '../components/WaitingMessage';\n\nexport function AuthLoadingScreen() {\n const [isHovered, setIsHovered] = useState<boolean>(false);\n const authInitiatedRef = useRef(false);\n \n // Get auth-related state and functions from DepositContext\n const { \n performAuth,\n authStatus, \n authErrorMessage, \n authStatusMessage\n } = useDepositContext();\n\n useEffect(() => {\n if (!authInitiatedRef.current) {\n authInitiatedRef.current = true;\n performAuth();\n }\n }, [performAuth]);\n\n const handleRetry = () => {\n // Reset and retry authentication\n authInitiatedRef.current = false;\n performAuth();\n };\n\n const loadingMessage = {\n visible: true,\n title: 'Authenticating',\n subtitle:\n authStatusMessage || 'Please wait while we create your Nord account',\n isTyping: false,\n };\n\n const statusVariant =\n authStatus === 'success'\n ? 'success'\n : authStatus === 'error'\n ? 'error'\n : undefined;\n\n return (\n <div className=\"overflow-hidden relative\">\n {authStatus === 'loading' ? (\n <WaitingMessage loaderSize={52} message={loadingMessage} />\n ) : (\n <div className=\"flex flex-col items-center text-center space-y-2 \">\n <h3 className=\"text-xl text-white font-semibold\">\n {statusVariant === 'success' && 'Authentication Successful'}\n {statusVariant === 'error' && 'Authentication Failed'}\n </h3>\n <p className=\"text-sm text-neutral-400\">\n {statusVariant === 'success' && 'You have been logged in successfully'}\n {statusVariant === 'error' &&\n 'There was an error during authentication. Please try again.'}\n </p>\n {statusVariant === 'error' && authErrorMessage && (\n <p className=\"text-xs text-red-400\">{authErrorMessage}</p>\n )}\n {statusVariant === 'error' && (\n <div className=\"pt-4 w-full\">\n <button\n onClick={handleRetry}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n className={`\n w-full h-8 rounded border bg-transparent flex items-center justify-center font-medium text-sm\n transition-all duration-200 transform\n border-n1-ww-main text-n1-ww-main hover:bg-n1-ww-gray-900 cursor-pointer\n `}\n style={{\n transform: isHovered ? 'scale(0.99)' : 'scale(1)',\n }}\n >\n Try Again\n </button>\n </div>\n )}\n </div>\n )}\n </div>\n );\n}\n"]}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useRef, useState } from 'react';
|
|
3
|
+
import { useN1WalletContext, useN1WalletInternalContext, } from '../../../Provider/hooks';
|
|
4
|
+
import { ANIMATION_EASE } from '../constants';
|
|
5
|
+
export function FinalSuccessScreen(_a) {
|
|
6
|
+
var onDone = _a.onDone;
|
|
7
|
+
var _b = useState(false), isHovered = _b[0], setIsHovered = _b[1];
|
|
8
|
+
var address = useN1WalletContext().address;
|
|
9
|
+
var _c = useN1WalletInternalContext(), setIsConnected = _c.setIsConnected, skipFinalScreen = _c.skipFinalScreen;
|
|
10
|
+
var hasCalledOnDone = useRef(false);
|
|
11
|
+
useEffect(function () {
|
|
12
|
+
setIsConnected(true);
|
|
13
|
+
}, [setIsConnected]);
|
|
14
|
+
useEffect(function () {
|
|
15
|
+
if (skipFinalScreen && onDone && !hasCalledOnDone.current) {
|
|
16
|
+
hasCalledOnDone.current = true;
|
|
17
|
+
onDone();
|
|
18
|
+
}
|
|
19
|
+
}, [skipFinalScreen, onDone]);
|
|
20
|
+
if (skipFinalScreen) {
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
var handleDone = function () {
|
|
24
|
+
if (onDone) {
|
|
25
|
+
onDone();
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
var getTitle = function () {
|
|
29
|
+
return 'Authentication Successful!';
|
|
30
|
+
};
|
|
31
|
+
var getMessageTop = function () { return 'Thanks for testing 01!'; };
|
|
32
|
+
var getMessageBottom = function () {
|
|
33
|
+
return 'For any issues or feedback during this private testnet, message us on X @01_exchange';
|
|
34
|
+
};
|
|
35
|
+
return (_jsx("div", { className: "overflow-hidden relative", children: _jsxs("div", { className: "space-y-8", children: [_jsxs("div", { className: "flex flex-col items-center justify-center pt-4", children: [_jsx("div", { className: "mb-6", children: _jsx("div", { className: "w-20 h-20 rounded-full bg-green-900/30 flex items-center justify-center", children: _jsx("svg", { className: "w-10 h-10 text-green-400", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "2", d: "M5 13l4 4L19 7" }) }) }) }), _jsx("h2", { className: "text-2xl text-white font-semibold mb-2 text-center", children: getTitle() }), _jsx("p", { className: "text-sm text-neutral-300 text-center", children: getMessageTop() }), _jsx("p", { className: "text-sm text-neutral-300 text-center", children: getMessageBottom() }), address && (_jsxs("p", { className: "text-sm text-neutral-400 text-center mt-2", children: ["Wallet: ", address.substring(0, 6), "...", address.substring(address.length - 4)] }))] }), _jsx("button", { onClick: handleDone, onMouseEnter: function () { return setIsHovered(true); }, onMouseLeave: function () { return setIsHovered(false); }, className: "\n group relative w-full overflow-hidden rounded-md border-2 bg-neutral-950 py-4 text-center\n transition-all duration-300 ".concat(ANIMATION_EASE, "\n cursor-pointer border-n1-ww-border hover:border-n1-ww-border\n "), style: {
|
|
36
|
+
transform: isHovered ? 'scale(0.99)' : 'scale(1)',
|
|
37
|
+
}, children: _jsx("span", { className: "\n text-base font-medium tracking-wide transition-colors duration-300 ".concat(ANIMATION_EASE, "\n text-n1-ww-gray-300 group-hover:text-white\n "), children: "Open App" }) })] }) }));
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=07-FinalSuccessScreen.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"07-FinalSuccessScreen.js","sourceRoot":"","sources":["../../../../src/Modal/NordFlow/screens/07-FinalSuccessScreen.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useEffect, useRef, useState } from 'react';\nimport {\n useN1WalletContext,\n useN1WalletInternalContext,\n} from '../../../Provider/hooks';\nimport { ANIMATION_EASE } from '../constants';\n\ninterface FinalSuccessScreenProps {\n onDone?: () => void;\n}\n\nexport function FinalSuccessScreen({ onDone }: FinalSuccessScreenProps) {\n const [isHovered, setIsHovered] = useState(false);\n const { address } = useN1WalletContext();\n const { setIsConnected, skipFinalScreen } = useN1WalletInternalContext();\n const hasCalledOnDone = useRef(false);\n\n useEffect(() => {\n setIsConnected(true);\n }, [setIsConnected]);\n\n useEffect(() => {\n if (skipFinalScreen && onDone && !hasCalledOnDone.current) {\n hasCalledOnDone.current = true;\n onDone();\n }\n }, [skipFinalScreen, onDone]);\n\n if (skipFinalScreen) {\n return null;\n }\n\n const handleDone = () => {\n if (onDone) {\n onDone();\n }\n };\n\n const getTitle = () => {\n return 'Authentication Successful!';\n };\n\n const getMessageTop = () => 'Thanks for testing 01!';\n\n const getMessageBottom = () =>\n 'For any issues or feedback during this private testnet, message us on X @01_exchange';\n\n return (\n <div className=\"overflow-hidden relative\">\n <div className=\"space-y-8\">\n <div className=\"flex flex-col items-center justify-center pt-4\">\n <div className=\"mb-6\">\n {/* Success icon/animation */}\n <div className=\"w-20 h-20 rounded-full bg-green-900/30 flex items-center justify-center\">\n <svg\n className=\"w-10 h-10 text-green-400\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n d=\"M5 13l4 4L19 7\"\n />\n </svg>\n </div>\n </div>\n\n <h2 className=\"text-2xl text-white font-semibold mb-2 text-center\">\n {getTitle()}\n </h2>\n\n <p className=\"text-sm text-neutral-300 text-center\">\n {getMessageTop()}\n </p>\n\n <p className=\"text-sm text-neutral-300 text-center\">\n {getMessageBottom()}\n </p>\n\n {/* Display wallet address if available */}\n {address && (\n <p className=\"text-sm text-neutral-400 text-center mt-2\">\n Wallet: {address.substring(0, 6)}...\n {address.substring(address.length - 4)}\n </p>\n )}\n </div>\n\n <button\n onClick={handleDone}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n className={`\n group relative w-full overflow-hidden rounded-md border-2 bg-neutral-950 py-4 text-center\n transition-all duration-300 ${ANIMATION_EASE}\n cursor-pointer border-n1-ww-border hover:border-n1-ww-border\n `}\n style={{\n transform: isHovered ? 'scale(0.99)' : 'scale(1)',\n }}\n >\n <span\n className={`\n text-base font-medium tracking-wide transition-colors duration-300 ${ANIMATION_EASE}\n text-n1-ww-gray-300 group-hover:text-white\n `}\n >\n Open App\n </span>\n </button>\n </div>\n </div>\n );\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function ErrorScreen(): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useState } from 'react';
|
|
3
|
+
import { useN1WalletContext } from '../../../Provider/hooks';
|
|
4
|
+
import { ANIMATION_EASE } from '../constants';
|
|
5
|
+
import { useFlowStateContext } from '../context/FlowContext';
|
|
6
|
+
import { isNordConfigured } from '../utils/nordUtils';
|
|
7
|
+
export function ErrorScreen() {
|
|
8
|
+
var _a = useFlowStateContext(), context = _a.context, transition = _a.transition;
|
|
9
|
+
var _b = useState(null), isHovered = _b[0], setIsHovered = _b[1];
|
|
10
|
+
var nord = useN1WalletContext().nord;
|
|
11
|
+
var _c = useState(false), isNordError = _c[0], setIsNordError = _c[1];
|
|
12
|
+
var error = context.error;
|
|
13
|
+
// Check if the error is related to Nord
|
|
14
|
+
useEffect(function () {
|
|
15
|
+
if (error &&
|
|
16
|
+
error.message &&
|
|
17
|
+
(error.message.includes('Nord') ||
|
|
18
|
+
error.message.includes('nord') ||
|
|
19
|
+
(error.name && error.name.includes('Nord')))) {
|
|
20
|
+
setIsNordError(true);
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
setIsNordError(false);
|
|
24
|
+
}
|
|
25
|
+
}, [error]);
|
|
26
|
+
// Get a user-friendly error message
|
|
27
|
+
var getErrorMessage = function () {
|
|
28
|
+
if (!error)
|
|
29
|
+
return 'An unexpected error occurred';
|
|
30
|
+
// Check for specific Nord-related errors
|
|
31
|
+
if (isNordError) {
|
|
32
|
+
if (error.message.includes('connection') ||
|
|
33
|
+
error.message.includes('network')) {
|
|
34
|
+
return 'Failed to connect to Nord. Please check your network connection and try again.';
|
|
35
|
+
}
|
|
36
|
+
if (error.message.includes('authentication') ||
|
|
37
|
+
error.message.includes('auth')) {
|
|
38
|
+
return 'Authentication with Nord failed. Please try again.';
|
|
39
|
+
}
|
|
40
|
+
if (error.message.includes('deposit') ||
|
|
41
|
+
error.message.includes('transaction')) {
|
|
42
|
+
return 'Failed to process your deposit. Please try again.';
|
|
43
|
+
}
|
|
44
|
+
return "Nord error: ".concat(error.message);
|
|
45
|
+
}
|
|
46
|
+
// Generic wallet errors
|
|
47
|
+
if (error.message.includes('wallet') || error.message.includes('Wallet')) {
|
|
48
|
+
return 'There was an issue with your wallet connection. Please try again.';
|
|
49
|
+
}
|
|
50
|
+
// Default error message
|
|
51
|
+
return error.message;
|
|
52
|
+
};
|
|
53
|
+
var errorMessage = getErrorMessage();
|
|
54
|
+
// Get a suggestion based on the error
|
|
55
|
+
var getSuggestion = function () {
|
|
56
|
+
if (isNordError && nord && !isNordConfigured(nord)) {
|
|
57
|
+
return 'Nord is not properly configured. Please check your settings.';
|
|
58
|
+
}
|
|
59
|
+
if (isNordError) {
|
|
60
|
+
return 'You can try again or contact support if the issue persists.';
|
|
61
|
+
}
|
|
62
|
+
return 'Please try again or try a different wallet.';
|
|
63
|
+
};
|
|
64
|
+
return (_jsx("div", { className: "overflow-hidden relative", children: _jsxs("div", { className: "space-y-6", children: [_jsxs("div", { className: "flex flex-col items-center justify-center py-4", children: [_jsx("div", { className: "mb-6", children: _jsx("div", { className: "w-20 h-20 rounded-full bg-red-900/30 flex items-center justify-center", children: _jsx("svg", { className: "w-10 h-10 text-red-400", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "2", d: "M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z" }) }) }) }), _jsx("h2", { className: "text-xl text-white font-semibold mb-2 text-center", children: isNordError ? 'Nord Error' : 'Something went wrong' }), _jsx("p", { className: "text-sm text-neutral-400 text-center mb-2 max-w-xs", children: errorMessage }), _jsx("p", { className: "text-xs text-neutral-500 text-center mb-6 max-w-xs", children: getSuggestion() })] }), _jsx("div", { className: "space-y-3", children: _jsx("button", { onClick: function () { }, onMouseEnter: function () { return setIsHovered('cancel'); }, onMouseLeave: function () { return setIsHovered(null); }, className: "\n group relative w-full overflow-hidden rounded-md border-2 border-n1-ww-border bg-neutral-900 py-4 text-center\n transition-all duration-300 ".concat(ANIMATION_EASE, "\n cursor-pointer hover:bg-neutral-950\n "), style: {
|
|
65
|
+
transform: isHovered === 'cancel' ? 'scale(0.99)' : 'scale(1)',
|
|
66
|
+
}, children: _jsx("span", { className: "\n text-base font-medium tracking-wide transition-colors duration-300 ".concat(ANIMATION_EASE, "\n text-n1-ww-gray-400 group-hover:text-n1-ww-gray-300\n "), children: "Cancel" }) }) })] }) }));
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=08-ErrorScreen.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"08-ErrorScreen.js","sourceRoot":"","sources":["../../../../src/Modal/NordFlow/screens/08-ErrorScreen.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useEffect, useState } from 'react';\nimport { useN1WalletContext } from '../../../Provider/hooks';\nimport { ANIMATION_EASE } from '../constants';\nimport { useFlowStateContext } from '../context/FlowContext';\nimport { isNordConfigured } from '../utils/nordUtils';\n\nexport function ErrorScreen() {\n const { context, transition } = useFlowStateContext();\n const [isHovered, setIsHovered] = useState<'retry' | 'cancel' | null>(null);\n const { nord } = useN1WalletContext();\n const [isNordError, setIsNordError] = useState(false);\n const error = context.error;\n\n // Check if the error is related to Nord\n useEffect(() => {\n if (\n error &&\n error.message &&\n (error.message.includes('Nord') ||\n error.message.includes('nord') ||\n (error.name && error.name.includes('Nord')))\n ) {\n setIsNordError(true);\n } else {\n setIsNordError(false);\n }\n }, [error]);\n\n // Get a user-friendly error message\n const getErrorMessage = () => {\n if (!error) return 'An unexpected error occurred';\n\n // Check for specific Nord-related errors\n if (isNordError) {\n if (\n error.message.includes('connection') ||\n error.message.includes('network')\n ) {\n return 'Failed to connect to Nord. Please check your network connection and try again.';\n }\n\n if (\n error.message.includes('authentication') ||\n error.message.includes('auth')\n ) {\n return 'Authentication with Nord failed. Please try again.';\n }\n\n if (\n error.message.includes('deposit') ||\n error.message.includes('transaction')\n ) {\n return 'Failed to process your deposit. Please try again.';\n }\n\n return `Nord error: ${error.message}`;\n }\n\n // Generic wallet errors\n if (error.message.includes('wallet') || error.message.includes('Wallet')) {\n return 'There was an issue with your wallet connection. Please try again.';\n }\n\n // Default error message\n return error.message;\n };\n\n const errorMessage = getErrorMessage();\n\n // Get a suggestion based on the error\n const getSuggestion = () => {\n if (isNordError && nord && !isNordConfigured(nord)) {\n return 'Nord is not properly configured. Please check your settings.';\n }\n\n if (isNordError) {\n return 'You can try again or contact support if the issue persists.';\n }\n\n return 'Please try again or try a different wallet.';\n };\n\n\n return (\n <div className=\"overflow-hidden relative\">\n <div className=\"space-y-6\">\n <div className=\"flex flex-col items-center justify-center py-4\">\n <div className=\"mb-6\">\n {/* Error icon */}\n <div className=\"w-20 h-20 rounded-full bg-red-900/30 flex items-center justify-center\">\n <svg\n className=\"w-10 h-10 text-red-400\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n d=\"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z\"\n />\n </svg>\n </div>\n </div>\n\n <h2 className=\"text-xl text-white font-semibold mb-2 text-center\">\n {isNordError ? 'Nord Error' : 'Something went wrong'}\n </h2>\n\n <p className=\"text-sm text-neutral-400 text-center mb-2 max-w-xs\">\n {errorMessage}\n </p>\n\n <p className=\"text-xs text-neutral-500 text-center mb-6 max-w-xs\">\n {getSuggestion()}\n </p>\n </div>\n\n <div className=\"space-y-3\">\n {/* <button\n onClick={handleRetry}\n onMouseEnter={() => setIsHovered('retry')}\n onMouseLeave={() => setIsHovered(null)}\n className={`\n group relative w-full overflow-hidden rounded-md border-2 bg-neutral-950 py-4 text-center\n transition-all duration-300 ${ANIMATION_EASE}\n cursor-pointer border-n1-ww-border hover:border-n1-ww-border\n `}\n style={{\n transform: isHovered === 'retry' ? 'scale(0.99)' : 'scale(1)',\n }}\n >\n <span\n className={`\n text-base font-medium tracking-wide transition-colors duration-300 ${ANIMATION_EASE}\n text-n1-ww-gray-300 group-hover:text-white\n `}\n >\n Try Again\n </span>\n </button> */}\n\n <button\n onClick={() => { }}\n onMouseEnter={() => setIsHovered('cancel')}\n onMouseLeave={() => setIsHovered(null)}\n className={`\n group relative w-full overflow-hidden rounded-md border-2 border-n1-ww-border bg-neutral-900 py-4 text-center\n transition-all duration-300 ${ANIMATION_EASE}\n cursor-pointer hover:bg-neutral-950\n `}\n style={{\n transform: isHovered === 'cancel' ? 'scale(0.99)' : 'scale(1)',\n }}\n >\n <span\n className={`\n text-base font-medium tracking-wide transition-colors duration-300 ${ANIMATION_EASE}\n text-n1-ww-gray-400 group-hover:text-n1-ww-gray-300\n `}\n >\n Cancel\n </span>\n </button>\n </div>\n </div>\n </div>\n );\n}\n"]}
|
|
@@ -1,10 +1,6 @@
|
|
|
1
|
-
export * from './00-IdleScreen';
|
|
2
1
|
export * from './01-ConnectWalletScreen';
|
|
3
|
-
export * from './02-
|
|
4
|
-
export * from './03-
|
|
5
|
-
export * from './04-
|
|
6
|
-
export * from './05-
|
|
7
|
-
export * from './06-
|
|
8
|
-
export * from './07-AuthLoadingScreen';
|
|
9
|
-
export * from './08-FinalSuccessScreen';
|
|
10
|
-
export * from './09-ErrorScreen';
|
|
2
|
+
export * from './02-ChainSelectionScreen';
|
|
3
|
+
export * from './03-AmountInputScreen';
|
|
4
|
+
export * from './04-DepositProgressScreen';
|
|
5
|
+
export * from './05-DepositSuccessScreen';
|
|
6
|
+
export * from './06-AuthLoadingScreen';
|
|
@@ -1,11 +1,7 @@
|
|
|
1
|
-
export * from './00-IdleScreen';
|
|
2
1
|
export * from './01-ConnectWalletScreen';
|
|
3
|
-
export * from './02-
|
|
4
|
-
export * from './03-
|
|
5
|
-
export * from './04-
|
|
6
|
-
export * from './05-
|
|
7
|
-
export * from './06-
|
|
8
|
-
export * from './07-AuthLoadingScreen';
|
|
9
|
-
export * from './08-FinalSuccessScreen';
|
|
10
|
-
export * from './09-ErrorScreen';
|
|
2
|
+
export * from './02-ChainSelectionScreen';
|
|
3
|
+
export * from './03-AmountInputScreen';
|
|
4
|
+
export * from './04-DepositProgressScreen';
|
|
5
|
+
export * from './05-DepositSuccessScreen';
|
|
6
|
+
export * from './06-AuthLoadingScreen';
|
|
11
7
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/Modal/NordFlow/screens/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/Modal/NordFlow/screens/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC","sourcesContent":["export * from './01-ConnectWalletScreen';\nexport * from './02-ChainSelectionScreen';\nexport * from './03-AmountInputScreen';\nexport * from './04-DepositProgressScreen';\nexport * from './05-DepositSuccessScreen';\nexport * from './06-AuthLoadingScreen';\n"]}
|
|
@@ -6,9 +6,7 @@ import React from 'react';
|
|
|
6
6
|
* Enum representing all possible states in the wallet connection flow
|
|
7
7
|
*/
|
|
8
8
|
export declare enum FlowState {
|
|
9
|
-
IDLE = "IDLE",
|
|
10
9
|
CONNECTING_WALLET = "CONNECTING_WALLET",
|
|
11
|
-
ETH_TO_SOL_AUTH = "ETH_TO_SOL_AUTH",
|
|
12
10
|
CHAIN_SELECTION = "CHAIN_SELECTION",
|
|
13
11
|
AMOUNT_INPUT = "AMOUNT_INPUT",
|
|
14
12
|
DEPOSIT_PROGRESS = "DEPOSIT_PROGRESS",
|
|
@@ -21,15 +19,27 @@ export declare enum FlowState {
|
|
|
21
19
|
* Interface representing the flow context, containing all data necessary
|
|
22
20
|
* for the wallet connection flow
|
|
23
21
|
*/
|
|
22
|
+
export interface StoredDepositRecord {
|
|
23
|
+
transactionId: string;
|
|
24
|
+
amount: string;
|
|
25
|
+
tokenSymbol: string;
|
|
26
|
+
chainId: string;
|
|
27
|
+
chainName: string;
|
|
28
|
+
chainNetwork: string | null;
|
|
29
|
+
timestamp: number;
|
|
30
|
+
}
|
|
24
31
|
export interface FlowContext {
|
|
25
|
-
walletType: 'solana' | 'ethereum' | null;
|
|
26
32
|
hasNordAccount: boolean;
|
|
27
33
|
hasActiveSession: boolean;
|
|
28
34
|
selectedChain: string | null;
|
|
35
|
+
selectedChainId: string | null;
|
|
36
|
+
selectedChainNetwork: string | null;
|
|
29
37
|
amount: string;
|
|
30
38
|
transactionId: string | null;
|
|
31
39
|
error: Error | null;
|
|
32
40
|
depositError?: string;
|
|
41
|
+
isDepositOnlyFlow: boolean;
|
|
42
|
+
lastDeposit: StoredDepositRecord | null;
|
|
33
43
|
}
|
|
34
44
|
/**
|
|
35
45
|
* Interface for state transitions in the flow
|
|
@@ -6,9 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
export var FlowState;
|
|
8
8
|
(function (FlowState) {
|
|
9
|
-
FlowState["IDLE"] = "IDLE";
|
|
10
9
|
FlowState["CONNECTING_WALLET"] = "CONNECTING_WALLET";
|
|
11
|
-
FlowState["ETH_TO_SOL_AUTH"] = "ETH_TO_SOL_AUTH";
|
|
12
10
|
FlowState["CHAIN_SELECTION"] = "CHAIN_SELECTION";
|
|
13
11
|
FlowState["AMOUNT_INPUT"] = "AMOUNT_INPUT";
|
|
14
12
|
FlowState["DEPOSIT_PROGRESS"] = "DEPOSIT_PROGRESS";
|
|
@@ -21,13 +19,16 @@ export var FlowState;
|
|
|
21
19
|
* Initial flow context with default values
|
|
22
20
|
*/
|
|
23
21
|
export var initialFlowContext = {
|
|
24
|
-
walletType: null,
|
|
25
22
|
hasNordAccount: false,
|
|
26
23
|
hasActiveSession: false,
|
|
27
24
|
selectedChain: null,
|
|
25
|
+
selectedChainId: null,
|
|
26
|
+
selectedChainNetwork: null,
|
|
28
27
|
amount: '',
|
|
29
28
|
transactionId: null,
|
|
30
29
|
error: null,
|
|
31
30
|
depositError: undefined,
|
|
31
|
+
isDepositOnlyFlow: false,
|
|
32
|
+
lastDeposit: null,
|
|
32
33
|
};
|
|
33
34
|
//# sourceMappingURL=types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/Modal/NordFlow/types.ts"],"names":[],"mappings":"AAEA;;GAEG;AAEH;;GAEG;AACH,MAAM,CAAN,IAAY,
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/Modal/NordFlow/types.ts"],"names":[],"mappings":"AAEA;;GAEG;AAEH;;GAEG;AACH,MAAM,CAAN,IAAY,SASX;AATD,WAAY,SAAS;IACnB,oDAAuC,CAAA;IACvC,gDAAmC,CAAA;IACnC,0CAA6B,CAAA;IAC7B,kDAAqC,CAAA;IACrC,gDAAmC,CAAA;IACnC,0CAA6B,CAAA;IAC7B,4CAA+B,CAAA;IAC/B,4BAAe,CAAA;AACjB,CAAC,EATW,SAAS,KAAT,SAAS,QASpB;AAyCD;;GAEG;AACH,MAAM,CAAC,IAAM,kBAAkB,GAAgB;IAC7C,cAAc,EAAE,KAAK;IACrB,gBAAgB,EAAE,KAAK;IACvB,aAAa,EAAE,IAAI;IACnB,eAAe,EAAE,IAAI;IACrB,oBAAoB,EAAE,IAAI;IAC1B,MAAM,EAAE,EAAE;IACV,aAAa,EAAE,IAAI;IACnB,KAAK,EAAE,IAAI;IACX,YAAY,EAAE,SAAS;IACvB,iBAAiB,EAAE,KAAK;IACxB,WAAW,EAAE,IAAI;CAClB,CAAC","sourcesContent":["import React from 'react';\n\n/**\n * Types for the wallet connection flow state machine\n */\n\n/**\n * Enum representing all possible states in the wallet connection flow\n */\nexport enum FlowState {\n CONNECTING_WALLET = 'CONNECTING_WALLET',\n CHAIN_SELECTION = 'CHAIN_SELECTION',\n AMOUNT_INPUT = 'AMOUNT_INPUT',\n DEPOSIT_PROGRESS = 'DEPOSIT_PROGRESS',\n DEPOSIT_SUCCESS = 'DEPOSIT_SUCCESS',\n AUTH_LOADING = 'AUTH_LOADING',\n FINAL_SUCCESS = 'FINAL_SUCCESS',\n ERROR = 'ERROR',\n}\n\n\n\n/**\n * Interface representing the flow context, containing all data necessary\n * for the wallet connection flow\n */\nexport interface StoredDepositRecord {\n transactionId: string;\n amount: string;\n tokenSymbol: string;\n chainId: string;\n chainName: string;\n chainNetwork: string | null;\n timestamp: number;\n}\n\nexport interface FlowContext {\n hasNordAccount: boolean;\n hasActiveSession: boolean;\n selectedChain: string | null;\n selectedChainId: string | null;\n selectedChainNetwork: string | null;\n amount: string;\n transactionId: string | null;\n error: Error | null;\n depositError?: string;\n isDepositOnlyFlow: boolean;\n lastDeposit: StoredDepositRecord | null;\n}\n\n/**\n * Interface for state transitions in the flow\n */\nexport interface StateTransition {\n from: FlowState | FlowState[];\n to: FlowState;\n condition?: (context: FlowContext) => boolean;\n}\n\n/**\n * Initial flow context with default values\n */\nexport const initialFlowContext: FlowContext = {\n hasNordAccount: false,\n hasActiveSession: false,\n selectedChain: null,\n selectedChainId: null,\n selectedChainNetwork: null,\n amount: '',\n transactionId: null,\n error: null,\n depositError: undefined,\n isDepositOnlyFlow: false,\n lastDeposit: null,\n};\n\nexport interface TableValues {\n amount?: { text: string; visible: boolean; typing: boolean };\n tx: { text: string; visible: boolean; typing: boolean };\n from: { text: string; visible: boolean; typing: boolean };\n to: { text: string; visible: boolean; typing: boolean };\n network: { text: string; visible: boolean; typing: boolean };\n status: { text: string; visible: boolean; typing: boolean };\n}\n\nexport interface WaitingMessageState {\n title: string;\n subtitle: string;\n visible: boolean;\n isTyping: boolean;\n}\n\n/**\n * Interface for a blockchain network\n */\nexport interface Chain {\n id: string;\n name: string;\n logo: string | React.ReactNode;\n disabled?: boolean;\n network?: string;\n description?: string;\n}\n\nexport interface App {\n name: string;\n color: string;\n progress: number;\n}\n\nexport type ButtonKey = 'deposit' | 'continue' | 'openApp';\n\nexport interface ButtonState {\n text: string;\n isTyping: boolean;\n showCursor: boolean;\n}\n\nexport type ButtonStates = Record<ButtonKey, ButtonState>;\n"]}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { StoredDepositRecord } from '../types';
|
|
2
|
+
export declare function saveLastDepositRecord(address: string | null | undefined, record: StoredDepositRecord): void;
|
|
3
|
+
export declare function readLastDepositRecord(address: string | null | undefined): StoredDepositRecord | null;
|
|
4
|
+
export declare function clearLastDepositRecord(address: string | null | undefined): void;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
var LAST_DEPOSIT_KEY_PREFIX = 'n1_last_deposit_';
|
|
2
|
+
var getStorage = function () {
|
|
3
|
+
return typeof window === 'undefined' ? null : window.localStorage;
|
|
4
|
+
};
|
|
5
|
+
var getKey = function (address) {
|
|
6
|
+
return "".concat(LAST_DEPOSIT_KEY_PREFIX).concat(address.toLowerCase());
|
|
7
|
+
};
|
|
8
|
+
export function saveLastDepositRecord(address, record) {
|
|
9
|
+
if (!address || !record || !record.transactionId) {
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
var storage = getStorage();
|
|
13
|
+
if (!storage) {
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
storage.setItem(getKey(address), JSON.stringify(record));
|
|
17
|
+
}
|
|
18
|
+
export function readLastDepositRecord(address) {
|
|
19
|
+
if (!address) {
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
var storage = getStorage();
|
|
23
|
+
if (!storage) {
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
try {
|
|
27
|
+
var raw = storage.getItem(getKey(address));
|
|
28
|
+
if (!raw) {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
return JSON.parse(raw);
|
|
32
|
+
}
|
|
33
|
+
catch (_a) {
|
|
34
|
+
storage.removeItem(getKey(address));
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
export function clearLastDepositRecord(address) {
|
|
39
|
+
if (!address) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
var storage = getStorage();
|
|
43
|
+
if (!storage) {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
storage.removeItem(getKey(address));
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=depositStorage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"depositStorage.js","sourceRoot":"","sources":["../../../../src/Modal/NordFlow/utils/depositStorage.ts"],"names":[],"mappings":"AAEA,IAAM,uBAAuB,GAAG,kBAAkB,CAAC;AAEnD,IAAM,UAAU,GAAG;IACjB,OAAA,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY;AAA1D,CAA0D,CAAC;AAE7D,IAAM,MAAM,GAAG,UAAC,OAAe;IAC7B,OAAA,UAAG,uBAAuB,SAAG,OAAO,CAAC,WAAW,EAAE,CAAE;AAApD,CAAoD,CAAC;AAEvD,MAAM,UAAU,qBAAqB,CACnC,OAAkC,EAClC,MAA2B;IAE3B,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;QACjD,OAAO;IACT,CAAC;IAED,IAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;IACT,CAAC;IAED,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,OAAkC;IAElC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,IAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QAC7C,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAwB,CAAC;IAChD,CAAC;IAAC,WAAM,CAAC;QACP,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QACpC,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,OAAkC;IACvE,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;IACT,CAAC;IAED,IAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;IACT,CAAC;IAED,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AACtC,CAAC","sourcesContent":["import { StoredDepositRecord } from '../types';\n\nconst LAST_DEPOSIT_KEY_PREFIX = 'n1_last_deposit_';\n\nconst getStorage = () =>\n typeof window === 'undefined' ? null : window.localStorage;\n\nconst getKey = (address: string) =>\n `${LAST_DEPOSIT_KEY_PREFIX}${address.toLowerCase()}`;\n\nexport function saveLastDepositRecord(\n address: string | null | undefined,\n record: StoredDepositRecord\n) {\n if (!address || !record || !record.transactionId) {\n return;\n }\n\n const storage = getStorage();\n if (!storage) {\n return;\n }\n\n storage.setItem(getKey(address), JSON.stringify(record));\n}\n\nexport function readLastDepositRecord(\n address: string | null | undefined\n): StoredDepositRecord | null {\n if (!address) {\n return null;\n }\n\n const storage = getStorage();\n if (!storage) {\n return null;\n }\n\n try {\n const raw = storage.getItem(getKey(address));\n if (!raw) {\n return null;\n }\n return JSON.parse(raw) as StoredDepositRecord;\n } catch {\n storage.removeItem(getKey(address));\n return null;\n }\n}\n\nexport function clearLastDepositRecord(address: string | null | undefined) {\n if (!address) {\n return;\n }\n\n const storage = getStorage();\n if (!storage) {\n return;\n }\n\n storage.removeItem(getKey(address));\n}\n"]}
|
|
@@ -30,7 +30,7 @@ export function getTokenBalance(nordUser, tokenSymbol) {
|
|
|
30
30
|
* @returns Whether Nord is properly configured
|
|
31
31
|
*/
|
|
32
32
|
export function isNordConfigured(nord) {
|
|
33
|
-
return !!nord && !!nord.webServerUrl && !!nord.
|
|
33
|
+
return !!nord && !!nord.webServerUrl && (!!nord.solanaConnection || !!nord.protonClient);
|
|
34
34
|
}
|
|
35
35
|
/**
|
|
36
36
|
* Format an amount with the appropriate number of decimal places
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nordUtils.js","sourceRoot":"","sources":["../../../../src/Modal/NordFlow/utils/nordUtils.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,EAAO;IAC3C,OAAO,EAAE,CAAC,EAAE;QACV,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;QACnE,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAC7B,QAAyB,EACzB,WAAmB;IAEnB,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QACvE,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAM,aAAa,GAAG,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACrD,OAAO,aAAa,CAAC,MAAM,CAAC,UAAC,KAAK,EAAE,OAAO,IAAK,OAAA,KAAK,GAAG,OAAO,CAAC,OAAO,EAAvB,CAAuB,EAAE,CAAC,CAAC,CAAC;AAC9E,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAS;IACxC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"nordUtils.js","sourceRoot":"","sources":["../../../../src/Modal/NordFlow/utils/nordUtils.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,EAAO;IAC3C,OAAO,EAAE,CAAC,EAAE;QACV,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;QACnE,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAC7B,QAAyB,EACzB,WAAmB;IAEnB,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QACvE,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAM,aAAa,GAAG,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACrD,OAAO,aAAa,CAAC,MAAM,CAAC,UAAC,KAAK,EAAE,OAAO,IAAK,OAAA,KAAK,GAAG,OAAO,CAAC,OAAO,EAAvB,CAAuB,EAAE,CAAC,CAAC,CAAC;AAC9E,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAS;IACxC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC3F,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAC1B,MAAuB,EACvB,QAAoB;IAApB,yBAAA,EAAA,YAAoB;IAEpB,IAAM,SAAS,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAC3E,OAAO,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACrC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAC5B,OAAe,EACf,UAAsB,EACtB,QAAoB;IADpB,2BAAA,EAAA,cAAsB;IACtB,yBAAA,EAAA,YAAoB;IAEpB,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IACxB,IAAI,OAAO,CAAC,MAAM,IAAI,UAAU,GAAG,QAAQ;QAAE,OAAO,OAAO,CAAC;IAE5D,OAAO,UAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,gBAAM,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAE,CAAC;AACjG,CAAC","sourcesContent":["import type { NordUser } from '@n1xyz/nord-ts';\n\n/**\n * Format a Nord transaction for display\n *\n * @param tx Transaction object\n * @returns Formatted transaction ID\n */\nexport function formatNordTransaction(tx: any): string {\n return tx.id\n ? tx.id.substring(0, 8) + '...' + tx.id.substring(tx.id.length - 8)\n : 'Unknown';\n}\n\n/**\n * Get token balance for a specific token\n *\n * @param nordUser NordUser instance\n * @param tokenSymbol Token symbol\n * @returns Token balance\n */\nexport function getTokenBalance(\n nordUser: NordUser | null,\n tokenSymbol: string\n): number {\n if (!nordUser || !nordUser.balances || !nordUser.balances[tokenSymbol]) {\n return 0;\n }\n\n const tokenBalances = nordUser.balances[tokenSymbol];\n return tokenBalances.reduce((total, balance) => total + balance.balance, 0);\n}\n\n/**\n * Check if Nord is properly configured\n *\n * @param nord Nord instance\n * @returns Whether Nord is properly configured\n */\nexport function isNordConfigured(nord: any): boolean {\n return !!nord && !!nord.webServerUrl && (!!nord.solanaConnection || !!nord.protonClient);\n}\n\n/**\n * Format an amount with the appropriate number of decimal places\n *\n * @param amount Amount to format\n * @param decimals Number of decimal places\n * @returns Formatted amount\n */\nexport function formatAmount(\n amount: number | string,\n decimals: number = 2\n): string {\n const numAmount = typeof amount === 'string' ? parseFloat(amount) : amount;\n return numAmount.toFixed(decimals);\n}\n\n/**\n * Shorten an address for display\n *\n * @param address Address to shorten\n * @param startChars Number of characters to show at the start\n * @param endChars Number of characters to show at the end\n * @returns Shortened address\n */\nexport function shortenAddress(\n address: string,\n startChars: number = 6,\n endChars: number = 4\n): string {\n if (!address) return '';\n if (address.length <= startChars + endChars) return address;\n\n return `${address.substring(0, startChars)}...${address.substring(address.length - endChars)}`;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare function LazyWalletProvider({ children }: any): JSX.Element;
|
|
1
|
+
export declare function LazyWalletProvider({ children }: any): import("react/jsx-runtime").JSX.Element;
|
|
@@ -45,22 +45,21 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
45
45
|
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
46
46
|
}
|
|
47
47
|
};
|
|
48
|
-
import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
|
|
48
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
49
49
|
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
50
50
|
import { useN1WalletContext, useN1WalletInternalContext } from './hooks';
|
|
51
|
-
import { N1SessionMode } from './types';
|
|
52
51
|
import { logger } from '../utils/logger';
|
|
53
52
|
function DynamicContextConsumer(_a) {
|
|
54
53
|
var children = _a.children;
|
|
55
54
|
var _b = useState(null), DynamicContext = _b[0], setDynamicContext = _b[1];
|
|
56
55
|
var showAuthFlowRef = useRef(null);
|
|
56
|
+
var primaryWalletStateRef = useRef(null);
|
|
57
57
|
// Use refs to track previous values and prevent unnecessary updates
|
|
58
58
|
var prevPrimaryWalletRef = useRef(null);
|
|
59
59
|
var prevHandleLogOutRef = useRef(null);
|
|
60
60
|
var prevSdkHasLoadedRef = useRef(null);
|
|
61
|
-
var _c = useN1WalletInternalContext(), setDynamicWallet = _c.setDynamicWallet, setDynamicHandleLogOut = _c.setDynamicHandleLogOut, setDynamicSdkHasLoaded = _c.setDynamicSdkHasLoaded, setAddress = _c.setAddress, setShowDynamicWidget = _c.setShowDynamicWidget;
|
|
62
|
-
var
|
|
63
|
-
var _d = useState(''), oldAddress = _d[0], setOldAddress = _d[1];
|
|
61
|
+
var _c = useN1WalletInternalContext(), setDynamicWallet = _c.setDynamicWallet, setDynamicHandleLogOut = _c.setDynamicHandleLogOut, setDynamicSdkHasLoaded = _c.setDynamicSdkHasLoaded, setAddress = _c.setAddress, setShowDynamicWidget = _c.setShowDynamicWidget, setStartClosingLogin = _c.setStartClosingLogin;
|
|
62
|
+
var setShowLogin = useN1WalletContext().setShowLogin;
|
|
64
63
|
// Load the Dynamic context only once
|
|
65
64
|
useEffect(function () {
|
|
66
65
|
var isMounted = true;
|
|
@@ -90,10 +89,25 @@ function DynamicContextConsumer(_a) {
|
|
|
90
89
|
var _a = DynamicContext(), primaryWallet = _a.primaryWallet, sdkHasLoaded = _a.sdkHasLoaded, setShowAuthFlow = _a.setShowAuthFlow, handleLogOut = _a.handleLogOut;
|
|
91
90
|
// Store setShowAuthFlow in ref to avoid re-renders - only when it changes
|
|
92
91
|
useEffect(function () {
|
|
93
|
-
if (setShowAuthFlow
|
|
94
|
-
showAuthFlowRef.current =
|
|
92
|
+
if (!setShowAuthFlow) {
|
|
93
|
+
showAuthFlowRef.current = null;
|
|
94
|
+
return;
|
|
95
95
|
}
|
|
96
|
-
|
|
96
|
+
var proxiedSetShowAuthFlow = function (show) {
|
|
97
|
+
setShowAuthFlow(show);
|
|
98
|
+
if (!show && !primaryWalletStateRef.current) {
|
|
99
|
+
logger.debug('Dynamic auth flow closed before wallet connection; closing modal');
|
|
100
|
+
setShowLogin(false);
|
|
101
|
+
setStartClosingLogin(true);
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
showAuthFlowRef.current = proxiedSetShowAuthFlow;
|
|
105
|
+
return function () {
|
|
106
|
+
if (showAuthFlowRef.current === proxiedSetShowAuthFlow) {
|
|
107
|
+
showAuthFlowRef.current = null;
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
}, [setShowAuthFlow, setShowLogin, setStartClosingLogin]);
|
|
97
111
|
// Set the dynamic wallet and address when the primary wallet changes
|
|
98
112
|
// Use deep comparison to prevent unnecessary updates
|
|
99
113
|
useEffect(function () {
|
|
@@ -102,6 +116,7 @@ function DynamicContextConsumer(_a) {
|
|
|
102
116
|
return;
|
|
103
117
|
}
|
|
104
118
|
prevPrimaryWalletRef.current = primaryWallet;
|
|
119
|
+
primaryWalletStateRef.current = primaryWallet;
|
|
105
120
|
if (primaryWallet) {
|
|
106
121
|
setDynamicWallet(primaryWallet);
|
|
107
122
|
setAddress(primaryWallet.address);
|
|
@@ -129,13 +144,13 @@ function DynamicContextConsumer(_a) {
|
|
|
129
144
|
};
|
|
130
145
|
return _jsx(DynamicComponent, {});
|
|
131
146
|
}
|
|
132
|
-
var getSettings = function (
|
|
147
|
+
var getSettings = function () { return ({
|
|
133
148
|
initialAuthenticationMode: 'connect-only',
|
|
134
149
|
environmentId: '61fe6031-545b-4e27-bc05-03c8a09f190b',
|
|
135
150
|
silentAuthentication: true,
|
|
136
151
|
silentAuth: true,
|
|
137
152
|
theme: {
|
|
138
|
-
mode:
|
|
153
|
+
mode: 'dark',
|
|
139
154
|
},
|
|
140
155
|
events: {
|
|
141
156
|
onAuthSuccess: function (args) {
|
|
@@ -146,42 +161,27 @@ var getSettings = function (darkMode) { return ({
|
|
|
146
161
|
function LazyInternal(props) {
|
|
147
162
|
var _this = this;
|
|
148
163
|
var _a = useState(null), Provider = _a[0], setProvider = _a[1];
|
|
149
|
-
var _b = useState(
|
|
150
|
-
var _c =
|
|
151
|
-
// Use a ref to track the previous session mode
|
|
152
|
-
var prevSessionModeRef = useRef(null);
|
|
164
|
+
var _b = useState(null), DynamicWidgetComponent = _b[0], setDynamicWidgetComponent = _b[1];
|
|
165
|
+
var _c = useState([]), walletConnectors = _c[0], setWalletConnectors = _c[1];
|
|
153
166
|
useEffect(function () {
|
|
154
|
-
// Skip if the session mode hasn't changed
|
|
155
|
-
if (sessionMode === prevSessionModeRef.current) {
|
|
156
|
-
return;
|
|
157
|
-
}
|
|
158
|
-
prevSessionModeRef.current = sessionMode;
|
|
159
167
|
var loadDynamicDeps = function () { return __awaiter(_this, void 0, void 0, function () {
|
|
160
|
-
var _a, DynamicContextProvider_1, SolanaWalletConnectors, error_1;
|
|
161
|
-
return __generator(this, function (
|
|
162
|
-
switch (
|
|
168
|
+
var _a, _b, DynamicContextProvider_1, DynamicWidget_1, SolanaWalletConnectors, error_1;
|
|
169
|
+
return __generator(this, function (_c) {
|
|
170
|
+
switch (_c.label) {
|
|
163
171
|
case 0:
|
|
164
|
-
|
|
172
|
+
_c.trys.push([0, 2, , 3]);
|
|
165
173
|
return [4 /*yield*/, Promise.all([
|
|
166
174
|
import('@dynamic-labs/sdk-react-core'),
|
|
167
175
|
import('@dynamic-labs/solana'),
|
|
168
176
|
])];
|
|
169
177
|
case 1:
|
|
170
|
-
_a =
|
|
178
|
+
_a = _c.sent(), _b = _a[0], DynamicContextProvider_1 = _b.DynamicContextProvider, DynamicWidget_1 = _b.DynamicWidget, SolanaWalletConnectors = _a[1].SolanaWalletConnectors;
|
|
171
179
|
setProvider(function () { return DynamicContextProvider_1; });
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
setWalletConnectors([SolanaWalletConnectors]);
|
|
175
|
-
}
|
|
176
|
-
else {
|
|
177
|
-
// Use all wallet connectors for NTS mode
|
|
178
|
-
setWalletConnectors([
|
|
179
|
-
SolanaWalletConnectors,
|
|
180
|
-
]);
|
|
181
|
-
}
|
|
180
|
+
setDynamicWidgetComponent(function () { return DynamicWidget_1; });
|
|
181
|
+
setWalletConnectors([SolanaWalletConnectors]);
|
|
182
182
|
return [3 /*break*/, 3];
|
|
183
183
|
case 2:
|
|
184
|
-
error_1 =
|
|
184
|
+
error_1 = _c.sent();
|
|
185
185
|
logger.error('Failed to load Dynamic dependencies:', error_1);
|
|
186
186
|
return [3 /*break*/, 3];
|
|
187
187
|
case 3: return [2 /*return*/];
|
|
@@ -189,13 +189,13 @@ function LazyInternal(props) {
|
|
|
189
189
|
});
|
|
190
190
|
}); };
|
|
191
191
|
loadDynamicDeps();
|
|
192
|
-
}, [
|
|
192
|
+
}, []);
|
|
193
193
|
// Memoize the dynamic settings to prevent unnecessary re-renders
|
|
194
|
-
var dynamicSettings = useCallback(function () { return (__assign(__assign({}, getSettings(
|
|
194
|
+
var dynamicSettings = useCallback(function () { return (__assign(__assign({}, getSettings()), { walletConnectors: walletConnectors })); }, [walletConnectors]);
|
|
195
195
|
if (!Provider || walletConnectors.length === 0) {
|
|
196
196
|
return null;
|
|
197
197
|
}
|
|
198
|
-
return (
|
|
198
|
+
return (_jsxs(Provider, { settings: dynamicSettings(), theme: "dark", children: [_jsx(DynamicContextConsumer, { children: props.children }), DynamicWidgetComponent ? _jsx(DynamicWidgetComponent, {}) : null] }));
|
|
199
199
|
}
|
|
200
200
|
export function LazyWalletProvider(_a) {
|
|
201
201
|
var children = _a.children;
|