@n1xyz/wallet-widget 0.0.29 → 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 +2 -1
- package/dist/Modal/NordFlow/hooks/useTestnetFaucet.js +26 -7
- package/dist/Modal/NordFlow/hooks/useTestnetFaucet.js.map +1 -1
- 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.js +103 -54
- package/dist/Modal/NordFlow/screens/02-ChainSelectionScreen.js.map +1 -1
- package/dist/Modal/NordFlow/screens/03-AmountInputScreen.d.ts +1 -2
- package/dist/Modal/NordFlow/screens/03-AmountInputScreen.js +284 -60
- package/dist/Modal/NordFlow/screens/03-AmountInputScreen.js.map +1 -1
- package/dist/Modal/NordFlow/screens/04-DepositProgressScreen.js +2 -2
- package/dist/Modal/NordFlow/screens/04-DepositProgressScreen.js.map +1 -1
- package/dist/Modal/NordFlow/screens/05-DepositSuccessScreen.js +97 -110
- package/dist/Modal/NordFlow/screens/05-DepositSuccessScreen.js.map +1 -1
- package/dist/Modal/NordFlow/screens/06-AuthLoadingScreen.js +10 -8
- package/dist/Modal/NordFlow/screens/06-AuthLoadingScreen.js.map +1 -1
- 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/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/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/package.json +26 -11
- package/dist/utils/dynamicImports.d.ts +0 -25
|
@@ -19,9 +19,17 @@ import { WalletError, WalletErrorCode } from '../errors/types';
|
|
|
19
19
|
var WalletErrorBoundary = /** @class */ (function (_super) {
|
|
20
20
|
__extends(WalletErrorBoundary, _super);
|
|
21
21
|
function WalletErrorBoundary() {
|
|
22
|
-
|
|
22
|
+
var _this = _super !== null && _super.apply(this, arguments) || this;
|
|
23
|
+
_this.state = {
|
|
24
|
+
hasError: false,
|
|
25
|
+
};
|
|
26
|
+
return _this;
|
|
23
27
|
}
|
|
28
|
+
WalletErrorBoundary.getDerivedStateFromError = function () {
|
|
29
|
+
return { hasError: true };
|
|
30
|
+
};
|
|
24
31
|
WalletErrorBoundary.prototype.componentDidCatch = function (error) {
|
|
32
|
+
console.error('[N1 Wallet] Unhandled error captured by WalletErrorBoundary:', error);
|
|
25
33
|
if (error instanceof WalletError) {
|
|
26
34
|
this.props.onError(error);
|
|
27
35
|
}
|
|
@@ -30,7 +38,17 @@ var WalletErrorBoundary = /** @class */ (function (_super) {
|
|
|
30
38
|
this.props.onError(new WalletError(WalletErrorCode.UNKNOWN, error.message || 'An unexpected error occurred', { originalError: error }));
|
|
31
39
|
}
|
|
32
40
|
};
|
|
41
|
+
WalletErrorBoundary.prototype.componentDidUpdate = function (prevProps, prevState) {
|
|
42
|
+
if (prevState.hasError && this.state.hasError && prevProps.children !== this.props.children) {
|
|
43
|
+
// reset error state when children change after an error
|
|
44
|
+
// eslint-disable-next-line react/no-did-update-set-state
|
|
45
|
+
this.setState({ hasError: false });
|
|
46
|
+
}
|
|
47
|
+
};
|
|
33
48
|
WalletErrorBoundary.prototype.render = function () {
|
|
49
|
+
if (this.state.hasError) {
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
34
52
|
return this.props.children;
|
|
35
53
|
};
|
|
36
54
|
return WalletErrorBoundary;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WalletErrorBoundary.js","sourceRoot":"","sources":["../../src/Provider/WalletErrorBoundary.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"WalletErrorBoundary.js","sourceRoot":"","sources":["../../src/Provider/WalletErrorBoundary.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAW/D,uCAAuC;AACvC;IAAkC,uCAGjC;IAHD;;QAIE,WAAK,GAA6B;YAChC,QAAQ,EAAE,KAAK;SAChB,CAAC;;IAuCJ,CAAC;IArCQ,4CAAwB,GAA/B;QACE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC5B,CAAC;IAED,+CAAiB,GAAjB,UAAkB,KAAY;QAC5B,OAAO,CAAC,KAAK,CAAC,8DAA8D,EAAE,KAAK,CAAC,CAAC;QACrF,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;YACjC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;aAAM,CAAC;YACN,wCAAwC;YACxC,IAAI,CAAC,KAAK,CAAC,OAAO,CAChB,IAAI,WAAW,CACb,eAAe,CAAC,OAAO,EACvB,KAAK,CAAC,OAAO,IAAI,8BAA8B,EAC/C,EAAE,aAAa,EAAE,KAAK,EAAE,CACzB,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,gDAAkB,GAAlB,UACE,SAAmC,EACnC,SAAmC;QAEnC,IAAI,SAAS,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,SAAS,CAAC,QAAQ,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC5F,wDAAwD;YACxD,yDAAyD;YACzD,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED,oCAAM,GAAN;QACE,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;IAC7B,CAAC;IACH,0BAAC;AAAD,CAAC,AA7CD,CAAkC,KAAK,CAAC,SAAS,GA6ChD;AAED,eAAe,mBAAmB,CAAC","sourcesContent":["import React from 'react';\nimport { WalletError, WalletErrorCode } from '../errors/types';\n\ntype WalletErrorBoundaryProps = {\n children: React.ReactNode;\n onError: (error: WalletError) => void;\n};\n\ntype WalletErrorBoundaryState = {\n hasError: boolean;\n};\n\n// Error boundary to catch WalletErrors\nclass WalletErrorBoundary extends React.Component<\n WalletErrorBoundaryProps,\n WalletErrorBoundaryState\n> {\n state: WalletErrorBoundaryState = {\n hasError: false,\n };\n\n static getDerivedStateFromError(): WalletErrorBoundaryState {\n return { hasError: true };\n }\n\n componentDidCatch(error: Error) {\n console.error('[N1 Wallet] Unhandled error captured by WalletErrorBoundary:', error);\n if (error instanceof WalletError) {\n this.props.onError(error);\n } else {\n // Convert unknown errors to WalletError\n this.props.onError(\n new WalletError(\n WalletErrorCode.UNKNOWN,\n error.message || 'An unexpected error occurred',\n { originalError: error }\n )\n );\n }\n }\n\n componentDidUpdate(\n prevProps: WalletErrorBoundaryProps,\n prevState: WalletErrorBoundaryState\n ) {\n if (prevState.hasError && this.state.hasError && prevProps.children !== this.props.children) {\n // reset error state when children change after an error\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState({ hasError: false });\n }\n }\n\n render() {\n if (this.state.hasError) {\n return null;\n }\n return this.props.children;\n }\n}\n\nexport default WalletErrorBoundary;\n"]}
|
|
@@ -35,18 +35,18 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
35
35
|
}
|
|
36
36
|
};
|
|
37
37
|
import { useEffect } from 'react';
|
|
38
|
-
import {
|
|
39
|
-
import { generateSessionKeyPair, signEd25519 } from '@n1xyz/nts-sdk';
|
|
38
|
+
import { dynamicImportNordUser } from '../../utils/dynamicNord';
|
|
40
39
|
import { PublicKey } from '@solana/web3.js';
|
|
41
|
-
import { getSessionKeysFromLocalStorage, storeSessionKeysInLocalStorage } from '../../Logic/utils';
|
|
40
|
+
import { getSessionKeysFromLocalStorage, storeSessionKeysInLocalStorage, generateSessionKeyPair } from '../../Logic/utils';
|
|
41
|
+
import { signEd25519Message } from '../../utils/ed25519';
|
|
42
42
|
import { WalletError, WalletErrorCode } from '../../errors/types';
|
|
43
43
|
import { logger } from '../../utils/logger';
|
|
44
44
|
import { N1SessionMode } from '../types';
|
|
45
45
|
import { useN1WalletContext, useN1WalletInternalContext } from '../hooks';
|
|
46
46
|
export function useNordUserInitialization() {
|
|
47
47
|
var _this = this;
|
|
48
|
-
var _a = useN1WalletInternalContext(), setNordUser = _a.setNordUser, setSessionPubKey = _a.setSessionPubKey, setSignMessageWithSessionKey = _a.setSignMessageWithSessionKey, setSignTransactionWithWalletKey = _a.setSignTransactionWithWalletKey, dynamicWallet = _a.dynamicWallet;
|
|
49
|
-
var _b = useN1WalletContext(), address = _b.address, nordUser = _b.nordUser, sessionMode = _b.sessionMode, nord = _b.nord, signMessageWithSessionKey = _b.signMessageWithSessionKey, signTransactionWithWalletKey = _b.signTransactionWithWalletKey, sessionPubKey = _b.sessionPubKey;
|
|
48
|
+
var _a = useN1WalletInternalContext(), setNordUser = _a.setNordUser, setSessionPubKey = _a.setSessionPubKey, setSignMessageWithSessionKey = _a.setSignMessageWithSessionKey, setSignMessageWithWalletKey = _a.setSignMessageWithWalletKey, setSignTransactionWithWalletKey = _a.setSignTransactionWithWalletKey, dynamicWallet = _a.dynamicWallet;
|
|
49
|
+
var _b = useN1WalletContext(), address = _b.address, nordUser = _b.nordUser, sessionMode = _b.sessionMode, nord = _b.nord, signMessageWithSessionKey = _b.signMessageWithSessionKey, signMessageWithWalletKey = _b.signMessageWithWalletKey, signTransactionWithWalletKey = _b.signTransactionWithWalletKey, sessionPubKey = _b.sessionPubKey;
|
|
50
50
|
// First useEffect: Initialize signing functions
|
|
51
51
|
useEffect(function () {
|
|
52
52
|
if (sessionMode !== N1SessionMode.Nord || address === null || address === '') {
|
|
@@ -85,8 +85,45 @@ export function useNordUserInitialization() {
|
|
|
85
85
|
setSignTransactionWithWalletKey(function () { return signTransactionWithWallet; });
|
|
86
86
|
return signTransactionWithWallet;
|
|
87
87
|
};
|
|
88
|
+
var createWalletMessageSignFunction = function () {
|
|
89
|
+
if (!dynamicWallet) {
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
92
|
+
var signMessageWithWallet = function (message) { return __awaiter(_this, void 0, void 0, function () {
|
|
93
|
+
var signer, result, error_2;
|
|
94
|
+
return __generator(this, function (_a) {
|
|
95
|
+
switch (_a.label) {
|
|
96
|
+
case 0:
|
|
97
|
+
_a.trys.push([0, 4, , 5]);
|
|
98
|
+
if (!(dynamicWallet.chain === 'SOL')) return [3 /*break*/, 3];
|
|
99
|
+
return [4 /*yield*/, dynamicWallet.getSigner()];
|
|
100
|
+
case 1:
|
|
101
|
+
signer = _a.sent();
|
|
102
|
+
if (!(signer === null || signer === void 0 ? void 0 : signer.signMessage)) {
|
|
103
|
+
throw new Error('signMessage is not supported by this wallet');
|
|
104
|
+
}
|
|
105
|
+
return [4 /*yield*/, signer.signMessage(message)];
|
|
106
|
+
case 2:
|
|
107
|
+
result = _a.sent();
|
|
108
|
+
if (!(result === null || result === void 0 ? void 0 : result.signature)) {
|
|
109
|
+
throw new Error('Wallet did not return a signature');
|
|
110
|
+
}
|
|
111
|
+
logger.debug('Solana message signature received');
|
|
112
|
+
return [2 /*return*/, result.signature];
|
|
113
|
+
case 3: throw new WalletError(WalletErrorCode.USER_REJECTED, 'Unsupported chain', { originalError: new Error('Unsupported chain') });
|
|
114
|
+
case 4:
|
|
115
|
+
error_2 = _a.sent();
|
|
116
|
+
console.error('Error signing message with wallet:', error_2);
|
|
117
|
+
throw new WalletError(WalletErrorCode.USER_REJECTED, 'Failed to sign message with wallet', { originalError: error_2 });
|
|
118
|
+
case 5: return [2 /*return*/];
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
}); };
|
|
122
|
+
setSignMessageWithWalletKey(function () { return signMessageWithWallet; });
|
|
123
|
+
return signMessageWithWallet;
|
|
124
|
+
};
|
|
88
125
|
var createSession = function () { return __awaiter(_this, void 0, void 0, function () {
|
|
89
|
-
var sessionKeyPair_1, storedKeys, signFn_1,
|
|
126
|
+
var sessionKeyPair_1, storedKeys, signFn_1, error_3;
|
|
90
127
|
var _this = this;
|
|
91
128
|
return __generator(this, function (_a) {
|
|
92
129
|
switch (_a.label) {
|
|
@@ -115,17 +152,17 @@ export function useNordUserInitialization() {
|
|
|
115
152
|
_a.label = 2;
|
|
116
153
|
case 2:
|
|
117
154
|
signFn_1 = function (message) { return __awaiter(_this, void 0, void 0, function () {
|
|
118
|
-
var
|
|
155
|
+
var error_4;
|
|
119
156
|
return __generator(this, function (_a) {
|
|
120
157
|
switch (_a.label) {
|
|
121
158
|
case 0:
|
|
122
159
|
_a.trys.push([0, 2, , 3]);
|
|
123
|
-
return [4 /*yield*/,
|
|
160
|
+
return [4 /*yield*/, signEd25519Message(message, sessionKeyPair_1.privateKey)];
|
|
124
161
|
case 1: return [2 /*return*/, _a.sent()];
|
|
125
162
|
case 2:
|
|
126
|
-
|
|
127
|
-
console.error('Error signing with session key:',
|
|
128
|
-
throw
|
|
163
|
+
error_4 = _a.sent();
|
|
164
|
+
console.error('Error signing with session key:', error_4);
|
|
165
|
+
throw error_4;
|
|
129
166
|
case 3: return [2 /*return*/];
|
|
130
167
|
}
|
|
131
168
|
});
|
|
@@ -140,8 +177,8 @@ export function useNordUserInitialization() {
|
|
|
140
177
|
setSignMessageWithSessionKey(function () { return signFn_1; });
|
|
141
178
|
return [2 /*return*/, signFn_1];
|
|
142
179
|
case 3:
|
|
143
|
-
|
|
144
|
-
console.error('Error creating session:',
|
|
180
|
+
error_3 = _a.sent();
|
|
181
|
+
console.error('Error creating session:', error_3);
|
|
145
182
|
return [2 /*return*/, null];
|
|
146
183
|
case 4: return [2 /*return*/];
|
|
147
184
|
}
|
|
@@ -155,6 +192,9 @@ export function useNordUserInitialization() {
|
|
|
155
192
|
if (!signTransactionWithWalletKey && dynamicWallet) {
|
|
156
193
|
createTransactionSignFunction();
|
|
157
194
|
}
|
|
195
|
+
if (!signMessageWithWalletKey && dynamicWallet) {
|
|
196
|
+
createWalletMessageSignFunction();
|
|
197
|
+
}
|
|
158
198
|
if (!!signMessageWithSessionKey) return [3 /*break*/, 2];
|
|
159
199
|
return [4 /*yield*/, createSession()];
|
|
160
200
|
case 1:
|
|
@@ -168,6 +208,10 @@ export function useNordUserInitialization() {
|
|
|
168
208
|
}, [
|
|
169
209
|
dynamicWallet,
|
|
170
210
|
address,
|
|
211
|
+
sessionMode,
|
|
212
|
+
signMessageWithSessionKey,
|
|
213
|
+
signMessageWithWalletKey,
|
|
214
|
+
signTransactionWithWalletKey,
|
|
171
215
|
]);
|
|
172
216
|
// Second useEffect: Initialize NordUser
|
|
173
217
|
useEffect(function () {
|
|
@@ -175,12 +219,12 @@ export function useNordUserInitialization() {
|
|
|
175
219
|
return;
|
|
176
220
|
}
|
|
177
221
|
var createNordUser = function () { return __awaiter(_this, void 0, void 0, function () {
|
|
178
|
-
var sessionId, sessionKeyData, sessionIdKey, storedSessionId, user, _1,
|
|
222
|
+
var sessionId, sessionKeyData, sessionIdKey, storedSessionId, NordUser, user, _1, error_5;
|
|
179
223
|
return __generator(this, function (_a) {
|
|
180
224
|
switch (_a.label) {
|
|
181
225
|
case 0:
|
|
182
|
-
_a.trys.push([0,
|
|
183
|
-
if (!nord || !address || !sessionPubKey || !signMessageWithSessionKey || !signTransactionWithWalletKey) {
|
|
226
|
+
_a.trys.push([0, 7, , 8]);
|
|
227
|
+
if (!nord || !address || !sessionPubKey || !signMessageWithSessionKey || !signMessageWithWalletKey || !signTransactionWithWalletKey) {
|
|
184
228
|
return [2 /*return*/, null];
|
|
185
229
|
}
|
|
186
230
|
sessionId = undefined;
|
|
@@ -202,38 +246,45 @@ export function useNordUserInitialization() {
|
|
|
202
246
|
console.error('Error retrieving sessionId from localStorage:', error);
|
|
203
247
|
}
|
|
204
248
|
}
|
|
205
|
-
|
|
206
|
-
nord: nord,
|
|
207
|
-
sessionSignFn: signMessageWithSessionKey,
|
|
208
|
-
transactionSignFn: signTransactionWithWalletKey,
|
|
209
|
-
sessionId: sessionId,
|
|
210
|
-
sessionPubKey: sessionPubKey,
|
|
211
|
-
publicKey: new PublicKey(address),
|
|
212
|
-
});
|
|
213
|
-
_a.label = 1;
|
|
249
|
+
return [4 /*yield*/, dynamicImportNordUser()];
|
|
214
250
|
case 1:
|
|
215
|
-
_a.
|
|
216
|
-
return [4 /*yield*/,
|
|
251
|
+
NordUser = _a.sent();
|
|
252
|
+
return [4 /*yield*/, NordUser.new({
|
|
253
|
+
nord: nord,
|
|
254
|
+
walletPubkey: new PublicKey(address),
|
|
255
|
+
sessionPubkey: sessionPubKey,
|
|
256
|
+
sessionId: sessionId,
|
|
257
|
+
signSessionFn: signMessageWithSessionKey,
|
|
258
|
+
signTransactionFn: signTransactionWithWalletKey,
|
|
259
|
+
signMessageFn: signMessageWithWalletKey,
|
|
260
|
+
})];
|
|
217
261
|
case 2:
|
|
218
|
-
_a.sent();
|
|
219
|
-
|
|
262
|
+
user = _a.sent();
|
|
263
|
+
_a.label = 3;
|
|
220
264
|
case 3:
|
|
221
|
-
|
|
222
|
-
return [
|
|
265
|
+
_a.trys.push([3, 5, , 6]);
|
|
266
|
+
return [4 /*yield*/, user.updateAccountId()];
|
|
223
267
|
case 4:
|
|
268
|
+
_a.sent();
|
|
269
|
+
return [3 /*break*/, 6];
|
|
270
|
+
case 5:
|
|
271
|
+
_1 = _a.sent();
|
|
272
|
+
return [3 /*break*/, 6];
|
|
273
|
+
case 6:
|
|
224
274
|
setNordUser(user);
|
|
225
275
|
return [2 /*return*/, user];
|
|
226
|
-
case
|
|
227
|
-
|
|
228
|
-
console.error('Error creating NordUser:',
|
|
276
|
+
case 7:
|
|
277
|
+
error_5 = _a.sent();
|
|
278
|
+
console.error('Error creating NordUser:', error_5);
|
|
229
279
|
setNordUser(null);
|
|
230
280
|
return [2 /*return*/, null];
|
|
231
|
-
case
|
|
281
|
+
case 8: return [2 /*return*/];
|
|
232
282
|
}
|
|
233
283
|
});
|
|
234
284
|
}); };
|
|
235
285
|
// Only create NordUser when all dependencies are available and nordUser is null
|
|
236
286
|
if (signMessageWithSessionKey &&
|
|
287
|
+
signMessageWithWalletKey &&
|
|
237
288
|
signTransactionWithWalletKey &&
|
|
238
289
|
sessionPubKey &&
|
|
239
290
|
nordUser === null) {
|
|
@@ -245,6 +296,7 @@ export function useNordUserInitialization() {
|
|
|
245
296
|
nord,
|
|
246
297
|
address,
|
|
247
298
|
signMessageWithSessionKey,
|
|
299
|
+
signMessageWithWalletKey,
|
|
248
300
|
signTransactionWithWalletKey,
|
|
249
301
|
sessionPubKey,
|
|
250
302
|
nordUser,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useNordUserInitialization.js","sourceRoot":"","sources":["../../../src/Provider/hooks/useNordUserInitialization.ts"],"names":[],"mappings":"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","sourcesContent":["import { useEffect } from 'react';\nimport React from 'react';\nimport { NordUser } from '@n1xyz/nord-ts';\nimport { generateSessionKeyPair, signEd25519 } from '@n1xyz/nts-sdk';\nimport { PublicKey, Transaction } from '@solana/web3.js';\nimport { getSessionKeysFromLocalStorage, storeSessionKeysInLocalStorage } from '../../Logic/utils';\nimport { WalletError, WalletErrorCode } from '../../errors/types';\nimport { logger } from '../../utils/logger';\nimport { N1SessionMode } from '../types';\nimport { useN1WalletContext, useN1WalletInternalContext } from '../hooks';\n\n\nexport function useNordUserInitialization() {\n const { setNordUser, setSessionPubKey, setSignMessageWithSessionKey, setSignTransactionWithWalletKey, dynamicWallet } = useN1WalletInternalContext();\n\n const { address, nordUser, sessionMode, nord, signMessageWithSessionKey, signTransactionWithWalletKey, sessionPubKey } = useN1WalletContext();\n // First useEffect: Initialize signing functions\n useEffect(() => {\n if (sessionMode !== N1SessionMode.Nord || address === null || address === '') {\n return;\n }\n\n const createTransactionSignFunction = () => {\n if (!dynamicWallet) {\n return null;\n }\n\n const signTransactionWithWallet = async (\n transaction: any\n ): Promise<any> => {\n try {\n if (dynamicWallet.chain === 'SOL') {\n const signedTransaction = await (\n await dynamicWallet.getSigner()\n ).signTransaction(transaction);\n logger.debug('Solana transaction signature received');\n\n // const serializedTx = signedTransaction.serialize();\n // return Transaction.from(serializedTx);\n console.log('signedTransaction', signedTransaction.signatures);\n console.log('signedTransaction - 2', signedTransaction);\n return signedTransaction;\n }\n\n throw new WalletError(\n WalletErrorCode.USER_REJECTED,\n 'Unsupported chain',\n { originalError: new Error('Unsupported chain') }\n );\n } catch (error) {\n console.error('Error signing transaction with wallet:', error);\n throw new WalletError(\n WalletErrorCode.USER_REJECTED,\n 'Failed to sign transaction with wallet',\n { originalError: error }\n );\n }\n };\n\n setSignTransactionWithWalletKey(() => signTransactionWithWallet);\n return signTransactionWithWallet;\n };\n\n const createSession = async () => {\n try {\n let sessionKeyPair = null;\n if (address) {\n try {\n const storedKeys = getSessionKeysFromLocalStorage(address);\n if (storedKeys) {\n sessionKeyPair = {\n privateKey: storedKeys.ed25519PrivateKey,\n publicKey: storedKeys.ed25519PublicKey,\n };\n }\n } catch (error) {\n console.error(\n 'Error reconstructing key pair from stored keys:',\n error\n );\n sessionKeyPair = null;\n }\n }\n\n if (!sessionKeyPair) {\n sessionKeyPair = await generateSessionKeyPair();\n }\n\n const signFn = async (message: any): Promise<any> => {\n try {\n return await signEd25519(message, sessionKeyPair.privateKey);\n } catch (error) {\n console.error('Error signing with session key:', error);\n throw error;\n }\n };\n\n\n storeSessionKeysInLocalStorage({\n privKey: sessionKeyPair.privateKey,\n publicKey: sessionKeyPair.publicKey!,\n walletPublicKey: address,\n chainName: dynamicWallet?.chain || 'ETH',\n });\n\n setSessionPubKey(sessionKeyPair.publicKey!);\n setSignMessageWithSessionKey(() => signFn);\n return signFn;\n } catch (error) {\n console.error('Error creating session:', error);\n return null;\n }\n };\n\n // Initialize signing functions if needed\n const initSigningFunctions = async () => {\n if (!signTransactionWithWalletKey && dynamicWallet) {\n createTransactionSignFunction();\n }\n\n if (!signMessageWithSessionKey) {\n await createSession();\n }\n };\n\n initSigningFunctions();\n }, [\n dynamicWallet,\n address,\n ]);\n\n // Second useEffect: Initialize NordUser\n useEffect(() => {\n if (sessionMode !== N1SessionMode.Nord) {\n return;\n }\n\n const createNordUser = async () => {\n try {\n if (!nord || !address || !sessionPubKey || !signMessageWithSessionKey || !signTransactionWithWalletKey) {\n return null;\n }\n\n let sessionId = undefined;\n if (address) {\n try {\n const sessionKeyData = getSessionKeysFromLocalStorage(address);\n if (sessionKeyData) {\n const sessionIdKey = `n1_sessionId_${address}`;\n const storedSessionId = localStorage.getItem(sessionIdKey);\n if (storedSessionId !== null) {\n sessionId = BigInt(storedSessionId);\n logger.debug('Found existing sessionId in localStorage', {\n sessionId: storedSessionId,\n });\n }\n }\n } catch (error) {\n console.error('Error retrieving sessionId from localStorage:', error);\n }\n }\n\n const user = new NordUser({\n nord: nord,\n sessionSignFn: signMessageWithSessionKey,\n transactionSignFn: signTransactionWithWalletKey,\n sessionId,\n sessionPubKey: sessionPubKey,\n publicKey: new PublicKey(address),\n });\n\n try {\n await user.updateAccountId();\n } catch (_) { }\n\n setNordUser(user);\n return user;\n } catch (error) {\n console.error('Error creating NordUser:', error);\n setNordUser(null);\n return null;\n }\n };\n\n // Only create NordUser when all dependencies are available and nordUser is null\n if (\n signMessageWithSessionKey &&\n signTransactionWithWalletKey &&\n sessionPubKey &&\n nordUser === null\n ) {\n logger.debug('Dependencies available, initializing NordUser');\n createNordUser();\n }\n }, [\n sessionMode,\n nord,\n address,\n signMessageWithSessionKey,\n signTransactionWithWalletKey,\n sessionPubKey,\n nordUser,\n setNordUser\n ]);\n} \n"]}
|
|
1
|
+
{"version":3,"file":"useNordUserInitialization.js","sourceRoot":"","sources":["../../../src/Provider/hooks/useNordUserInitialization.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,8BAA8B,EAAE,8BAA8B,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3H,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,MAAM,UAAU,CAAC;AAG1E,MAAM,UAAU,yBAAyB;IAAzC,iBAqQC;IApQS,IAAA,KAOF,0BAA0B,EAAE,EAN5B,WAAW,iBAAA,EACX,gBAAgB,sBAAA,EAChB,4BAA4B,kCAAA,EAC5B,2BAA2B,iCAAA,EAC3B,+BAA+B,qCAAA,EAC/B,aAAa,mBACe,CAAC;IAE3B,IAAA,KASF,kBAAkB,EAAE,EARpB,OAAO,aAAA,EACP,QAAQ,cAAA,EACR,WAAW,iBAAA,EACX,IAAI,UAAA,EACJ,yBAAyB,+BAAA,EACzB,wBAAwB,8BAAA,EACxB,4BAA4B,kCAAA,EAC5B,aAAa,mBACO,CAAC;IACzB,gDAAgD;IAChD,SAAS,CAAC;QACN,IAAI,WAAW,KAAK,aAAa,CAAC,IAAI,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;YAC3E,OAAO;QACX,CAAC;QAED,IAAM,6BAA6B,GAAG;YAClC,IAAI,CAAC,aAAa,EAAE,CAAC;gBACjB,OAAO,IAAI,CAAC;YAChB,CAAC;YAED,IAAM,yBAAyB,GAAG,UAC9B,WAAgB;;;;;;iCAGR,CAAA,aAAa,CAAC,KAAK,KAAK,KAAK,CAAA,EAA7B,wBAA6B;4BAEzB,qBAAM,aAAa,CAAC,SAAS,EAAE,EAAA;gCADT,qBAAM,CAC5B,SAA+B,CAClC,CAAC,eAAe,CAAC,WAAW,CAAC,EAAA;;4BAFxB,iBAAiB,GAAG,SAEI;4BAC9B,MAAM,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;4BAEtD,sDAAsD;4BACtD,yCAAyC;4BACzC,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC;4BAC/D,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,iBAAiB,CAAC,CAAC;4BACxD,sBAAO,iBAAiB,EAAC;gCAG7B,MAAM,IAAI,WAAW,CACjB,eAAe,CAAC,aAAa,EAC7B,mBAAmB,EACnB,EAAE,aAAa,EAAE,IAAI,KAAK,CAAC,mBAAmB,CAAC,EAAE,CACpD,CAAC;;;4BAEF,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,OAAK,CAAC,CAAC;4BAC/D,MAAM,IAAI,WAAW,CACjB,eAAe,CAAC,aAAa,EAC7B,wCAAwC,EACxC,EAAE,aAAa,EAAE,OAAK,EAAE,CAC3B,CAAC;;;;iBAET,CAAC;YAEF,+BAA+B,CAAC,cAAM,OAAA,yBAAyB,EAAzB,CAAyB,CAAC,CAAC;YACjE,OAAO,yBAAyB,CAAC;QACrC,CAAC,CAAC;QAEF,IAAM,+BAA+B,GAAG;YACpC,IAAI,CAAC,aAAa,EAAE,CAAC;gBACjB,OAAO,IAAI,CAAC;YAChB,CAAC;YAED,IAAM,qBAAqB,GAAG,UAC1B,OAAmB;;;;;;iCAGX,CAAA,aAAa,CAAC,KAAK,KAAK,KAAK,CAAA,EAA7B,wBAA6B;4BACd,qBAAM,aAAa,CAAC,SAAS,EAAE,EAAA;;4BAAxC,MAAM,GAAG,SAA+B;4BAC9C,IAAI,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,WAAW,CAAA,EAAE,CAAC;gCACvB,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;4BACnE,CAAC;4BACc,qBAAM,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,EAAA;;4BAA1C,MAAM,GAAG,SAAiC;4BAChD,IAAI,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,SAAS,CAAA,EAAE,CAAC;gCACrB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;4BACzD,CAAC;4BACD,MAAM,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;4BAClD,sBAAO,MAAM,CAAC,SAAS,EAAC;gCAG5B,MAAM,IAAI,WAAW,CACjB,eAAe,CAAC,aAAa,EAC7B,mBAAmB,EACnB,EAAE,aAAa,EAAE,IAAI,KAAK,CAAC,mBAAmB,CAAC,EAAE,CACpD,CAAC;;;4BAEF,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,OAAK,CAAC,CAAC;4BAC3D,MAAM,IAAI,WAAW,CACjB,eAAe,CAAC,aAAa,EAC7B,oCAAoC,EACpC,EAAE,aAAa,EAAE,OAAK,EAAE,CAC3B,CAAC;;;;iBAET,CAAC;YAEF,2BAA2B,CAAC,cAAM,OAAA,qBAAqB,EAArB,CAAqB,CAAC,CAAC;YACzD,OAAO,qBAAqB,CAAC;QACjC,CAAC,CAAC;QAEF,IAAM,aAAa,GAAG;;;;;;;wBAEV,mBAAiB,IAAI,CAAC;wBAC1B,IAAI,OAAO,EAAE,CAAC;4BACV,IAAI,CAAC;gCACK,UAAU,GAAG,8BAA8B,CAAC,OAAO,CAAC,CAAC;gCAC3D,IAAI,UAAU,EAAE,CAAC;oCACb,gBAAc,GAAG;wCACb,UAAU,EAAE,UAAU,CAAC,iBAAiB;wCACxC,SAAS,EAAE,UAAU,CAAC,gBAAgB;qCACzC,CAAC;gCACN,CAAC;4BACL,CAAC;4BAAC,OAAO,KAAK,EAAE,CAAC;gCACb,OAAO,CAAC,KAAK,CACT,iDAAiD,EACjD,KAAK,CACR,CAAC;gCACF,gBAAc,GAAG,IAAI,CAAC;4BAC1B,CAAC;wBACL,CAAC;6BAEG,CAAC,gBAAc,EAAf,wBAAe;wBACE,qBAAM,sBAAsB,EAAE,EAAA;;wBAA/C,gBAAc,GAAG,SAA8B,CAAC;;;wBAG9C,WAAS,UAAO,OAAY;;;;;;wCAEnB,qBAAM,kBAAkB,CAAC,OAAO,EAAE,gBAAc,CAAC,UAAU,CAAC,EAAA;4CAAnE,sBAAO,SAA4D,EAAC;;;wCAEpE,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,OAAK,CAAC,CAAC;wCACxD,MAAM,OAAK,CAAC;;;;6BAEnB,CAAC;wBAGF,8BAA8B,CAAC;4BAC3B,OAAO,EAAE,gBAAc,CAAC,UAAU;4BAClC,SAAS,EAAE,gBAAc,CAAC,SAAU;4BACpC,eAAe,EAAE,OAAO;4BACxB,SAAS,EAAE,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,KAAK,KAAI,KAAK;yBAC3C,CAAC,CAAC;wBAEH,gBAAgB,CAAC,gBAAc,CAAC,SAAU,CAAC,CAAC;wBAC5C,4BAA4B,CAAC,cAAM,OAAA,QAAM,EAAN,CAAM,CAAC,CAAC;wBAC3C,sBAAO,QAAM,EAAC;;;wBAEd,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,OAAK,CAAC,CAAC;wBAChD,sBAAO,IAAI,EAAC;;;;aAEnB,CAAC;QAEF,yCAAyC;QACzC,IAAM,oBAAoB,GAAG;;;;wBACzB,IAAI,CAAC,4BAA4B,IAAI,aAAa,EAAE,CAAC;4BACjD,6BAA6B,EAAE,CAAC;wBACpC,CAAC;wBAED,IAAI,CAAC,wBAAwB,IAAI,aAAa,EAAE,CAAC;4BAC7C,+BAA+B,EAAE,CAAC;wBACtC,CAAC;6BAEG,CAAC,yBAAyB,EAA1B,wBAA0B;wBAC1B,qBAAM,aAAa,EAAE,EAAA;;wBAArB,SAAqB,CAAC;;;;;aAE7B,CAAC;QAEF,oBAAoB,EAAE,CAAC;IAC3B,CAAC,EAAE;QACC,aAAa;QACb,OAAO;QACP,WAAW;QACX,yBAAyB;QACzB,wBAAwB;QACxB,4BAA4B;KAC/B,CAAC,CAAC;IAEH,wCAAwC;IACxC,SAAS,CAAC;QACN,IAAI,WAAW,KAAK,aAAa,CAAC,IAAI,EAAE,CAAC;YACrC,OAAO;QACX,CAAC;QAED,IAAM,cAAc,GAAG;;;;;;wBAEf,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,aAAa,IAAI,CAAC,yBAAyB,IAAI,CAAC,wBAAwB,IAAI,CAAC,4BAA4B,EAAE,CAAC;4BAClI,sBAAO,IAAI,EAAC;wBAChB,CAAC;wBAEG,SAAS,GAAG,SAAS,CAAC;wBAC1B,IAAI,OAAO,EAAE,CAAC;4BACV,IAAI,CAAC;gCACK,cAAc,GAAG,8BAA8B,CAAC,OAAO,CAAC,CAAC;gCAC/D,IAAI,cAAc,EAAE,CAAC;oCACX,YAAY,GAAG,uBAAgB,OAAO,CAAE,CAAC;oCACzC,eAAe,GAAG,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;oCAC3D,IAAI,eAAe,KAAK,IAAI,EAAE,CAAC;wCAC3B,SAAS,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;wCACpC,MAAM,CAAC,KAAK,CAAC,0CAA0C,EAAE;4CACrD,SAAS,EAAE,eAAe;yCAC7B,CAAC,CAAC;oCACP,CAAC;gCACL,CAAC;4BACL,CAAC;4BAAC,OAAO,KAAK,EAAE,CAAC;gCACb,OAAO,CAAC,KAAK,CAAC,+CAA+C,EAAE,KAAK,CAAC,CAAC;4BAC1E,CAAC;wBACL,CAAC;wBAEgB,qBAAM,qBAAqB,EAAE,EAAA;;wBAAxC,QAAQ,GAAG,SAA6B;wBACjC,qBAAM,QAAQ,CAAC,GAAG,CAAC;gCAC5B,IAAI,MAAA;gCACJ,YAAY,EAAE,IAAI,SAAS,CAAC,OAAO,CAAC;gCACpC,aAAa,EAAE,aAAa;gCAC5B,SAAS,WAAA;gCACT,aAAa,EAAE,yBAAyB;gCACxC,iBAAiB,EAAE,4BAA4B;gCAC/C,aAAa,EAAE,wBAAwB;6BAC1C,CAAC,EAAA;;wBARI,IAAI,GAAG,SAQX;;;;wBAGE,qBAAM,IAAI,CAAC,eAAe,EAAE,EAAA;;wBAA5B,SAA4B,CAAC;;;;;;wBAGjC,WAAW,CAAC,IAAI,CAAC,CAAC;wBAClB,sBAAO,IAAI,EAAC;;;wBAEZ,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,OAAK,CAAC,CAAC;wBACjD,WAAW,CAAC,IAAI,CAAC,CAAC;wBAClB,sBAAO,IAAI,EAAC;;;;aAEnB,CAAC;QAEF,gFAAgF;QAChF,IACI,yBAAyB;YACzB,wBAAwB;YACxB,4BAA4B;YAC5B,aAAa;YACb,QAAQ,KAAK,IAAI,EACnB,CAAC;YACC,MAAM,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;YAC9D,cAAc,EAAE,CAAC;QACrB,CAAC;IACL,CAAC,EAAE;QACC,WAAW;QACX,IAAI;QACJ,OAAO;QACP,yBAAyB;QACzB,wBAAwB;QACxB,4BAA4B;QAC5B,aAAa;QACb,QAAQ;QACR,WAAW;KACd,CAAC,CAAC;AACP,CAAC","sourcesContent":["import { useEffect } from 'react';\nimport { dynamicImportNordUser } from '../../utils/dynamicNord';\nimport { PublicKey } from '@solana/web3.js';\nimport { getSessionKeysFromLocalStorage, storeSessionKeysInLocalStorage, generateSessionKeyPair } from '../../Logic/utils';\nimport { signEd25519Message } from '../../utils/ed25519';\nimport { WalletError, WalletErrorCode } from '../../errors/types';\nimport { logger } from '../../utils/logger';\nimport { N1SessionMode } from '../types';\nimport { useN1WalletContext, useN1WalletInternalContext } from '../hooks';\n\n\nexport function useNordUserInitialization() {\n const {\n setNordUser,\n setSessionPubKey,\n setSignMessageWithSessionKey,\n setSignMessageWithWalletKey,\n setSignTransactionWithWalletKey,\n dynamicWallet,\n } = useN1WalletInternalContext();\n\n const {\n address,\n nordUser,\n sessionMode,\n nord,\n signMessageWithSessionKey,\n signMessageWithWalletKey,\n signTransactionWithWalletKey,\n sessionPubKey,\n } = useN1WalletContext();\n // First useEffect: Initialize signing functions\n useEffect(() => {\n if (sessionMode !== N1SessionMode.Nord || address === null || address === '') {\n return;\n }\n\n const createTransactionSignFunction = () => {\n if (!dynamicWallet) {\n return null;\n }\n\n const signTransactionWithWallet = async (\n transaction: any\n ): Promise<any> => {\n try {\n if (dynamicWallet.chain === 'SOL') {\n const signedTransaction = await (\n await dynamicWallet.getSigner()\n ).signTransaction(transaction);\n logger.debug('Solana transaction signature received');\n\n // const serializedTx = signedTransaction.serialize();\n // return Transaction.from(serializedTx);\n console.log('signedTransaction', signedTransaction.signatures);\n console.log('signedTransaction - 2', signedTransaction);\n return signedTransaction;\n }\n\n throw new WalletError(\n WalletErrorCode.USER_REJECTED,\n 'Unsupported chain',\n { originalError: new Error('Unsupported chain') }\n );\n } catch (error) {\n console.error('Error signing transaction with wallet:', error);\n throw new WalletError(\n WalletErrorCode.USER_REJECTED,\n 'Failed to sign transaction with wallet',\n { originalError: error }\n );\n }\n };\n\n setSignTransactionWithWalletKey(() => signTransactionWithWallet);\n return signTransactionWithWallet;\n };\n\n const createWalletMessageSignFunction = () => {\n if (!dynamicWallet) {\n return null;\n }\n\n const signMessageWithWallet = async (\n message: Uint8Array\n ): Promise<Uint8Array> => {\n try {\n if (dynamicWallet.chain === 'SOL') {\n const signer = await dynamicWallet.getSigner();\n if (!signer?.signMessage) {\n throw new Error('signMessage is not supported by this wallet');\n }\n const result = await signer.signMessage(message);\n if (!result?.signature) {\n throw new Error('Wallet did not return a signature');\n }\n logger.debug('Solana message signature received');\n return result.signature;\n }\n\n throw new WalletError(\n WalletErrorCode.USER_REJECTED,\n 'Unsupported chain',\n { originalError: new Error('Unsupported chain') }\n );\n } catch (error) {\n console.error('Error signing message with wallet:', error);\n throw new WalletError(\n WalletErrorCode.USER_REJECTED,\n 'Failed to sign message with wallet',\n { originalError: error }\n );\n }\n };\n\n setSignMessageWithWalletKey(() => signMessageWithWallet);\n return signMessageWithWallet;\n };\n\n const createSession = async () => {\n try {\n let sessionKeyPair = null;\n if (address) {\n try {\n const storedKeys = getSessionKeysFromLocalStorage(address);\n if (storedKeys) {\n sessionKeyPair = {\n privateKey: storedKeys.ed25519PrivateKey,\n publicKey: storedKeys.ed25519PublicKey,\n };\n }\n } catch (error) {\n console.error(\n 'Error reconstructing key pair from stored keys:',\n error\n );\n sessionKeyPair = null;\n }\n }\n\n if (!sessionKeyPair) {\n sessionKeyPair = await generateSessionKeyPair();\n }\n\n const signFn = async (message: any): Promise<any> => {\n try {\n return await signEd25519Message(message, sessionKeyPair.privateKey);\n } catch (error) {\n console.error('Error signing with session key:', error);\n throw error;\n }\n };\n\n\n storeSessionKeysInLocalStorage({\n privKey: sessionKeyPair.privateKey,\n publicKey: sessionKeyPair.publicKey!,\n walletPublicKey: address,\n chainName: dynamicWallet?.chain || 'ETH',\n });\n\n setSessionPubKey(sessionKeyPair.publicKey!);\n setSignMessageWithSessionKey(() => signFn);\n return signFn;\n } catch (error) {\n console.error('Error creating session:', error);\n return null;\n }\n };\n\n // Initialize signing functions if needed\n const initSigningFunctions = async () => {\n if (!signTransactionWithWalletKey && dynamicWallet) {\n createTransactionSignFunction();\n }\n\n if (!signMessageWithWalletKey && dynamicWallet) {\n createWalletMessageSignFunction();\n }\n\n if (!signMessageWithSessionKey) {\n await createSession();\n }\n };\n\n initSigningFunctions();\n }, [\n dynamicWallet,\n address,\n sessionMode,\n signMessageWithSessionKey,\n signMessageWithWalletKey,\n signTransactionWithWalletKey,\n ]);\n\n // Second useEffect: Initialize NordUser\n useEffect(() => {\n if (sessionMode !== N1SessionMode.Nord) {\n return;\n }\n\n const createNordUser = async () => {\n try {\n if (!nord || !address || !sessionPubKey || !signMessageWithSessionKey || !signMessageWithWalletKey || !signTransactionWithWalletKey) {\n return null;\n }\n\n let sessionId = undefined;\n if (address) {\n try {\n const sessionKeyData = getSessionKeysFromLocalStorage(address);\n if (sessionKeyData) {\n const sessionIdKey = `n1_sessionId_${address}`;\n const storedSessionId = localStorage.getItem(sessionIdKey);\n if (storedSessionId !== null) {\n sessionId = BigInt(storedSessionId);\n logger.debug('Found existing sessionId in localStorage', {\n sessionId: storedSessionId,\n });\n }\n }\n } catch (error) {\n console.error('Error retrieving sessionId from localStorage:', error);\n }\n }\n\n const NordUser = await dynamicImportNordUser();\n const user = await NordUser.new({\n nord,\n walletPubkey: new PublicKey(address),\n sessionPubkey: sessionPubKey,\n sessionId,\n signSessionFn: signMessageWithSessionKey,\n signTransactionFn: signTransactionWithWalletKey,\n signMessageFn: signMessageWithWalletKey,\n });\n\n try {\n await user.updateAccountId();\n } catch (_) { }\n\n setNordUser(user);\n return user;\n } catch (error) {\n console.error('Error creating NordUser:', error);\n setNordUser(null);\n return null;\n }\n };\n\n // Only create NordUser when all dependencies are available and nordUser is null\n if (\n signMessageWithSessionKey &&\n signMessageWithWalletKey &&\n signTransactionWithWalletKey &&\n sessionPubKey &&\n nordUser === null\n ) {\n logger.debug('Dependencies available, initializing NordUser');\n createNordUser();\n }\n }, [\n sessionMode,\n nord,\n address,\n signMessageWithSessionKey,\n signMessageWithWalletKey,\n signTransactionWithWalletKey,\n sessionPubKey,\n nordUser,\n setNordUser\n ]);\n} \n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare function CoinbaseWalletIcon(): JSX.Element;
|
|
1
|
+
export declare function CoinbaseWalletIcon(): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare function ConnectionDotsSVG(): JSX.Element;
|
|
1
|
+
export declare function ConnectionDotsSVG(): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare function MetamaskIcon(): JSX.Element;
|
|
1
|
+
export declare function MetamaskIcon(): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare function PhantomIcon(): JSX.Element;
|
|
1
|
+
export declare function PhantomIcon(): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare function UserIcon(): JSX.Element;
|
|
1
|
+
export declare function UserIcon(): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare function WalletConnectIcon(): JSX.Element;
|
|
1
|
+
export declare function WalletConnectIcon(): import("react/jsx-runtime").JSX.Element;
|
package/dist/Provider/types.d.ts
CHANGED
|
@@ -1,16 +1,22 @@
|
|
|
1
1
|
import type { WalletError } from '../errors/types';
|
|
2
|
-
import { Nord } from '@n1xyz/nord-ts';
|
|
2
|
+
import type { Nord } from '@n1xyz/nord-ts';
|
|
3
3
|
export declare enum N1ModalViewMode {
|
|
4
4
|
Connect = 0,
|
|
5
5
|
CreateSession = 1,
|
|
6
6
|
Signing = 2,
|
|
7
7
|
CreatingUser = 3,
|
|
8
8
|
Success = 4,
|
|
9
|
-
|
|
9
|
+
ChainSelection = 6,
|
|
10
|
+
DepositSuccess = 7,
|
|
11
|
+
Error = 8,
|
|
12
|
+
AmountInput = 3,
|
|
13
|
+
DepositProgress = 2,
|
|
14
|
+
AuthLoading = 1,
|
|
15
|
+
FinalSuccess = 4,
|
|
16
|
+
Automatic = 99
|
|
10
17
|
}
|
|
11
18
|
export declare enum N1SessionMode {
|
|
12
|
-
Nord = 0
|
|
13
|
-
NTS = 1
|
|
19
|
+
Nord = 0
|
|
14
20
|
}
|
|
15
21
|
export interface CssColorOverride {
|
|
16
22
|
color: string;
|
|
@@ -20,9 +26,7 @@ export interface N1WalletProviderProps {
|
|
|
20
26
|
children: React.ReactNode;
|
|
21
27
|
providedSessionMode: N1SessionMode;
|
|
22
28
|
appId: string;
|
|
23
|
-
darkMode?: boolean;
|
|
24
29
|
onError?: (error: WalletError) => void;
|
|
25
|
-
faucetUrl?: string;
|
|
26
30
|
nord?: Nord;
|
|
27
31
|
/**
|
|
28
32
|
* Optional array of color overrides: [{color: '#original', replacement: '#new'}]
|
|
@@ -95,12 +99,14 @@ export interface N1WalletState {
|
|
|
95
99
|
balances: Balance[];
|
|
96
100
|
chain: string;
|
|
97
101
|
isConnected: boolean;
|
|
98
|
-
|
|
99
|
-
sessionMode: N1SessionMode | null;
|
|
102
|
+
sessionMode: N1SessionMode;
|
|
100
103
|
sessionPubKey: Uint8Array | null;
|
|
101
104
|
setShowLogin: (show: boolean) => void;
|
|
105
|
+
startDepositFlow: () => boolean;
|
|
106
|
+
setViewMode: (mode: N1ModalViewMode) => void;
|
|
102
107
|
showLogin: boolean;
|
|
103
108
|
signMessageWithSessionKey: ((message: any) => Promise<any>) | null;
|
|
109
|
+
signMessageWithWalletKey: ((message: any) => Promise<any>) | null;
|
|
104
110
|
signTransactionWithWalletKey: ((transaction: any) => Promise<any>) | null;
|
|
105
111
|
userChain: string | null;
|
|
106
112
|
username: string;
|
|
@@ -108,7 +114,6 @@ export interface N1WalletState {
|
|
|
108
114
|
walletPubKey: Uint8Array | null;
|
|
109
115
|
throwTestError: () => Promise<void>;
|
|
110
116
|
nord?: Nord;
|
|
111
|
-
faucetUrl?: string;
|
|
112
117
|
nordUser?: any;
|
|
113
118
|
}
|
|
114
119
|
export interface N1InternalWalletState {
|
|
@@ -125,11 +130,10 @@ export interface N1InternalWalletState {
|
|
|
125
130
|
setDynamicWallet: (wallet: any) => void;
|
|
126
131
|
setIsConnected: (connected: boolean) => void;
|
|
127
132
|
setLoading: (loading: boolean) => void;
|
|
128
|
-
|
|
129
|
-
setSessionMode: (mode: N1SessionMode | null) => void;
|
|
133
|
+
blockModalReopen: (duration?: number) => void;
|
|
130
134
|
setSessionPubKey: (key: Uint8Array) => void;
|
|
131
|
-
setShowSidebar: (show: boolean) => void;
|
|
132
135
|
setSignMessageWithSessionKey: React.Dispatch<React.SetStateAction<((message: any) => Promise<any>) | null>>;
|
|
136
|
+
setSignMessageWithWalletKey: React.Dispatch<React.SetStateAction<((message: any) => Promise<any>) | null>>;
|
|
133
137
|
setSignTransactionWithWalletKey: React.Dispatch<React.SetStateAction<((transaction: any) => Promise<any>) | null>>;
|
|
134
138
|
setStartClosingLogin: (closing: boolean) => void;
|
|
135
139
|
setUsername: (username: string) => void;
|
|
@@ -137,12 +141,10 @@ export interface N1InternalWalletState {
|
|
|
137
141
|
setViewMode: (mode: N1ModalViewMode) => void;
|
|
138
142
|
setWalletPubKey: (key: Uint8Array) => void;
|
|
139
143
|
setNordUser: (user: any) => void;
|
|
140
|
-
showSidebar: boolean;
|
|
141
144
|
startClosingLogin: boolean;
|
|
142
145
|
showDynamicWidget: any;
|
|
143
146
|
setShowDynamicWidget: (show: any) => void;
|
|
144
|
-
|
|
145
|
-
sessionMode: N1SessionMode | null;
|
|
146
|
-
faucetUrl?: string;
|
|
147
|
+
sessionMode: N1SessionMode;
|
|
147
148
|
skipFinalScreen?: boolean;
|
|
149
|
+
depositFlowRequestId: number;
|
|
148
150
|
}
|
package/dist/Provider/types.js
CHANGED
|
@@ -5,11 +5,17 @@ export var N1ModalViewMode;
|
|
|
5
5
|
N1ModalViewMode[N1ModalViewMode["Signing"] = 2] = "Signing";
|
|
6
6
|
N1ModalViewMode[N1ModalViewMode["CreatingUser"] = 3] = "CreatingUser";
|
|
7
7
|
N1ModalViewMode[N1ModalViewMode["Success"] = 4] = "Success";
|
|
8
|
-
N1ModalViewMode[N1ModalViewMode["
|
|
8
|
+
N1ModalViewMode[N1ModalViewMode["ChainSelection"] = 6] = "ChainSelection";
|
|
9
|
+
N1ModalViewMode[N1ModalViewMode["DepositSuccess"] = 7] = "DepositSuccess";
|
|
10
|
+
N1ModalViewMode[N1ModalViewMode["Error"] = 8] = "Error";
|
|
11
|
+
N1ModalViewMode[N1ModalViewMode["AmountInput"] = 3] = "AmountInput";
|
|
12
|
+
N1ModalViewMode[N1ModalViewMode["DepositProgress"] = 2] = "DepositProgress";
|
|
13
|
+
N1ModalViewMode[N1ModalViewMode["AuthLoading"] = 1] = "AuthLoading";
|
|
14
|
+
N1ModalViewMode[N1ModalViewMode["FinalSuccess"] = 4] = "FinalSuccess";
|
|
15
|
+
N1ModalViewMode[N1ModalViewMode["Automatic"] = 99] = "Automatic";
|
|
9
16
|
})(N1ModalViewMode || (N1ModalViewMode = {}));
|
|
10
17
|
export var N1SessionMode;
|
|
11
18
|
(function (N1SessionMode) {
|
|
12
19
|
N1SessionMode[N1SessionMode["Nord"] = 0] = "Nord";
|
|
13
|
-
N1SessionMode[N1SessionMode["NTS"] = 1] = "NTS";
|
|
14
20
|
})(N1SessionMode || (N1SessionMode = {}));
|
|
15
21
|
//# sourceMappingURL=types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/Provider/types.ts"],"names":[],"mappings":"AAGA,MAAM,CAAN,IAAY,
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/Provider/types.ts"],"names":[],"mappings":"AAGA,MAAM,CAAN,IAAY,eAcX;AAdD,WAAY,eAAe;IACzB,2DAAW,CAAA;IACX,uEAAiB,CAAA;IACjB,2DAAW,CAAA;IACX,qEAAgB,CAAA;IAChB,2DAAW,CAAA;IACX,yEAAkB,CAAA;IAClB,yEAAkB,CAAA;IAClB,uDAAS,CAAA;IACT,mEAA0B,CAAA;IAC1B,2EAAyB,CAAA;IACzB,mEAA2B,CAAA;IAC3B,qEAAsB,CAAA;IACtB,gEAAc,CAAA;AAChB,CAAC,EAdW,eAAe,KAAf,eAAe,QAc1B;AAED,MAAM,CAAN,IAAY,aAEX;AAFD,WAAY,aAAa;IACvB,iDAAI,CAAA;AACN,CAAC,EAFW,aAAa,KAAb,aAAa,QAExB","sourcesContent":["import type { WalletError } from '../errors/types';\nimport type { Nord } from '@n1xyz/nord-ts';\n\nexport enum N1ModalViewMode {\n Connect = 0,\n CreateSession = 1,\n Signing = 2,\n CreatingUser = 3,\n Success = 4,\n ChainSelection = 6,\n DepositSuccess = 7,\n Error = 8,\n AmountInput = CreatingUser,\n DepositProgress = Signing,\n AuthLoading = CreateSession,\n FinalSuccess = Success,\n Automatic = 99,\n}\n\nexport enum N1SessionMode {\n Nord,\n}\n\nexport interface CssColorOverride {\n color: string; // Color to find in CSS (e.g. '#3b82f6')\n replacement: string; // Replacement color (e.g. '#afafaf')\n}\n\nexport interface N1WalletProviderProps {\n children: React.ReactNode;\n providedSessionMode: N1SessionMode;\n appId: string;\n onError?: (error: WalletError) => void;\n nord?: Nord;\n /**\n * Optional array of color overrides: [{color: '#original', replacement: '#new'}]\n */\n colorOverrides?: CssColorOverride[];\n /**\n * If true, skip the final success screen and immediately call onDone\n */\n skipFinalScreen?: boolean;\n}\n\nexport interface Balance {\n mint: string;\n balance: bigint;\n appId: string;\n appType: string;\n}\n\nexport interface N1NordFunctions {\n // Market information functions\n getMarkets: () => Promise<any[]>;\n getOrderbook: (symbol: string) => Promise<any>;\n getTrades: (params: any) => Promise<any>;\n getMarketsStats: () => Promise<any>;\n\n // Trading functions\n placeOrder: (params: {\n sessionId: bigint | string;\n marketId: number;\n side: 'BUY' | 'SELL';\n fillMode: 'GTC' | 'IOC' | 'FOK' | 'POST_ONLY';\n isReduceOnly: boolean;\n size?: number | string;\n price?: number | string;\n quoteSize?: number | string;\n clientOrderId?: bigint | string;\n }) => Promise<bigint | undefined>;\n\n cancelOrder: (params: {\n sessionId: bigint | string;\n orderId: bigint | string;\n }) => Promise<bigint>;\n\n // Account management\n createSession: (params: {\n userPubkey: Uint8Array;\n sessionPubkey: Uint8Array;\n expiryTimestamp?: bigint;\n }) => Promise<bigint>;\n\n revokeSession: (params: { sessionId: bigint | string }) => Promise<void>;\n\n withdraw: (params: {\n sessionId: bigint | string;\n tokenId: number;\n amount: number;\n }) => Promise<void>;\n\n transfer: (params: {\n sessionId: bigint | string;\n fromAccountId: number;\n toAccountId?: number;\n tokenId: number;\n tokenDecimals: number;\n amount: number | string;\n }) => Promise<number | undefined>;\n\n // Blockchain information\n getTimestamp: () => Promise<bigint>;\n getActionNonce: () => Promise<number>;\n\n // Block and action queries\n queryBlock: (query: any) => Promise<any>;\n queryLastNBlocks: () => Promise<any>;\n queryRecentBlocks: (last_n: number) => Promise<any>;\n queryAction: (query: any) => Promise<any>;\n queryRecentActions: (last_n: number) => Promise<any>;\n getActions: (fromActionId: number, toActionId: number) => Promise<any>;\n}\n\nexport interface N1WalletState {\n address: string;\n appId: string | null;\n balances: Balance[];\n chain: string;\n isConnected: boolean;\n sessionMode: N1SessionMode;\n sessionPubKey: Uint8Array | null;\n setShowLogin: (show: boolean) => void;\n startDepositFlow: () => boolean;\n setViewMode: (mode: N1ModalViewMode) => void;\n showLogin: boolean;\n signMessageWithSessionKey: ((message: any) => Promise<any>) | null;\n signMessageWithWalletKey: ((message: any) => Promise<any>) | null;\n signTransactionWithWalletKey: ((transaction: any) => Promise<any>) | null;\n userChain: string | null;\n username: string;\n viewMode: N1ModalViewMode;\n walletPubKey: Uint8Array | null;\n throwTestError: () => Promise<void>;\n nord?: Nord;\n nordUser?: any;\n}\n\nexport interface N1InternalWalletState {\n dynamicHandleLogOut: any;\n dynamicWallet: any;\n loading: boolean;\n dynamicSdkHasLoaded: any;\n handleError: (error: WalletError) => void;\n setDynamicSdkHasLoaded: (loaded: any) => void;\n setAddress: (address: string) => void;\n setBalances: (balances: Balance[]) => void;\n setChain: (chain: string) => void;\n setDynamicHandleLogOut: (handler: any) => void;\n setDynamicWallet: (wallet: any) => void;\n setIsConnected: (connected: boolean) => void;\n setLoading: (loading: boolean) => void;\n blockModalReopen: (duration?: number) => void;\n setSessionPubKey: (key: Uint8Array) => void;\n setSignMessageWithSessionKey: React.Dispatch<\n React.SetStateAction<((message: any) => Promise<any>) | null>\n >;\n setSignMessageWithWalletKey: React.Dispatch<\n React.SetStateAction<((message: any) => Promise<any>) | null>\n >;\n setSignTransactionWithWalletKey: React.Dispatch<\n React.SetStateAction<((transaction: any) => Promise<any>) | null>\n >;\n setStartClosingLogin: (closing: boolean) => void;\n setUsername: (username: string) => void;\n setUserChain: (chain: string) => void;\n setViewMode: (mode: N1ModalViewMode) => void;\n setWalletPubKey: (key: Uint8Array) => void;\n setNordUser: (user: any) => void;\n startClosingLogin: boolean;\n showDynamicWidget: any;\n setShowDynamicWidget: (show: any) => void;\n sessionMode: N1SessionMode;\n skipFinalScreen?: boolean;\n depositFlowRequestId: number;\n}\n"]}
|
|
@@ -2,14 +2,15 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import BlockiesSvg from 'blockies-react-svg';
|
|
3
3
|
import { useEffect, useState } from 'react';
|
|
4
4
|
import { useN1WalletContext, useN1WalletInternalContext, } from '../Provider/hooks';
|
|
5
|
-
import { logger } from '../utils/logger';
|
|
6
5
|
import { ShadowRootWrapper } from '../Provider/ShadowRootWrapper';
|
|
7
6
|
import mainCss from '../embedded-main-css';
|
|
8
7
|
export function N1ConnectButton(_props) {
|
|
9
8
|
var _a = useN1WalletContext(), isConnected = _a.isConnected, setShowLogin = _a.setShowLogin, address = _a.address;
|
|
10
9
|
var _b = useState(false), toOpen = _b[0], setToOpen = _b[1];
|
|
11
|
-
var _c = useN1WalletInternalContext(),
|
|
12
|
-
var addressText = isConnected
|
|
10
|
+
var _c = useN1WalletInternalContext(), loading = _c.loading, startClosingLogin = _c.startClosingLogin;
|
|
11
|
+
var addressText = isConnected
|
|
12
|
+
? "".concat(address.substring(0, 6), "...").concat(address.slice(-4))
|
|
13
|
+
: '';
|
|
13
14
|
var showLoginFn = function () {
|
|
14
15
|
setShowLogin(true);
|
|
15
16
|
};
|
|
@@ -19,12 +20,30 @@ export function N1ConnectButton(_props) {
|
|
|
19
20
|
setToOpen(false);
|
|
20
21
|
}
|
|
21
22
|
}, [loading]);
|
|
22
|
-
var buttonClass =
|
|
23
|
-
var
|
|
24
|
-
var
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
23
|
+
var buttonClass = 'inline-flex w-full items-center justify-center gap-2 rounded-full border border-n1-ww-border bg-black px-4 py-2 text-xs font-semibold uppercase tracking-wide text-white transition-colors duration-200 hover:bg-white hover:text-black focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-black disabled:pointer-events-none disabled:opacity-60 min-w-[7rem] sm:w-auto';
|
|
24
|
+
var injectedCss = '';
|
|
25
|
+
var renderLabel = function () {
|
|
26
|
+
if (loading && !isConnected)
|
|
27
|
+
return 'Connecting...';
|
|
28
|
+
if (!isConnected)
|
|
29
|
+
return _props.label || 'Connect';
|
|
30
|
+
return addressText;
|
|
31
|
+
};
|
|
32
|
+
var handleClick = function () {
|
|
33
|
+
if (startClosingLogin) {
|
|
34
|
+
console.debug('[N1ConnectButton] click ignored; modal closing');
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
if (loading && !isConnected) {
|
|
38
|
+
setToOpen(true);
|
|
39
|
+
console.debug('[N1ConnectButton] deferring open until loading completes');
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
if (isConnected)
|
|
43
|
+
return;
|
|
44
|
+
console.debug('[N1ConnectButton] opening modal via connect button');
|
|
45
|
+
showLoginFn();
|
|
46
|
+
};
|
|
47
|
+
return (_jsx(ShadowRootWrapper, { injectedCss: mainCss + injectedCss, children: _jsx("div", { className: "n1-wallet-widget dark", children: _jsxs("button", { type: "button", className: buttonClass, onClick: handleClick, "aria-busy": loading && !isConnected, children: [isConnected && (_jsx("span", { className: "flex h-5 w-5 items-center justify-center rounded-full bg-white", children: _jsx(BlockiesSvg, { address: address, className: "h-4 w-4 rounded-full" }) })), _jsx("span", { children: renderLabel() })] }) }) }));
|
|
29
48
|
}
|
|
30
49
|
//# sourceMappingURL=N1ConnectButton.js.map
|