@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
package/dist/Logic/utils.js
CHANGED
|
@@ -1,42 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
11
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
12
|
-
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
13
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
14
|
-
function step(op) {
|
|
15
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
16
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
17
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
18
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
19
|
-
switch (op[0]) {
|
|
20
|
-
case 0: case 1: t = op; break;
|
|
21
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
22
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
23
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
24
|
-
default:
|
|
25
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
26
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
27
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
28
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
29
|
-
if (t[2]) _.ops.pop();
|
|
30
|
-
_.trys.pop(); continue;
|
|
31
|
-
}
|
|
32
|
-
op = body.call(thisArg, _);
|
|
33
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
34
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
35
|
-
}
|
|
36
|
-
};
|
|
37
|
-
import { generateSessionKeyPair, generateRandomUint8Array, } from '@n1xyz/nts-sdk';
|
|
38
|
-
import { logger } from '../utils/logger';
|
|
39
|
-
export { generateSessionKeyPair, generateRandomUint8Array };
|
|
1
|
+
import { generateEd25519KeyPair, generateRandomUint8Array as createRandomUint8Array, } from '../utils/ed25519';
|
|
2
|
+
export var generateSessionKeyPair = generateEd25519KeyPair;
|
|
3
|
+
export var generateRandomUint8Array = createRandomUint8Array;
|
|
40
4
|
export function arrayBufferToBase64(buffer) {
|
|
41
5
|
var binary = '';
|
|
42
6
|
var bytes = new Uint8Array(buffer);
|
|
@@ -99,151 +63,4 @@ export function removeKeysFromLocalStorage(walletPublicKey) {
|
|
|
99
63
|
var storageKey = "n1_sessionKey_".concat(walletPublicKey);
|
|
100
64
|
localStorage.removeItem(storageKey);
|
|
101
65
|
}
|
|
102
|
-
export function hexToUint8Array(hex) {
|
|
103
|
-
if (hex.length % 2 !== 0) {
|
|
104
|
-
throw new Error('Invalid hex string');
|
|
105
|
-
}
|
|
106
|
-
var array = new Uint8Array(hex.length / 2);
|
|
107
|
-
for (var i = 0; i < hex.length; i += 2) {
|
|
108
|
-
array[i / 2] = parseInt(hex.substr(i, 2), 16);
|
|
109
|
-
}
|
|
110
|
-
return array;
|
|
111
|
-
}
|
|
112
|
-
function getMsgBytes(timestamp) {
|
|
113
|
-
var hex = 'LoginSigning : ' + timestamp;
|
|
114
|
-
var array = new Uint8Array(hex.length / 2);
|
|
115
|
-
for (var i = 0; i < hex.length; i += 2) {
|
|
116
|
-
array[i / 2] = parseInt(hex.substr(i, 2), 16);
|
|
117
|
-
}
|
|
118
|
-
return array;
|
|
119
|
-
}
|
|
120
|
-
export function createWebSession(signMessageWithSessionKey, sessionPubKey, walletPubKey) {
|
|
121
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
122
|
-
var timestamp, msg, signature, response;
|
|
123
|
-
return __generator(this, function (_a) {
|
|
124
|
-
switch (_a.label) {
|
|
125
|
-
case 0:
|
|
126
|
-
logger.debug('Creating web session...');
|
|
127
|
-
timestamp = new Date().getTime();
|
|
128
|
-
msg = getMsgBytes(timestamp);
|
|
129
|
-
return [4 /*yield*/, signMessageWithSessionKey(msg)];
|
|
130
|
-
case 1:
|
|
131
|
-
signature = _a.sent();
|
|
132
|
-
if (process.env.SKIP_ARGUS) {
|
|
133
|
-
return [2 /*return*/];
|
|
134
|
-
}
|
|
135
|
-
return [4 /*yield*/, fetch("".concat(process.env.ARGUS_URL, "/api/auth/login"), {
|
|
136
|
-
method: 'POST',
|
|
137
|
-
headers: {
|
|
138
|
-
'Content-Type': 'application/json',
|
|
139
|
-
},
|
|
140
|
-
body: JSON.stringify({
|
|
141
|
-
sessionKey: Array.from(sessionPubKey),
|
|
142
|
-
timestamp: timestamp,
|
|
143
|
-
msg: Array.from(msg),
|
|
144
|
-
signature: Array.from(signature),
|
|
145
|
-
publicKey: Array.from(walletPubKey),
|
|
146
|
-
}),
|
|
147
|
-
credentials: 'include', // Include cookies in requests
|
|
148
|
-
})];
|
|
149
|
-
case 2:
|
|
150
|
-
response = _a.sent();
|
|
151
|
-
if (response.status != 200) {
|
|
152
|
-
throw new Error('failed to create a session!');
|
|
153
|
-
}
|
|
154
|
-
return [2 /*return*/];
|
|
155
|
-
}
|
|
156
|
-
});
|
|
157
|
-
});
|
|
158
|
-
}
|
|
159
|
-
export function createUser(username) {
|
|
160
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
161
|
-
var response;
|
|
162
|
-
return __generator(this, function (_a) {
|
|
163
|
-
switch (_a.label) {
|
|
164
|
-
case 0: return [4 /*yield*/, fetch("".concat(process.env.ARGUS_URL, "/api/db/createUser?name=").concat(username), {
|
|
165
|
-
method: 'GET',
|
|
166
|
-
headers: {
|
|
167
|
-
'Content-Type': 'application/json',
|
|
168
|
-
},
|
|
169
|
-
credentials: 'include',
|
|
170
|
-
})];
|
|
171
|
-
case 1:
|
|
172
|
-
response = _a.sent();
|
|
173
|
-
if (response.status != 200) {
|
|
174
|
-
throw new Error('failed to create a user!');
|
|
175
|
-
}
|
|
176
|
-
return [2 /*return*/];
|
|
177
|
-
}
|
|
178
|
-
});
|
|
179
|
-
});
|
|
180
|
-
}
|
|
181
|
-
export function getUser() {
|
|
182
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
183
|
-
var response, error_1;
|
|
184
|
-
return __generator(this, function (_a) {
|
|
185
|
-
switch (_a.label) {
|
|
186
|
-
case 0:
|
|
187
|
-
if (process.env.SKIP_ARGUS) {
|
|
188
|
-
return [2 /*return*/, { name: 'test' }];
|
|
189
|
-
}
|
|
190
|
-
_a.label = 1;
|
|
191
|
-
case 1:
|
|
192
|
-
_a.trys.push([1, 6, , 7]);
|
|
193
|
-
return [4 /*yield*/, fetch("".concat(process.env.ARGUS_URL, "/api/db/getUser"), {
|
|
194
|
-
method: 'GET',
|
|
195
|
-
headers: {
|
|
196
|
-
'Content-Type': 'application/json',
|
|
197
|
-
},
|
|
198
|
-
credentials: 'include', // Include cookies in requests
|
|
199
|
-
})];
|
|
200
|
-
case 2:
|
|
201
|
-
response = _a.sent();
|
|
202
|
-
if (!(response.status === 200)) return [3 /*break*/, 4];
|
|
203
|
-
return [4 /*yield*/, response.json()];
|
|
204
|
-
case 3: return [2 /*return*/, _a.sent()];
|
|
205
|
-
case 4:
|
|
206
|
-
if (response.status === 404) {
|
|
207
|
-
return [2 /*return*/, null];
|
|
208
|
-
}
|
|
209
|
-
_a.label = 5;
|
|
210
|
-
case 5: return [3 /*break*/, 7];
|
|
211
|
-
case 6:
|
|
212
|
-
error_1 = _a.sent();
|
|
213
|
-
throw new Error('failed to get user!');
|
|
214
|
-
case 7: return [2 /*return*/];
|
|
215
|
-
}
|
|
216
|
-
});
|
|
217
|
-
});
|
|
218
|
-
}
|
|
219
|
-
export function getUserBalances(address) {
|
|
220
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
221
|
-
var response, data;
|
|
222
|
-
return __generator(this, function (_a) {
|
|
223
|
-
switch (_a.label) {
|
|
224
|
-
case 0: return [4 /*yield*/, fetch("https://n1ts.n1.xyz/app/data?tag=user_balance_".concat(address.toLowerCase()), {
|
|
225
|
-
method: 'GET',
|
|
226
|
-
headers: {
|
|
227
|
-
'Content-Type': 'application/json',
|
|
228
|
-
},
|
|
229
|
-
})];
|
|
230
|
-
case 1:
|
|
231
|
-
response = _a.sent();
|
|
232
|
-
if (!(response.status === 200)) return [3 /*break*/, 3];
|
|
233
|
-
return [4 /*yield*/, response.json()];
|
|
234
|
-
case 2:
|
|
235
|
-
data = _a.sent();
|
|
236
|
-
return [2 /*return*/, data.data.map(function (item) {
|
|
237
|
-
return {
|
|
238
|
-
mint: item.field_id.split('_')[2],
|
|
239
|
-
balance: item.value,
|
|
240
|
-
appId: item.app_id,
|
|
241
|
-
symbol: item.symbol,
|
|
242
|
-
};
|
|
243
|
-
})];
|
|
244
|
-
case 3: return [2 /*return*/, null];
|
|
245
|
-
}
|
|
246
|
-
});
|
|
247
|
-
});
|
|
248
|
-
}
|
|
249
66
|
//# sourceMappingURL=utils.js.map
|
package/dist/Logic/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/Logic/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n generateSessionKeyPair,\n generateRandomUint8Array,\n} from '@n1xyz/nts-sdk';\nimport { logger } from '../utils/logger';\n\nexport { generateSessionKeyPair, generateRandomUint8Array };\n\nexport function arrayBufferToBase64(buffer: Uint8Array) {\n let binary = '';\n const bytes = new Uint8Array(buffer);\n for (let i = 0; i < bytes.length; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n return btoa(binary);\n}\n\n// Convert Base64 string back to Uint8Array\nexport function base64ToUint8Array(base64String: string) {\n const binaryString = atob(base64String);\n const length = binaryString.length;\n const bytes = new Uint8Array(length);\n for (let i = 0; i < length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n return bytes;\n}\n\n// Function to store keys with a custom ID format in local storage, including private key\nexport function storeSessionKeysInLocalStorage({\n privKey,\n publicKey,\n walletPublicKey,\n chainName,\n}: {\n privKey: Uint8Array;\n publicKey: Uint8Array;\n walletPublicKey: string;\n chainName: string;\n}) {\n const storageKey = `n1_sessionKey_${walletPublicKey}`;\n\n const data = {\n ed25519PrivateKey: arrayBufferToBase64(privKey),\n ed25519PublicKey: arrayBufferToBase64(publicKey),\n walletPublicKey,\n chainName,\n createdAt: new Date().toISOString(),\n };\n\n localStorage.setItem(storageKey, JSON.stringify(data));\n}\n\n// Retrieve data from local storage by wallet key and convert the private and public key back to Uint8Array\nexport function getSessionKeysFromLocalStorage(walletPublicKey: string): {\n ed25519PrivateKey: Uint8Array;\n ed25519PublicKey: Uint8Array | null;\n walletPublicKey: string;\n chainName: string;\n createdAt: string;\n} | null {\n const storageKey = `n1_sessionKey_${walletPublicKey}`;\n\n const data = localStorage.getItem(storageKey);\n if (data) {\n const parsedData = JSON.parse(data);\n if (parsedData.ed25519PrivateKey) {\n parsedData.ed25519PrivateKey = base64ToUint8Array(\n parsedData.ed25519PrivateKey\n );\n } else {\n throw new Error('Missing ed25519PrivateKey in session storage');\n }\n if (parsedData.ed25519PublicKey) {\n parsedData.ed25519PublicKey = base64ToUint8Array(\n parsedData.ed25519PublicKey\n );\n } else {\n throw new Error('Missing ed25519PublicKey in session storage');\n }\n // Validate keys: check that public key is present and is Uint8Array of length 32\n if (!parsedData.ed25519PublicKey || !(parsedData.ed25519PublicKey instanceof Uint8Array) || parsedData.ed25519PublicKey.length !== 32) {\n throw new Error('Invalid public key in session storage');\n }\n return parsedData;\n }\n return null;\n}\n\n// Function to remove data from local storage by wallet key\nexport function removeKeysFromLocalStorage(walletPublicKey: string) {\n const storageKey = `n1_sessionKey_${walletPublicKey}`;\n\n localStorage.removeItem(storageKey);\n}\n\nexport function hexToUint8Array(hex: string) {\n if (hex.length % 2 !== 0) {\n throw new Error('Invalid hex string');\n }\n const array = new Uint8Array(hex.length / 2);\n for (let i = 0; i < hex.length; i += 2) {\n array[i / 2] = parseInt(hex.substr(i, 2), 16);\n }\n return array;\n}\n\nfunction getMsgBytes(timestamp: number) {\n const hex = 'LoginSigning : ' + timestamp;\n const array = new Uint8Array(hex.length / 2);\n for (let i = 0; i < hex.length; i += 2) {\n array[i / 2] = parseInt(hex.substr(i, 2), 16);\n }\n return array;\n}\n\nexport async function createWebSession(\n signMessageWithSessionKey: any,\n sessionPubKey: any,\n walletPubKey: any\n) {\n logger.debug('Creating web session...');\n const timestamp = new Date().getTime();\n const msg = getMsgBytes(timestamp);\n const signature = await signMessageWithSessionKey(msg);\n if (process.env.SKIP_ARGUS) {\n return;\n }\n const response = await fetch(`${process.env.ARGUS_URL}/api/auth/login`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n sessionKey: Array.from(sessionPubKey),\n timestamp: timestamp,\n msg: Array.from(msg),\n signature: Array.from(signature),\n publicKey: Array.from(walletPubKey),\n }),\n credentials: 'include', // Include cookies in requests\n });\n if (response.status != 200) {\n throw new Error('failed to create a session!');\n }\n}\n\nexport async function createUser(username: any) {\n const response = await fetch(\n `${process.env.ARGUS_URL}/api/db/createUser?name=${username}`,\n {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n },\n credentials: 'include',\n }\n );\n if (response.status != 200) {\n throw new Error('failed to create a user!');\n }\n}\n\nexport async function getUser() {\n if (process.env.SKIP_ARGUS) {\n return { name: 'test' };\n }\n try {\n const response = await fetch(`${process.env.ARGUS_URL}/api/db/getUser`, {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n },\n credentials: 'include', // Include cookies in requests\n });\n if (response.status === 200) {\n return await response.json();\n } else if (response.status === 404) {\n return null;\n }\n } catch (error) {\n throw new Error('failed to get user!');\n }\n}\n\nexport async function getUserBalances(address: string) {\n const response = await fetch(\n `https://n1ts.n1.xyz/app/data?tag=user_balance_${address.toLowerCase()}`,\n {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n },\n }\n );\n\n if (response.status === 200) {\n const data = await response.json();\n return data.data.map((item: any) => {\n return {\n mint: item.field_id.split('_')[2],\n balance: item.value,\n appId: item.app_id,\n symbol: item.symbol,\n };\n });\n }\n return null;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/Logic/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n generateEd25519KeyPair,\n generateRandomUint8Array as createRandomUint8Array,\n} from '../utils/ed25519';\n\nexport const generateSessionKeyPair = generateEd25519KeyPair;\nexport const generateRandomUint8Array = createRandomUint8Array;\n\nexport function arrayBufferToBase64(buffer: Uint8Array) {\n let binary = '';\n const bytes = new Uint8Array(buffer);\n for (let i = 0; i < bytes.length; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n return btoa(binary);\n}\n\n// Convert Base64 string back to Uint8Array\nexport function base64ToUint8Array(base64String: string) {\n const binaryString = atob(base64String);\n const length = binaryString.length;\n const bytes = new Uint8Array(length);\n for (let i = 0; i < length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n return bytes;\n}\n\n// Function to store keys with a custom ID format in local storage, including private key\nexport function storeSessionKeysInLocalStorage({\n privKey,\n publicKey,\n walletPublicKey,\n chainName,\n}: {\n privKey: Uint8Array;\n publicKey: Uint8Array;\n walletPublicKey: string;\n chainName: string;\n}) {\n const storageKey = `n1_sessionKey_${walletPublicKey}`;\n\n const data = {\n ed25519PrivateKey: arrayBufferToBase64(privKey),\n ed25519PublicKey: arrayBufferToBase64(publicKey),\n walletPublicKey,\n chainName,\n createdAt: new Date().toISOString(),\n };\n\n localStorage.setItem(storageKey, JSON.stringify(data));\n}\n\n// Retrieve data from local storage by wallet key and convert the private and public key back to Uint8Array\nexport function getSessionKeysFromLocalStorage(walletPublicKey: string): {\n ed25519PrivateKey: Uint8Array;\n ed25519PublicKey: Uint8Array | null;\n walletPublicKey: string;\n chainName: string;\n createdAt: string;\n} | null {\n const storageKey = `n1_sessionKey_${walletPublicKey}`;\n\n const data = localStorage.getItem(storageKey);\n if (data) {\n const parsedData = JSON.parse(data);\n if (parsedData.ed25519PrivateKey) {\n parsedData.ed25519PrivateKey = base64ToUint8Array(\n parsedData.ed25519PrivateKey\n );\n } else {\n throw new Error('Missing ed25519PrivateKey in session storage');\n }\n if (parsedData.ed25519PublicKey) {\n parsedData.ed25519PublicKey = base64ToUint8Array(\n parsedData.ed25519PublicKey\n );\n } else {\n throw new Error('Missing ed25519PublicKey in session storage');\n }\n // Validate keys: check that public key is present and is Uint8Array of length 32\n if (!parsedData.ed25519PublicKey || !(parsedData.ed25519PublicKey instanceof Uint8Array) || parsedData.ed25519PublicKey.length !== 32) {\n throw new Error('Invalid public key in session storage');\n }\n return parsedData;\n }\n return null;\n}\n\n// Function to remove data from local storage by wallet key\nexport function removeKeysFromLocalStorage(walletPublicKey: string) {\n const storageKey = `n1_sessionKey_${walletPublicKey}`;\n\n localStorage.removeItem(storageKey);\n}\n"]}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
export var LoadingFallback = function () { return (_jsx("div", { className: "flex items-center justify-center w-full h-full", children: _jsx("div", { className: "n1-ww-animate-spin-slow rounded-full h-8 w-8 border-b-2 border-n1-ww-
|
|
2
|
+
export var LoadingFallback = function () { return (_jsx("div", { className: "flex items-center justify-center w-full h-full", children: _jsx("div", { className: "n1-ww-animate-spin-slow rounded-full h-8 w-8 border-b-2 border-n1-ww-border" }) })); };
|
|
3
3
|
//# sourceMappingURL=LoadingFallback.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LoadingFallback.js","sourceRoot":"","sources":["../../src/Modal/LoadingFallback.tsx"],"names":[],"mappings":";AAEA,MAAM,CAAC,IAAM,eAAe,GAAa,cAAM,OAAA,CAC7C,cAAK,SAAS,EAAC,gDAAgD,YAC7D,cAAK,SAAS,EAAC,
|
|
1
|
+
{"version":3,"file":"LoadingFallback.js","sourceRoot":"","sources":["../../src/Modal/LoadingFallback.tsx"],"names":[],"mappings":";AAEA,MAAM,CAAC,IAAM,eAAe,GAAa,cAAM,OAAA,CAC7C,cAAK,SAAS,EAAC,gDAAgD,YAC7D,cAAK,SAAS,EAAC,6EAA6E,GAAO,GAC/F,CACP,EAJ8C,CAI9C,CAAC","sourcesContent":["import React from 'react';\n\nexport const LoadingFallback: React.FC = () => (\n <div className=\"flex items-center justify-center w-full h-full\">\n <div className=\"n1-ww-animate-spin-slow rounded-full h-8 w-8 border-b-2 border-n1-ww-border\"></div>\n </div>\n);\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import '../main.css';
|
|
2
|
-
export declare function N1WalletModal(): JSX.Element | null;
|
|
2
|
+
export declare function N1WalletModal(): import("react/jsx-runtime").JSX.Element | null;
|
|
@@ -1,60 +1,10 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
11
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
12
|
-
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
13
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
14
|
-
function step(op) {
|
|
15
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
16
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
17
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
18
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
19
|
-
switch (op[0]) {
|
|
20
|
-
case 0: case 1: t = op; break;
|
|
21
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
22
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
23
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
24
|
-
default:
|
|
25
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
26
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
27
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
28
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
29
|
-
if (t[2]) _.ops.pop();
|
|
30
|
-
_.trys.pop(); continue;
|
|
31
|
-
}
|
|
32
|
-
op = body.call(thisArg, _);
|
|
33
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
34
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
35
|
-
}
|
|
36
|
-
};
|
|
37
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
38
2
|
import '../main.css';
|
|
39
|
-
import {
|
|
40
|
-
import { lazy, Suspense, useEffect, useState } from 'react';
|
|
3
|
+
import { lazy, Suspense, useEffect, useState, useCallback } from 'react';
|
|
41
4
|
import { ANIMATION_EASE } from './NordFlow/constants';
|
|
42
|
-
import { WalletError, WalletErrorCode } from '../errors/types';
|
|
43
|
-
import { getSessionKeysFromLocalStorage, getUser, getUserBalances, } from '../Logic/utils';
|
|
44
5
|
import { useN1WalletContext, useN1WalletInternalContext, } from '../Provider/hooks';
|
|
45
|
-
import { N1ModalViewMode, N1SessionMode } from '../Provider/types';
|
|
46
|
-
import { logger } from '../utils/logger';
|
|
47
6
|
import { LoadingFallback } from './LoadingFallback';
|
|
48
|
-
|
|
49
|
-
var N1Sidebar = lazy(function () {
|
|
50
|
-
return import('./Sidebar/N1Sidebar').then(function (mod) { return ({ default: mod.N1Sidebar }); });
|
|
51
|
-
});
|
|
52
|
-
// Lazy load the NTSFlow component
|
|
53
|
-
var NTSFlow = lazy(function () {
|
|
54
|
-
return import('./NTSFlow').then(function (mod) { return ({
|
|
55
|
-
default: mod.NTSFlow,
|
|
56
|
-
}); });
|
|
57
|
-
});
|
|
7
|
+
import { logger } from '../utils/logger';
|
|
58
8
|
// Lazy load the NordFlow component
|
|
59
9
|
var NordFlow = lazy(function () {
|
|
60
10
|
return import('./NordFlow/NordFlow').then(function (mod) { return ({
|
|
@@ -62,183 +12,78 @@ var NordFlow = lazy(function () {
|
|
|
62
12
|
}); });
|
|
63
13
|
});
|
|
64
14
|
export function N1WalletModal() {
|
|
65
|
-
var
|
|
66
|
-
var
|
|
67
|
-
var _b = useN1WalletInternalContext(), setBalances = _b.setBalances, setViewMode = _b.setViewMode, setUsername = _b.setUsername, setSessionPubKey = _b.setSessionPubKey, setSignMessageWithSessionKey = _b.setSignMessageWithSessionKey, setIsConnected = _b.setIsConnected, setWalletPubKey = _b.setWalletPubKey, setStartClosingLogin = _b.setStartClosingLogin, startClosingLogin = _b.startClosingLogin, setLoading = _b.setLoading, setAddress = _b.setAddress, dynamicWallet = _b.dynamicWallet, dynamicSdkHasLoaded = _b.dynamicSdkHasLoaded, darkMode = _b.darkMode, handleError = _b.handleError, showSidebar = _b.showSidebar, sessionMode = _b.sessionMode;
|
|
15
|
+
var _a = useN1WalletContext(), showLogin = _a.showLogin, setShowLogin = _a.setShowLogin;
|
|
16
|
+
var _b = useN1WalletInternalContext(), setStartClosingLogin = _b.setStartClosingLogin, startClosingLogin = _b.startClosingLogin, setLoading = _b.setLoading, dynamicWallet = _b.dynamicWallet, dynamicSdkHasLoaded = _b.dynamicSdkHasLoaded, blockModalReopen = _b.blockModalReopen;
|
|
68
17
|
var _c = useState(false), showLoginAnimation = _c[0], setShowLoginAnimation = _c[1];
|
|
18
|
+
var suppressDocumentClick = useCallback(function () {
|
|
19
|
+
var handler = function (event) {
|
|
20
|
+
event.preventDefault();
|
|
21
|
+
event.stopPropagation();
|
|
22
|
+
};
|
|
23
|
+
document.addEventListener('click', handler, true);
|
|
24
|
+
document.addEventListener('pointerup', handler, true);
|
|
25
|
+
document.addEventListener('touchend', handler, true);
|
|
26
|
+
setTimeout(function () {
|
|
27
|
+
document.removeEventListener('click', handler, true);
|
|
28
|
+
document.removeEventListener('pointerup', handler, true);
|
|
29
|
+
document.removeEventListener('touchend', handler, true);
|
|
30
|
+
}, 350);
|
|
31
|
+
}, []);
|
|
32
|
+
var blockEventPropagation = useCallback(function (event) {
|
|
33
|
+
var _a;
|
|
34
|
+
if ('preventDefault' in event) {
|
|
35
|
+
event.preventDefault();
|
|
36
|
+
}
|
|
37
|
+
if ('stopPropagation' in event) {
|
|
38
|
+
event.stopPropagation();
|
|
39
|
+
}
|
|
40
|
+
var nativeEvent = 'nativeEvent' in event
|
|
41
|
+
? event.nativeEvent
|
|
42
|
+
: event;
|
|
43
|
+
(_a = nativeEvent === null || nativeEvent === void 0 ? void 0 : nativeEvent.stopImmediatePropagation) === null || _a === void 0 ? void 0 : _a.call(nativeEvent);
|
|
44
|
+
}, []);
|
|
69
45
|
// Handle loading state
|
|
70
46
|
useEffect(function () {
|
|
71
47
|
if (dynamicSdkHasLoaded || dynamicWallet) {
|
|
72
48
|
setLoading(false);
|
|
73
49
|
}
|
|
74
|
-
}, [dynamicSdkHasLoaded, dynamicWallet]);
|
|
75
|
-
// Initialize session when wallet is connected
|
|
76
|
-
useEffect(function () {
|
|
77
|
-
// For Nord mode, we don't need to execute the NTS flow
|
|
78
|
-
if (sessionMode === N1SessionMode.Nord) {
|
|
79
|
-
return;
|
|
80
|
-
}
|
|
81
|
-
var initializeSession = function () { return __awaiter(_this, void 0, void 0, function () {
|
|
82
|
-
var walletPubKey, sessionData_1, sessionPubKey_1, signFn_1, userData, balances, error_1, error_2, error_3;
|
|
83
|
-
var _this = this;
|
|
84
|
-
return __generator(this, function (_a) {
|
|
85
|
-
switch (_a.label) {
|
|
86
|
-
case 0:
|
|
87
|
-
// If wallet is not connected, or not in connect mode, skip
|
|
88
|
-
if (!dynamicWallet || viewMode !== N1ModalViewMode.Connect) {
|
|
89
|
-
return [2 /*return*/];
|
|
90
|
-
}
|
|
91
|
-
_a.label = 1;
|
|
92
|
-
case 1:
|
|
93
|
-
_a.trys.push([1, 14, , 15]);
|
|
94
|
-
logger.debug('Initialize Session...');
|
|
95
|
-
// if (dynamicWallet) {
|
|
96
|
-
// // Check whitelist status first
|
|
97
|
-
// const response = await fetch(
|
|
98
|
-
// 'https://argus-1g4n.onrender.com/api/db/verifyWhitelist',
|
|
99
|
-
// {
|
|
100
|
-
// method: 'POST',
|
|
101
|
-
// headers: {
|
|
102
|
-
// 'Content-Type': 'application/json',
|
|
103
|
-
// },
|
|
104
|
-
// body: JSON.stringify({ address: dynamicWallet.address }),
|
|
105
|
-
// }
|
|
106
|
-
// );
|
|
107
|
-
// const whitelistData = await response.json();
|
|
108
|
-
// if (!whitelistData.isWhitelisted) {
|
|
109
|
-
// logger.info('Wallet not whitelisted');
|
|
110
|
-
// setViewMode(N1ModalViewMode.NoWhitelist);
|
|
111
|
-
// return;
|
|
112
|
-
// }
|
|
113
|
-
// }
|
|
114
|
-
logger.group('Session Initialization');
|
|
115
|
-
_a.label = 2;
|
|
116
|
-
case 2:
|
|
117
|
-
_a.trys.push([2, , 12, 13]);
|
|
118
|
-
walletPubKey = dynamicWallet.chain === 'SOL'
|
|
119
|
-
? bs58Decode(dynamicWallet.address)
|
|
120
|
-
: Uint8Array.from(Buffer.from(dynamicWallet.address.slice(2), 'hex'));
|
|
121
|
-
setWalletPubKey(walletPubKey);
|
|
122
|
-
sessionData_1 = getSessionKeysFromLocalStorage(dynamicWallet.address);
|
|
123
|
-
if (!sessionData_1) {
|
|
124
|
-
logger.info('No existing session found, transitioning to CreateSession');
|
|
125
|
-
setViewMode(N1ModalViewMode.CreateSession);
|
|
126
|
-
return [2 /*return*/];
|
|
127
|
-
}
|
|
128
|
-
logger.debug('Session time', sessionData_1.createdAt);
|
|
129
|
-
logger.debug('Session time', new Date(sessionData_1.createdAt).getTime());
|
|
130
|
-
logger.debug('Current time', Date.now());
|
|
131
|
-
if (new Date(sessionData_1.createdAt).getTime() <
|
|
132
|
-
Date.now() - 30 * 24 * 60 * 60 * 1000) {
|
|
133
|
-
// Session expired (older than 30 days)
|
|
134
|
-
logger.info('Session expired, transitioning to CreateSession', new Date(sessionData_1.createdAt));
|
|
135
|
-
setViewMode(N1ModalViewMode.CreateSession);
|
|
136
|
-
return [2 /*return*/];
|
|
137
|
-
}
|
|
138
|
-
// Use existing session
|
|
139
|
-
logger.info('Using existing session');
|
|
140
|
-
return [4 /*yield*/, getEd25519PublicKey(sessionData_1.ed25519PrivateKey)];
|
|
141
|
-
case 3:
|
|
142
|
-
sessionPubKey_1 = _a.sent();
|
|
143
|
-
setSessionPubKey(sessionPubKey_1);
|
|
144
|
-
signFn_1 = function (message) { return __awaiter(_this, void 0, void 0, function () {
|
|
145
|
-
var signature;
|
|
146
|
-
return __generator(this, function (_a) {
|
|
147
|
-
switch (_a.label) {
|
|
148
|
-
case 0:
|
|
149
|
-
logger.debug('signFn', { message: message });
|
|
150
|
-
return [4 /*yield*/, signEd25519(message, sessionData_1.ed25519PrivateKey)];
|
|
151
|
-
case 1:
|
|
152
|
-
signature = _a.sent();
|
|
153
|
-
console.log("baby", {
|
|
154
|
-
signature: signature,
|
|
155
|
-
pubKey: sessionPubKey_1,
|
|
156
|
-
});
|
|
157
|
-
return [2 /*return*/, signature];
|
|
158
|
-
}
|
|
159
|
-
});
|
|
160
|
-
}); };
|
|
161
|
-
setSignMessageWithSessionKey(function () { return signFn_1; });
|
|
162
|
-
_a.label = 4;
|
|
163
|
-
case 4:
|
|
164
|
-
_a.trys.push([4, 10, , 11]);
|
|
165
|
-
logger.debug('Fetching user data');
|
|
166
|
-
return [4 /*yield*/, getUser()];
|
|
167
|
-
case 5:
|
|
168
|
-
userData = _a.sent();
|
|
169
|
-
logger.debug('User data:', userData);
|
|
170
|
-
if (!userData) {
|
|
171
|
-
logger.info('No user data found, transitioning to CreatingUser');
|
|
172
|
-
setViewMode(N1ModalViewMode.CreatingUser);
|
|
173
|
-
return [2 /*return*/];
|
|
174
|
-
}
|
|
175
|
-
// User exists, set data and check balances
|
|
176
|
-
setUsername(userData.name || '');
|
|
177
|
-
setAddress(dynamicWallet.address);
|
|
178
|
-
setWalletPubKey(walletPubKey);
|
|
179
|
-
setIsConnected(true);
|
|
180
|
-
_a.label = 6;
|
|
181
|
-
case 6:
|
|
182
|
-
_a.trys.push([6, 8, , 9]);
|
|
183
|
-
return [4 /*yield*/, getUserBalances(dynamicWallet.address)];
|
|
184
|
-
case 7:
|
|
185
|
-
balances = _a.sent();
|
|
186
|
-
logger.debug('User balances:', balances);
|
|
187
|
-
setBalances(balances);
|
|
188
|
-
return [3 /*break*/, 9];
|
|
189
|
-
case 8:
|
|
190
|
-
error_1 = _a.sent();
|
|
191
|
-
logger.error('Error fetching balances:', error_1);
|
|
192
|
-
return [3 /*break*/, 9];
|
|
193
|
-
case 9:
|
|
194
|
-
// Success!
|
|
195
|
-
setViewMode(N1ModalViewMode.Success);
|
|
196
|
-
return [3 /*break*/, 11];
|
|
197
|
-
case 10:
|
|
198
|
-
error_2 = _a.sent();
|
|
199
|
-
logger.error('Error fetching user:', error_2);
|
|
200
|
-
throw new WalletError(WalletErrorCode.USER_FETCH_FAILED, 'Failed to fetch user data');
|
|
201
|
-
case 11: return [3 /*break*/, 13];
|
|
202
|
-
case 12:
|
|
203
|
-
logger.groupEnd();
|
|
204
|
-
return [7 /*endfinally*/];
|
|
205
|
-
case 13: return [3 /*break*/, 15];
|
|
206
|
-
case 14:
|
|
207
|
-
error_3 = _a.sent();
|
|
208
|
-
logger.error('Error in session initialization:', error_3);
|
|
209
|
-
handleError(error_3 instanceof WalletError
|
|
210
|
-
? error_3
|
|
211
|
-
: new WalletError(WalletErrorCode.SESSION_INITIALIZATION_FAILED, 'Failed to initialize session'));
|
|
212
|
-
return [3 /*break*/, 15];
|
|
213
|
-
case 15: return [2 /*return*/];
|
|
214
|
-
}
|
|
215
|
-
});
|
|
216
|
-
}); };
|
|
217
|
-
initializeSession();
|
|
218
|
-
}, [dynamicWallet, dynamicSdkHasLoaded, viewMode, sessionMode]);
|
|
50
|
+
}, [dynamicSdkHasLoaded, dynamicWallet, setLoading]);
|
|
219
51
|
// Handle modal visibility
|
|
220
52
|
useEffect(function () {
|
|
53
|
+
logger.debug('N1WalletModal: showLogin state changed', { showLogin: showLogin });
|
|
221
54
|
if (showLogin) {
|
|
222
55
|
setStartClosingLogin(false);
|
|
223
56
|
setShowLoginAnimation(true);
|
|
224
57
|
}
|
|
225
|
-
}, [showLogin]);
|
|
58
|
+
}, [showLogin, setStartClosingLogin]);
|
|
226
59
|
useEffect(function () {
|
|
227
60
|
if (startClosingLogin) {
|
|
61
|
+
logger.debug('N1WalletModal: startClosingLogin → true, beginning close animation');
|
|
228
62
|
setShowLoginAnimation(false);
|
|
229
63
|
var timeout_1 = setTimeout(function () {
|
|
230
|
-
|
|
64
|
+
logger.debug('N1WalletModal: closing animation complete, hiding modal');
|
|
231
65
|
setStartClosingLogin(false);
|
|
232
66
|
}, 700);
|
|
233
67
|
return function () { return clearTimeout(timeout_1); };
|
|
234
68
|
}
|
|
235
|
-
}, [startClosingLogin,
|
|
69
|
+
}, [startClosingLogin, setStartClosingLogin]);
|
|
236
70
|
// Handle modal close for Nord mode
|
|
237
71
|
var handleNordFlowClose = function () {
|
|
72
|
+
logger.debug('N1WalletModal: handleNordFlowClose invoked');
|
|
73
|
+
suppressDocumentClick();
|
|
74
|
+
blockModalReopen(1200);
|
|
75
|
+
setShowLogin(false);
|
|
238
76
|
setStartClosingLogin(true);
|
|
239
77
|
};
|
|
240
|
-
if (!showLogin && !
|
|
78
|
+
if (!showLogin && !startClosingLogin)
|
|
241
79
|
return null;
|
|
242
|
-
return (
|
|
80
|
+
return (_jsx("div", { className: "n1-wallet-widget dark ", children: showLogin && (_jsxs("div", { className: "fixed inset-0 z-50 flex items-center justify-center w-full h-full", children: [_jsx("div", { className: "\n fixed inset-0 w-full h-full bg-black/40 backdrop-blur-sm\n transition-all duration-500 ".concat(ANIMATION_EASE, "\n ").concat(showLoginAnimation ? 'opacity-100' : 'opacity-0', "\n "), onClick: function (event) {
|
|
81
|
+
logger.debug('N1WalletModal: backdrop clicked, closing modal');
|
|
82
|
+
blockEventPropagation(event);
|
|
83
|
+
suppressDocumentClick();
|
|
84
|
+
blockModalReopen(1200);
|
|
85
|
+
setShowLogin(false);
|
|
86
|
+
setStartClosingLogin(true);
|
|
87
|
+
}, onMouseDown: blockEventPropagation, onMouseUp: blockEventPropagation, onPointerDown: blockEventPropagation, onPointerUp: blockEventPropagation, onTouchStart: blockEventPropagation, onTouchEnd: blockEventPropagation }), _jsx("div", { className: "\n scale-100 relative z-50 transition-all duration-500 ".concat(ANIMATION_EASE, "\n ").concat(showLoginAnimation ? 'opacity-100 scale-100' : 'opacity-0 scale-95', "\n "), children: _jsx(Suspense, { fallback: _jsx(LoadingFallback, {}), children: _jsx(NordFlow, { onClose: handleNordFlowClose }) }) })] })) }));
|
|
243
88
|
}
|
|
244
89
|
//# sourceMappingURL=N1WalletModal.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"N1WalletModal.js","sourceRoot":"","sources":["../../src/Modal/N1WalletModal.tsx"],"names":[],"mappings":"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","sourcesContent":["import '../main.css';\nimport { bs58Decode, getEd25519PublicKey, signEd25519 } from '@n1xyz/nts-sdk';\nimport { lazy, Suspense, useEffect, useState } from 'react';\nimport { ANIMATION_EASE } from './NordFlow/constants';\nimport { WalletError, WalletErrorCode } from '../errors/types';\nimport {\n getSessionKeysFromLocalStorage,\n getUser,\n getUserBalances,\n} from '../Logic/utils';\nimport {\n useN1WalletContext,\n useN1WalletInternalContext,\n} from '../Provider/hooks';\nimport { N1ModalViewMode, N1SessionMode } from '../Provider/types';\nimport { logger } from '../utils/logger';\nimport { LoadingFallback } from './LoadingFallback';\n\n// Lazy load components\nconst N1Sidebar = lazy(() =>\n import('./Sidebar/N1Sidebar').then((mod) => ({ default: mod.N1Sidebar }))\n);\n\n// Lazy load the NTSFlow component\nconst NTSFlow = lazy(() =>\n import('./NTSFlow').then((mod) => ({\n default: mod.NTSFlow,\n }))\n);\n\n// Lazy load the NordFlow component\nconst NordFlow = lazy(() =>\n import('./NordFlow/NordFlow').then((mod) => ({\n default: mod.NordFlow,\n }))\n);\n\nexport function N1WalletModal() {\n const { showLogin, setShowLogin, viewMode } = useN1WalletContext();\n\n const {\n setBalances,\n setViewMode,\n setUsername,\n setSessionPubKey,\n setSignMessageWithSessionKey,\n setIsConnected,\n setWalletPubKey,\n setStartClosingLogin,\n startClosingLogin,\n setLoading,\n setAddress,\n dynamicWallet,\n dynamicSdkHasLoaded,\n darkMode,\n handleError,\n showSidebar,\n sessionMode,\n } = useN1WalletInternalContext();\n\n const [showLoginAnimation, setShowLoginAnimation] = useState(false);\n\n // Handle loading state\n useEffect(() => {\n if (dynamicSdkHasLoaded || dynamicWallet) {\n setLoading(false);\n }\n }, [dynamicSdkHasLoaded, dynamicWallet]);\n\n // Initialize session when wallet is connected\n useEffect(() => {\n\n // For Nord mode, we don't need to execute the NTS flow\n if (sessionMode === N1SessionMode.Nord) {\n return;\n }\n\n const initializeSession = async () => {\n // If wallet is not connected, or not in connect mode, skip\n if (!dynamicWallet || viewMode !== N1ModalViewMode.Connect) {\n return;\n }\n\n // NTS Flow below\n // Wallet is connected or we're in connect mode\n // TODO: make this clearer/ more organized\n try {\n logger.debug('Initialize Session...');\n\n // if (dynamicWallet) {\n // // Check whitelist status first\n // const response = await fetch(\n // 'https://argus-1g4n.onrender.com/api/db/verifyWhitelist',\n // {\n // method: 'POST',\n // headers: {\n // 'Content-Type': 'application/json',\n // },\n // body: JSON.stringify({ address: dynamicWallet.address }),\n // }\n // );\n\n // const whitelistData = await response.json();\n\n // if (!whitelistData.isWhitelisted) {\n // logger.info('Wallet not whitelisted');\n // setViewMode(N1ModalViewMode.NoWhitelist);\n // return;\n // }\n // }\n\n logger.group('Session Initialization');\n try {\n // Get wallet public key\n const walletPubKey =\n dynamicWallet.chain === 'SOL'\n ? bs58Decode(dynamicWallet.address)\n : Uint8Array.from(\n Buffer.from(dynamicWallet.address.slice(2), 'hex')\n );\n setWalletPubKey(walletPubKey);\n\n // Check for existing session\n const sessionData = getSessionKeysFromLocalStorage(\n dynamicWallet.address\n );\n if (!sessionData) {\n logger.info(\n 'No existing session found, transitioning to CreateSession'\n );\n setViewMode(N1ModalViewMode.CreateSession);\n return;\n }\n logger.debug('Session time', sessionData.createdAt);\n logger.debug(\n 'Session time',\n new Date(sessionData.createdAt).getTime()\n );\n logger.debug('Current time', Date.now());\n if (\n new Date(sessionData.createdAt).getTime() <\n Date.now() - 30 * 24 * 60 * 60 * 1000\n ) {\n // Session expired (older than 30 days)\n logger.info(\n 'Session expired, transitioning to CreateSession',\n new Date(sessionData.createdAt)\n );\n setViewMode(N1ModalViewMode.CreateSession);\n return;\n }\n\n // Use existing session\n logger.info('Using existing session');\n const sessionPubKey = await getEd25519PublicKey(\n sessionData.ed25519PrivateKey\n );\n setSessionPubKey(sessionPubKey);\n\n // Setup signing function\n const signFn = async (message: Uint8Array) => {\n logger.debug('signFn', { message });\n const signature = await signEd25519(\n message,\n sessionData.ed25519PrivateKey\n );\n console.log(\"baby\", {\n signature,\n pubKey: sessionPubKey,\n })\n return signature;\n };\n setSignMessageWithSessionKey(() => signFn);\n\n // Fetch user data\n try {\n logger.debug('Fetching user data');\n const userData = await getUser();\n logger.debug('User data:', userData);\n\n if (!userData) {\n logger.info('No user data found, transitioning to CreatingUser');\n setViewMode(N1ModalViewMode.CreatingUser);\n return;\n }\n\n // User exists, set data and check balances\n setUsername(userData.name || '');\n setAddress(dynamicWallet.address);\n setWalletPubKey(walletPubKey);\n setIsConnected(true);\n\n // Fetch balances\n try {\n const balances = await getUserBalances(dynamicWallet.address);\n logger.debug('User balances:', balances);\n setBalances(balances);\n } catch (error) {\n logger.error('Error fetching balances:', error);\n // Continue anyway, non-critical error\n }\n\n // Success!\n setViewMode(N1ModalViewMode.Success);\n } catch (error) {\n logger.error('Error fetching user:', error);\n throw new WalletError(\n WalletErrorCode.USER_FETCH_FAILED,\n 'Failed to fetch user data'\n );\n }\n } finally {\n logger.groupEnd();\n }\n } catch (error) {\n logger.error('Error in session initialization:', error);\n handleError(\n error instanceof WalletError\n ? error\n : new WalletError(\n WalletErrorCode.SESSION_INITIALIZATION_FAILED,\n 'Failed to initialize session'\n )\n );\n }\n };\n\n initializeSession();\n }, [dynamicWallet, dynamicSdkHasLoaded, viewMode, sessionMode]);\n\n // Handle modal visibility\n useEffect(() => {\n if (showLogin) {\n setStartClosingLogin(false);\n setShowLoginAnimation(true);\n }\n }, [showLogin]);\n\n useEffect(() => {\n if (startClosingLogin) {\n setShowLoginAnimation(false);\n const timeout = setTimeout(() => {\n setShowLogin(false);\n setStartClosingLogin(false);\n }, 700);\n return () => clearTimeout(timeout);\n }\n }, [startClosingLogin, setShowLogin, setStartClosingLogin]);\n\n // Handle modal close for Nord mode\n const handleNordFlowClose = () => {\n setStartClosingLogin(true);\n };\n\n if (!showLogin && !showSidebar) return null;\n\n return (\n <div className={'n1-wallet-widget '+(darkMode ? 'dark' : '')}>\n {showLogin && (\n <div className=\"fixed inset-0 z-50 flex items-center justify-center w-full h-full\">\n <div\n className={`\n fixed inset-0 w-full h-full bg-black/20 dark:bg-black/40 backdrop-blur-sm\n transition-all duration-500 ${ANIMATION_EASE}\n ${showLoginAnimation ? 'opacity-100' : 'opacity-0'}\n `}\n onClick={() => setStartClosingLogin(true)}\n />\n <div\n className={`\n relative z-50 transition-all duration-500 ${ANIMATION_EASE}\n ${showLoginAnimation ? 'opacity-100 scale-100' : 'opacity-0 scale-95'}\n `}\n >\n {sessionMode === N1SessionMode.Nord ? (\n <NordFlow onClose={handleNordFlowClose} />\n ) : (\n <NTSFlow />\n )}\n </div>\n </div>\n )}\n <Suspense fallback={<LoadingFallback />}>\n <N1Sidebar />\n </Suspense>\n </div>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"N1WalletModal.js","sourceRoot":"","sources":["../../src/Modal/N1WalletModal.tsx"],"names":[],"mappings":"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","sourcesContent":["import '../main.css';\nimport { lazy, Suspense, useEffect, useState, useCallback, type SyntheticEvent } from 'react';\nimport { ANIMATION_EASE } from './NordFlow/constants';\nimport {\n useN1WalletContext,\n useN1WalletInternalContext,\n} from '../Provider/hooks';\nimport { LoadingFallback } from './LoadingFallback';\nimport { logger } from '../utils/logger';\n\n// Lazy load the NordFlow component\nconst NordFlow = lazy(() =>\n import('./NordFlow/NordFlow').then((mod) => ({\n default: mod.NordFlow,\n }))\n);\n\nexport function N1WalletModal() {\n const { showLogin, setShowLogin } = useN1WalletContext();\n\n const {\n setStartClosingLogin,\n startClosingLogin,\n setLoading,\n dynamicWallet,\n dynamicSdkHasLoaded,\n blockModalReopen,\n } = useN1WalletInternalContext();\n\n const [showLoginAnimation, setShowLoginAnimation] = useState(false);\n const suppressDocumentClick = useCallback(() => {\n const handler = (event: MouseEvent | PointerEvent | TouchEvent) => {\n event.preventDefault();\n event.stopPropagation();\n };\n\n document.addEventListener('click', handler, true);\n document.addEventListener('pointerup', handler, true);\n document.addEventListener('touchend', handler, true);\n\n setTimeout(() => {\n document.removeEventListener('click', handler, true);\n document.removeEventListener('pointerup', handler, true);\n document.removeEventListener('touchend', handler, true);\n }, 350);\n }, []);\n\n const blockEventPropagation = useCallback((event: SyntheticEvent | Event) => {\n if ('preventDefault' in event) {\n event.preventDefault();\n }\n if ('stopPropagation' in event) {\n event.stopPropagation();\n }\n const nativeEvent =\n 'nativeEvent' in event\n ? (event.nativeEvent as Event & { stopImmediatePropagation?: () => void })\n : (event as Event & { stopImmediatePropagation?: () => void });\n nativeEvent?.stopImmediatePropagation?.();\n }, []);\n\n // Handle loading state\n useEffect(() => {\n if (dynamicSdkHasLoaded || dynamicWallet) {\n setLoading(false);\n }\n }, [dynamicSdkHasLoaded, dynamicWallet, setLoading]);\n\n // Handle modal visibility\n useEffect(() => {\n logger.debug('N1WalletModal: showLogin state changed', { showLogin });\n if (showLogin) {\n setStartClosingLogin(false);\n setShowLoginAnimation(true);\n }\n }, [showLogin, setStartClosingLogin]);\n\n useEffect(() => {\n if (startClosingLogin) {\n logger.debug('N1WalletModal: startClosingLogin → true, beginning close animation');\n setShowLoginAnimation(false);\n const timeout = setTimeout(() => {\n logger.debug('N1WalletModal: closing animation complete, hiding modal');\n setStartClosingLogin(false);\n }, 700);\n return () => clearTimeout(timeout);\n }\n }, [startClosingLogin, setStartClosingLogin]);\n\n // Handle modal close for Nord mode\n const handleNordFlowClose = () => {\n logger.debug('N1WalletModal: handleNordFlowClose invoked');\n suppressDocumentClick();\n blockModalReopen(1200);\n setShowLogin(false);\n setStartClosingLogin(true);\n };\n\n if (!showLogin && !startClosingLogin) return null;\n\n return (\n <div className=\"n1-wallet-widget dark \">\n {showLogin && (\n <div className=\"fixed inset-0 z-50 flex items-center justify-center w-full h-full\">\n <div\n className={`\n fixed inset-0 w-full h-full bg-black/40 backdrop-blur-sm\n transition-all duration-500 ${ANIMATION_EASE}\n ${showLoginAnimation ? 'opacity-100' : 'opacity-0'}\n `}\n onClick={(event) => {\n logger.debug('N1WalletModal: backdrop clicked, closing modal');\n blockEventPropagation(event);\n suppressDocumentClick();\n blockModalReopen(1200);\n setShowLogin(false);\n setStartClosingLogin(true);\n }}\n onMouseDown={blockEventPropagation}\n onMouseUp={blockEventPropagation}\n onPointerDown={blockEventPropagation}\n onPointerUp={blockEventPropagation}\n onTouchStart={blockEventPropagation}\n onTouchEnd={blockEventPropagation}\n />\n <div\n className={`\n scale-100 relative z-50 transition-all duration-500 ${ANIMATION_EASE}\n ${showLoginAnimation ? 'opacity-100 scale-100' : 'opacity-0 scale-95'}\n `}\n >\n <Suspense fallback={<LoadingFallback />}>\n <NordFlow onClose={handleNordFlowClose}/>\n </Suspense>\n </div>\n </div>\n )}\n </div>\n );\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare function CreateSessionView(): JSX.Element;
|
|
1
|
+
export declare function CreateSessionView(): import("react/jsx-runtime").JSX.Element;
|