@n1xyz/wallet-widget 0.0.21 → 0.0.22-8121ed05.0

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.
Files changed (50) hide show
  1. package/dist/Modal/N1WalletModal.js +62 -108
  2. package/dist/Modal/N1WalletModal.js.map +1 -1
  3. package/dist/Modal/NTSFlow/NTSFlow.d.ts +4 -1
  4. package/dist/Modal/NTSFlow/NTSFlow.js +7 -7
  5. package/dist/Modal/NTSFlow/NTSFlow.js.map +1 -1
  6. package/dist/Modal/NTSFlow/views/{01-ConnectView.js → ConnectView.js} +2 -3
  7. package/dist/Modal/NTSFlow/views/ConnectView.js.map +1 -0
  8. package/dist/Modal/NTSFlow/views/{02-CreateSessionView.js → CreateSessionView.js} +5 -19
  9. package/dist/Modal/NTSFlow/views/CreateSessionView.js.map +1 -0
  10. package/dist/Modal/NTSFlow/views/{04-CreateUserView.js → CreateUserView.js} +1 -1
  11. package/dist/Modal/NTSFlow/views/CreateUserView.js.map +1 -0
  12. package/dist/Modal/NTSFlow/views/{99-NoWhitelistView.js → NoWhitelistView.js} +1 -1
  13. package/dist/Modal/NTSFlow/views/NoWhitelistView.js.map +1 -0
  14. package/dist/Modal/NTSFlow/views/{03-SigningView.js → SigningView.js} +1 -1
  15. package/dist/Modal/NTSFlow/views/SigningView.js.map +1 -0
  16. package/dist/Modal/NTSFlow/views/SuccessView.js +11 -0
  17. package/dist/Modal/NTSFlow/views/SuccessView.js.map +1 -0
  18. package/dist/Modal/NordFlow/screens/01-ConnectWalletScreen.js +1 -2
  19. package/dist/Modal/NordFlow/screens/01-ConnectWalletScreen.js.map +1 -1
  20. package/dist/Provider/LazyWalletProvider.js +2 -4
  21. package/dist/Provider/LazyWalletProvider.js.map +1 -1
  22. package/dist/Provider/N1WalletProvider.d.ts +2 -2
  23. package/dist/Provider/N1WalletProvider.js +20 -48
  24. package/dist/Provider/N1WalletProvider.js.map +1 -1
  25. package/dist/Provider/context.d.ts +2 -2
  26. package/dist/Provider/hooks/useNordUserInitialization.js +2 -2
  27. package/dist/Provider/hooks/useNordUserInitialization.js.map +1 -1
  28. package/dist/Provider/hooks.d.ts +2 -2
  29. package/dist/Provider/types.d.ts +3 -16
  30. package/dist/Provider/types.js.map +1 -1
  31. package/dist/WidgetButton/N1ConnectButton.js +3 -3
  32. package/dist/WidgetButton/N1ConnectButton.js.map +1 -1
  33. package/dist/embedded-main-css.d.ts +1 -1
  34. package/dist/embedded-main-css.js +1 -1
  35. package/dist/embedded-main-css.js.map +1 -1
  36. package/dist/main.css +1 -1
  37. package/package.json +3 -3
  38. package/dist/Modal/NTSFlow/views/01-ConnectView.js.map +0 -1
  39. package/dist/Modal/NTSFlow/views/02-CreateSessionView.js.map +0 -1
  40. package/dist/Modal/NTSFlow/views/03-SigningView.js.map +0 -1
  41. package/dist/Modal/NTSFlow/views/04-CreateUserView.js.map +0 -1
  42. package/dist/Modal/NTSFlow/views/05-SuccessView.js +0 -12
  43. package/dist/Modal/NTSFlow/views/05-SuccessView.js.map +0 -1
  44. package/dist/Modal/NTSFlow/views/99-NoWhitelistView.js.map +0 -1
  45. /package/dist/Modal/NTSFlow/views/{01-ConnectView.d.ts → ConnectView.d.ts} +0 -0
  46. /package/dist/Modal/NTSFlow/views/{02-CreateSessionView.d.ts → CreateSessionView.d.ts} +0 -0
  47. /package/dist/Modal/NTSFlow/views/{04-CreateUserView.d.ts → CreateUserView.d.ts} +0 -0
  48. /package/dist/Modal/NTSFlow/views/{99-NoWhitelistView.d.ts → NoWhitelistView.d.ts} +0 -0
  49. /package/dist/Modal/NTSFlow/views/{03-SigningView.d.ts → SigningView.d.ts} +0 -0
  50. /package/dist/Modal/NTSFlow/views/{05-SuccessView.d.ts → SuccessView.d.ts} +0 -0
@@ -36,7 +36,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
36
36
  };
37
37
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
38
38
  import '../main.css';
39
- import { bs58Decode, getEd25519PublicKey, signEd25519, NUser } from '@n1xyz/nts-sdk';
39
+ import { bs58Decode, getEd25519PublicKey, signEd25519 } from '@n1xyz/nts-sdk';
40
40
  import { lazy, Suspense, useEffect, useState } from 'react';
41
41
  import { ANIMATION_EASE } from './NordFlow/constants';
42
42
  import { WalletError, WalletErrorCode } from '../errors/types';
@@ -63,39 +63,8 @@ var NordFlow = lazy(function () {
63
63
  });
64
64
  export function N1WalletModal() {
65
65
  var _this = this;
66
- var _a = useN1WalletContext(), showLogin = _a.showLogin, setShowLogin = _a.setShowLogin, viewMode = _a.viewMode, ntsInterface = _a.ntsInterface;
67
- var _b = useN1WalletInternalContext(), setBalances = _b.setBalances, setViewMode = _b.setViewMode, setUsername = _b.setUsername, setSessionPubKey = _b.setSessionPubKey, setSignMessageWithWalletKey = _b.setSignMessageWithWalletKey, 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, setNUser = _b.setNUser;
68
- var signWithWallet = function (msg) { return __awaiter(_this, void 0, void 0, function () {
69
- var signature, binaryString, signatureUint8Array, i, sig, error_1;
70
- return __generator(this, function (_a) {
71
- switch (_a.label) {
72
- case 0:
73
- _a.trys.push([0, 4, , 5]);
74
- if (!dynamicWallet) {
75
- throw new WalletError(WalletErrorCode.WALLET_NOT_FOUND, 'Wallet not found for signing');
76
- }
77
- if (!(dynamicWallet.chain === 'SOL')) return [3 /*break*/, 2];
78
- return [4 /*yield*/, dynamicWallet.signMessage(msg)];
79
- case 1:
80
- signature = _a.sent();
81
- binaryString = atob(signature);
82
- signatureUint8Array = new Uint8Array(binaryString.length);
83
- for (i = 0; i < binaryString.length; i++) {
84
- signatureUint8Array[i] = binaryString.charCodeAt(i);
85
- }
86
- return [2 /*return*/, signatureUint8Array];
87
- case 2: return [4 /*yield*/, dynamicWallet.signMessage(msg)];
88
- case 3:
89
- sig = (_a.sent());
90
- logger.debug('Wallet signature received', { signature: sig });
91
- return [2 /*return*/, Uint8Array.from(Buffer.from(sig.slice(2), 'hex'))];
92
- case 4:
93
- error_1 = _a.sent();
94
- throw new WalletError(WalletErrorCode.USER_REJECTED, 'Failed to sign message with wallet', { originalError: error_1 });
95
- case 5: return [2 /*return*/];
96
- }
97
- });
98
- }); };
66
+ var _a = useN1WalletContext(), showLogin = _a.showLogin, setShowLogin = _a.setShowLogin, viewMode = _a.viewMode;
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;
99
68
  var _c = useState(false), showLoginAnimation = _c[0], setShowLoginAnimation = _c[1];
100
69
  // Handle loading state
101
70
  useEffect(function () {
@@ -110,7 +79,7 @@ export function N1WalletModal() {
110
79
  return;
111
80
  }
112
81
  var initializeSession = function () { return __awaiter(_this, void 0, void 0, function () {
113
- var response, whitelistData, walletPubKey, sessionData_1, sessionPubKey, signFn_1, newUserInstance, userData, balances, error_2, error_3, error_4;
82
+ var walletPubKey, sessionData_1, sessionPubKey_1, signFn_1, userData, balances, error_1, error_2, error_3;
114
83
  var _this = this;
115
84
  return __generator(this, function (_a) {
116
85
  switch (_a.label) {
@@ -121,32 +90,31 @@ export function N1WalletModal() {
121
90
  }
122
91
  _a.label = 1;
123
92
  case 1:
124
- _a.trys.push([1, 17, , 18]);
93
+ _a.trys.push([1, 14, , 15]);
125
94
  logger.debug('Initialize Session...');
126
- if (!dynamicWallet) return [3 /*break*/, 4];
127
- return [4 /*yield*/, fetch('https://argus-1g4n.onrender.com/api/db/verifyWhitelist', {
128
- method: 'POST',
129
- headers: {
130
- 'Content-Type': 'application/json',
131
- },
132
- body: JSON.stringify({ address: dynamicWallet.address }),
133
- })];
134
- case 2:
135
- response = _a.sent();
136
- return [4 /*yield*/, response.json()];
137
- case 3:
138
- whitelistData = _a.sent();
139
- if (!whitelistData.isWhitelisted) {
140
- logger.info('Wallet not whitelisted');
141
- setViewMode(N1ModalViewMode.NoWhitelist);
142
- return [2 /*return*/];
143
- }
144
- _a.label = 4;
145
- case 4:
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
+ // }
146
114
  logger.group('Session Initialization');
147
- _a.label = 5;
148
- case 5:
149
- _a.trys.push([5, , 15, 16]);
115
+ _a.label = 2;
116
+ case 2:
117
+ _a.trys.push([2, , 12, 13]);
150
118
  walletPubKey = dynamicWallet.chain === 'SOL'
151
119
  ? bs58Decode(dynamicWallet.address)
152
120
  : Uint8Array.from(Buffer.from(dynamicWallet.address.slice(2), 'hex'));
@@ -170,9 +138,9 @@ export function N1WalletModal() {
170
138
  // Use existing session
171
139
  logger.info('Using existing session');
172
140
  return [4 /*yield*/, getEd25519PublicKey(sessionData_1.ed25519PrivateKey)];
173
- case 6:
174
- sessionPubKey = _a.sent();
175
- setSessionPubKey(sessionPubKey);
141
+ case 3:
142
+ sessionPubKey_1 = _a.sent();
143
+ setSessionPubKey(sessionPubKey_1);
176
144
  signFn_1 = function (message) { return __awaiter(_this, void 0, void 0, function () {
177
145
  var signature;
178
146
  return __generator(this, function (_a) {
@@ -182,35 +150,21 @@ export function N1WalletModal() {
182
150
  return [4 /*yield*/, signEd25519(message, sessionData_1.ed25519PrivateKey)];
183
151
  case 1:
184
152
  signature = _a.sent();
153
+ console.log("baby", {
154
+ signature: signature,
155
+ pubKey: sessionPubKey_1,
156
+ });
185
157
  return [2 /*return*/, signature];
186
158
  }
187
159
  });
188
160
  }); };
189
- setSignMessageWithWalletKey(function () { return signWithWallet; });
190
161
  setSignMessageWithSessionKey(function () { return signFn_1; });
191
- // Create and set NUser instance
192
- if (ntsInterface && walletPubKey && signWithWallet) {
193
- newUserInstance = new NUser(ntsInterface, walletPubKey, // walletPubKey derived in this function
194
- sessionPubKey, // rehydrated sessionPubKey
195
- signWithWallet, // signWithWalletKeyFn from context
196
- signFn_1 // rehydrated session signFn
197
- );
198
- newUserInstance.isSessionValid = true; // Mark session as valid
199
- setNUser(newUserInstance);
200
- logger.debug('NUser instance created and set from rehydrated session');
201
- }
202
- else {
203
- logger.warn('Could not create NUser from rehydrated session: ntsInterface, walletPubKey, or signMessageWithWalletKey missing');
204
- // Potentially handle this, e.g., by clearing session and going to CreateSession
205
- // For now, we'll let the flow continue, but NAppClient might not initialize.
206
- throw new WalletError(WalletErrorCode.CONNECTION_FAILED, 'Failed to create NUser from rehydrated session');
207
- }
208
- _a.label = 7;
209
- case 7:
210
- _a.trys.push([7, 13, , 14]);
162
+ _a.label = 4;
163
+ case 4:
164
+ _a.trys.push([4, 10, , 11]);
211
165
  logger.debug('Fetching user data');
212
166
  return [4 /*yield*/, getUser()];
213
- case 8:
167
+ case 5:
214
168
  userData = _a.sent();
215
169
  logger.debug('User data:', userData);
216
170
  if (!userData) {
@@ -223,40 +177,40 @@ export function N1WalletModal() {
223
177
  setAddress(dynamicWallet.address);
224
178
  setWalletPubKey(walletPubKey);
225
179
  setIsConnected(true);
226
- _a.label = 9;
227
- case 9:
228
- _a.trys.push([9, 11, , 12]);
180
+ _a.label = 6;
181
+ case 6:
182
+ _a.trys.push([6, 8, , 9]);
229
183
  return [4 /*yield*/, getUserBalances(dynamicWallet.address)];
230
- case 10:
184
+ case 7:
231
185
  balances = _a.sent();
232
186
  logger.debug('User balances:', balances);
233
187
  setBalances(balances);
234
- return [3 /*break*/, 12];
235
- case 11:
236
- error_2 = _a.sent();
237
- logger.error('Error fetching balances:', error_2);
238
- return [3 /*break*/, 12];
239
- case 12:
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:
240
194
  // Success!
241
195
  setViewMode(N1ModalViewMode.Success);
242
- return [3 /*break*/, 14];
243
- case 13:
244
- error_3 = _a.sent();
245
- logger.error('Error fetching user:', error_3);
196
+ return [3 /*break*/, 11];
197
+ case 10:
198
+ error_2 = _a.sent();
199
+ logger.error('Error fetching user:', error_2);
246
200
  throw new WalletError(WalletErrorCode.USER_FETCH_FAILED, 'Failed to fetch user data');
247
- case 14: return [3 /*break*/, 16];
248
- case 15:
201
+ case 11: return [3 /*break*/, 13];
202
+ case 12:
249
203
  logger.groupEnd();
250
204
  return [7 /*endfinally*/];
251
- case 16: return [3 /*break*/, 18];
252
- case 17:
253
- error_4 = _a.sent();
254
- logger.error('Error in session initialization:', error_4);
255
- handleError(error_4 instanceof WalletError
256
- ? error_4
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
257
211
  : new WalletError(WalletErrorCode.SESSION_INITIALIZATION_FAILED, 'Failed to initialize session'));
258
- return [3 /*break*/, 18];
259
- case 18: return [2 /*return*/];
212
+ return [3 /*break*/, 15];
213
+ case 15: return [2 /*return*/];
260
214
  }
261
215
  });
262
216
  }); };
@@ -1 +1 @@
1
- {"version":3,"file":"N1WalletModal.js","sourceRoot":"","sources":["../../src/Modal/N1WalletModal.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,aAAa,CAAC;AACrB,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACrF,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EACL,8BAA8B,EAC9B,OAAO,EACP,eAAe,GAChB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,kBAAkB,EAClB,0BAA0B,GAC3B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,uBAAuB;AACvB,IAAM,SAAS,GAAG,IAAI,CAAC;IACrB,OAAA,MAAM,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,UAAC,GAAG,IAAK,OAAA,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC,EAA5B,CAA4B,CAAC;AAAzE,CAAyE,CAC1E,CAAC;AAEF,kCAAkC;AAClC,IAAM,OAAO,GAAG,IAAI,CAAC;IACnB,OAAA,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,UAAC,GAAG,IAAK,OAAA,CAAC;QACjC,OAAO,EAAE,GAAG,CAAC,OAAO;KACrB,CAAC,EAFgC,CAEhC,CAAC;AAFH,CAEG,CACJ,CAAC;AAEF,mCAAmC;AACnC,IAAM,QAAQ,GAAG,IAAI,CAAC;IACpB,OAAA,MAAM,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,UAAC,GAAG,IAAK,OAAA,CAAC;QAC3C,OAAO,EAAE,GAAG,CAAC,QAAQ;KACtB,CAAC,EAF0C,CAE1C,CAAC;AAFH,CAEG,CACJ,CAAC;AAEF,MAAM,UAAU,aAAa;IAA7B,iBAmTC;IAlTO,IAAA,KAAsD,kBAAkB,EAAE,EAAxE,SAAS,eAAA,EAAE,YAAY,kBAAA,EAAE,QAAQ,cAAA,EAAE,YAAY,kBAAyB,CAAC;IAE3E,IAAA,KAoBF,0BAA0B,EAAE,EAnB9B,WAAW,iBAAA,EACX,WAAW,iBAAA,EACX,WAAW,iBAAA,EACX,gBAAgB,sBAAA,EAChB,2BAA2B,iCAAA,EAC3B,4BAA4B,kCAAA,EAC5B,cAAc,oBAAA,EACd,eAAe,qBAAA,EACf,oBAAoB,0BAAA,EACpB,iBAAiB,uBAAA,EACjB,UAAU,gBAAA,EACV,UAAU,gBAAA,EACV,aAAa,mBAAA,EACb,mBAAmB,yBAAA,EACnB,QAAQ,cAAA,EACR,WAAW,iBAAA,EACX,WAAW,iBAAA,EACX,WAAW,iBAAA,EACX,QAAQ,cACsB,CAAC;IAKjC,IAAM,cAAc,GAAG,UAAO,GAAW;;;;;;oBAErC,IAAI,CAAC,aAAa,EAAE,CAAC;wBACnB,MAAM,IAAI,WAAW,CACnB,eAAe,CAAC,gBAAgB,EAChC,8BAA8B,CAC/B,CAAC;oBACJ,CAAC;yBAEG,CAAA,aAAa,CAAC,KAAK,KAAK,KAAK,CAAA,EAA7B,wBAA6B;oBACb,qBAAM,aAAa,CAAC,WAAW,CAAC,GAAG,CAAC,EAAA;;oBAAhD,SAAS,GAAG,SAAoC;oBAChD,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;oBAC/B,mBAAmB,GAAG,IAAI,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;oBAChE,KAAS,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;wBAC7C,mBAAmB,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;oBACtD,CAAC;oBACD,sBAAO,mBAAmB,EAAC;wBAGhB,qBAAM,aAAa,CAAC,WAAW,CAAC,GAAG,CAAC,EAAA;;oBAA3C,GAAG,GAAG,CAAC,SAAoC,CAAW;oBAC5D,MAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;oBAC9D,sBAAO,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAC;;;oBAEzD,MAAM,IAAI,WAAW,CACnB,eAAe,CAAC,aAAa,EAC7B,oCAAoC,EACpC,EAAE,aAAa,EAAE,OAAK,EAAE,CACzB,CAAC;;;;SAEL,CAAC;IAEI,IAAA,KAA8C,QAAQ,CAAC,KAAK,CAAC,EAA5D,kBAAkB,QAAA,EAAE,qBAAqB,QAAmB,CAAC;IAEpE,uBAAuB;IACvB,SAAS,CAAC;QACR,IAAI,mBAAmB,IAAI,aAAa,EAAE,CAAC;YACzC,UAAU,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC;IACH,CAAC,EAAE,CAAC,mBAAmB,EAAE,aAAa,CAAC,CAAC,CAAC;IAEzC,8CAA8C;IAC9C,SAAS,CAAC;QAER,uDAAuD;QACvD,IAAI,WAAW,KAAK,aAAa,CAAC,IAAI,EAAE,CAAC;YACvC,OAAO;QACT,CAAC;QAED,IAAM,iBAAiB,GAAG;;;;;;wBACxB,2DAA2D;wBAC3D,IAAI,CAAC,aAAa,IAAI,QAAQ,KAAK,eAAe,CAAC,OAAO,EAAE,CAAC;4BAC3D,sBAAO;wBACT,CAAC;;;;wBAMC,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;6BAElC,aAAa,EAAb,wBAAa;wBAEE,qBAAM,KAAK,CAC1B,wDAAwD,EACxD;gCACE,MAAM,EAAE,MAAM;gCACd,OAAO,EAAE;oCACP,cAAc,EAAE,kBAAkB;iCACnC;gCACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,aAAa,CAAC,OAAO,EAAE,CAAC;6BACzD,CACF,EAAA;;wBATK,QAAQ,GAAG,SAShB;wBAEqB,qBAAM,QAAQ,CAAC,IAAI,EAAE,EAAA;;wBAArC,aAAa,GAAG,SAAqB;wBAE3C,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC;4BACjC,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;4BACtC,WAAW,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;4BACzC,sBAAO;wBACT,CAAC;;;wBAGH,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;;;;wBAG/B,YAAY,GAChB,aAAa,CAAC,KAAK,KAAK,KAAK;4BAC3B,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC;4BACnC,CAAC,CAAC,UAAU,CAAC,IAAI,CACf,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CACnD,CAAC;wBACN,eAAe,CAAC,YAAY,CAAC,CAAC;wBAGxB,gBAAc,8BAA8B,CAChD,aAAa,CAAC,OAAO,CACtB,CAAC;wBACF,IAAI,CAAC,aAAW,EAAE,CAAC;4BACjB,MAAM,CAAC,IAAI,CACT,2DAA2D,CAC5D,CAAC;4BACF,WAAW,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;4BAC3C,sBAAO;wBACT,CAAC;wBACD,MAAM,CAAC,KAAK,CAAC,cAAc,EAAE,aAAW,CAAC,SAAS,CAAC,CAAC;wBACpD,MAAM,CAAC,KAAK,CACV,cAAc,EACd,IAAI,IAAI,CAAC,aAAW,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAC1C,CAAC;wBACF,MAAM,CAAC,KAAK,CAAC,cAAc,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;wBACzC,IACE,IAAI,IAAI,CAAC,aAAW,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE;4BACzC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EACrC,CAAC;4BACD,uCAAuC;4BACvC,MAAM,CAAC,IAAI,CACT,iDAAiD,EACjD,IAAI,IAAI,CAAC,aAAW,CAAC,SAAS,CAAC,CAChC,CAAC;4BACF,WAAW,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;4BAC3C,sBAAO;wBACT,CAAC;wBAED,uBAAuB;wBACvB,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;wBAChB,qBAAM,mBAAmB,CAC7C,aAAW,CAAC,iBAAiB,CAC9B,EAAA;;wBAFK,aAAa,GAAG,SAErB;wBACD,gBAAgB,CAAC,aAAa,CAAC,CAAC;wBAG1B,WAAS,UAAO,OAAmB;;;;;wCACvC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,OAAO,SAAA,EAAE,CAAC,CAAC;wCAClB,qBAAM,WAAW,CACjC,OAAO,EACP,aAAW,CAAC,iBAAiB,CAC9B,EAAA;;wCAHK,SAAS,GAAG,SAGjB;wCACD,sBAAO,SAAS,EAAC;;;6BAClB,CAAC;wBACF,2BAA2B,CAAC,cAAM,OAAA,cAAc,EAAd,CAAc,CAAC,CAAC;wBAClD,4BAA4B,CAAC,cAAM,OAAA,QAAM,EAAN,CAAM,CAAC,CAAC;wBAE3C,gCAAgC;wBAChC,IAAI,YAAY,IAAI,YAAY,IAAI,cAAc,EAAE,CAAC;4BAC7C,eAAe,GAAG,IAAI,KAAK,CAC/B,YAAY,EACZ,YAAY,EAAO,wCAAwC;4BAC3D,aAAa,EAAM,2BAA2B;4BAC9C,cAAc,EAAE,mCAAmC;4BACnD,QAAM,CAAa,4BAA4B;6BAChD,CAAC;4BACF,eAAe,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC,wBAAwB;4BAC/D,QAAQ,CAAC,eAAe,CAAC,CAAC;4BAC1B,MAAM,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;wBACzE,CAAC;6BAAM,CAAC;4BACN,MAAM,CAAC,IAAI,CACT,iHAAiH,CAClH,CAAC;4BACF,gFAAgF;4BAChF,6EAA6E;4BAC7E,MAAM,IAAI,WAAW,CACnB,eAAe,CAAC,iBAAiB,EACjC,gDAAgD,CACjD,CAAC;wBACJ,CAAC;;;;wBAIC,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;wBAClB,qBAAM,OAAO,EAAE,EAAA;;wBAA1B,QAAQ,GAAG,SAAe;wBAChC,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;wBAErC,IAAI,CAAC,QAAQ,EAAE,CAAC;4BACd,MAAM,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;4BACjE,WAAW,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;4BAC1C,sBAAO;wBACT,CAAC;wBAED,2CAA2C;wBAC3C,WAAW,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;wBACjC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;wBAClC,eAAe,CAAC,YAAY,CAAC,CAAC;wBAC9B,cAAc,CAAC,IAAI,CAAC,CAAC;;;;wBAIF,qBAAM,eAAe,CAAC,aAAa,CAAC,OAAO,CAAC,EAAA;;wBAAvD,QAAQ,GAAG,SAA4C;wBAC7D,MAAM,CAAC,KAAK,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;wBACzC,WAAW,CAAC,QAAQ,CAAC,CAAC;;;;wBAEtB,MAAM,CAAC,KAAK,CAAC,0BAA0B,EAAE,OAAK,CAAC,CAAC;;;wBAIlD,WAAW;wBACX,WAAW,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;;;;wBAErC,MAAM,CAAC,KAAK,CAAC,sBAAsB,EAAE,OAAK,CAAC,CAAC;wBAC5C,MAAM,IAAI,WAAW,CACnB,eAAe,CAAC,iBAAiB,EACjC,2BAA2B,CAC5B,CAAC;;;wBAGJ,MAAM,CAAC,QAAQ,EAAE,CAAC;;;;;wBAGpB,MAAM,CAAC,KAAK,CAAC,kCAAkC,EAAE,OAAK,CAAC,CAAC;wBACxD,WAAW,CACT,OAAK,YAAY,WAAW;4BAC1B,CAAC,CAAC,OAAK;4BACP,CAAC,CAAC,IAAI,WAAW,CACf,eAAe,CAAC,6BAA6B,EAC7C,8BAA8B,CAC/B,CACJ,CAAC;;;;;aAEL,CAAC;QAEF,iBAAiB,EAAE,CAAC;IACtB,CAAC,EAAE,CAAC,aAAa,EAAE,mBAAmB,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;IAEhE,0BAA0B;IAC1B,SAAS,CAAC;QACR,IAAI,SAAS,EAAE,CAAC;YACd,oBAAoB,CAAC,KAAK,CAAC,CAAC;YAC5B,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,SAAS,CAAC;QACR,IAAI,iBAAiB,EAAE,CAAC;YACtB,qBAAqB,CAAC,KAAK,CAAC,CAAC;YAC7B,IAAM,SAAO,GAAG,UAAU,CAAC;gBACzB,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,oBAAoB,CAAC,KAAK,CAAC,CAAC;YAC9B,CAAC,EAAE,GAAG,CAAC,CAAC;YACR,OAAO,cAAM,OAAA,YAAY,CAAC,SAAO,CAAC,EAArB,CAAqB,CAAC;QACrC,CAAC;IACH,CAAC,EAAE,CAAC,iBAAiB,EAAE,YAAY,EAAE,oBAAoB,CAAC,CAAC,CAAC;IAE5D,mCAAmC;IACnC,IAAM,mBAAmB,GAAG;QAC1B,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC,CAAC;IAEF,IAAI,CAAC,SAAS,IAAI,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IAE5C,OAAO,CACL,eAAK,SAAS,EAAE,mBAAmB,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,aAC3D,SAAS,IAAI,CACZ,eAAK,SAAS,EAAC,mEAAmE,aAChF,cACE,SAAS,EAAE,iJAEsB,cAAc,8BAC1C,kBAAkB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,mBACpD,EACD,OAAO,EAAE,cAAM,OAAA,oBAAoB,CAAC,IAAI,CAAC,EAA1B,CAA0B,GACzC,EACF,cACE,SAAS,EAAE,oEACmC,cAAc,6BACxD,kBAAkB,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,oBAAoB,mBACtE,YAEA,WAAW,KAAK,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CACpC,KAAC,QAAQ,IAAC,OAAO,EAAE,mBAAmB,GAAI,CAC3C,CAAC,CAAC,CAAC,CACF,KAAC,OAAO,KAAG,CACZ,GACG,IACF,CACP,EACD,KAAC,QAAQ,IAAC,QAAQ,EAAE,KAAC,eAAe,KAAG,YACrC,KAAC,SAAS,KAAG,GACJ,IACP,CACP,CAAC;AACJ,CAAC","sourcesContent":["import '../main.css';\nimport { bs58Decode, getEd25519PublicKey, signEd25519, NUser } 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, ntsInterface } = useN1WalletContext();\n\n const {\n setBalances,\n setViewMode,\n setUsername,\n setSessionPubKey,\n setSignMessageWithWalletKey,\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 setNUser,\n } = useN1WalletInternalContext();\n\n\n\n\n const signWithWallet = async (msg: string): Promise<Uint8Array> => {\n try {\n if (!dynamicWallet) {\n throw new WalletError(\n WalletErrorCode.WALLET_NOT_FOUND,\n 'Wallet not found for signing'\n );\n }\n\n if (dynamicWallet.chain === 'SOL') {\n const signature = await dynamicWallet.signMessage(msg);\n const binaryString = atob(signature);\n const signatureUint8Array = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n signatureUint8Array[i] = binaryString.charCodeAt(i);\n }\n return signatureUint8Array;\n }\n\n const sig = (await dynamicWallet.signMessage(msg)) as string;\n logger.debug('Wallet signature received', { signature: sig });\n return Uint8Array.from(Buffer.from(sig.slice(2), 'hex'));\n } catch (error) {\n throw new WalletError(\n WalletErrorCode.USER_REJECTED,\n 'Failed to sign message with wallet',\n { originalError: error }\n );\n }\n };\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 return signature;\n };\n setSignMessageWithWalletKey(() => signWithWallet);\n setSignMessageWithSessionKey(() => signFn);\n\n // Create and set NUser instance\n if (ntsInterface && walletPubKey && signWithWallet) {\n const newUserInstance = new NUser(\n ntsInterface,\n walletPubKey, // walletPubKey derived in this function\n sessionPubKey, // rehydrated sessionPubKey\n signWithWallet, // signWithWalletKeyFn from context\n signFn // rehydrated session signFn\n );\n newUserInstance.isSessionValid = true; // Mark session as valid\n setNUser(newUserInstance);\n logger.debug('NUser instance created and set from rehydrated session');\n } else {\n logger.warn(\n 'Could not create NUser from rehydrated session: ntsInterface, walletPubKey, or signMessageWithWalletKey missing'\n );\n // Potentially handle this, e.g., by clearing session and going to CreateSession\n // For now, we'll let the flow continue, but NAppClient might not initialize.\n throw new WalletError(\n WalletErrorCode.CONNECTION_FAILED,\n 'Failed to create NUser from rehydrated session'\n );\n }\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 { 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 +1,4 @@
1
- export declare function NTSFlow(): JSX.Element;
1
+ interface NTSFlowProps {
2
+ }
3
+ export declare function NTSFlow({}: NTSFlowProps): JSX.Element;
4
+ export {};
@@ -5,30 +5,30 @@ import { N1ModalViewMode } from '../../Provider/types';
5
5
  import { LoadingFallback } from './LoadingFallback';
6
6
  // Lazy load components
7
7
  var ConnectView = lazy(function () {
8
- return import('./views/01-ConnectView').then(function (mod) { return ({ default: mod.ConnectView }); });
8
+ return import('./views/ConnectView').then(function (mod) { return ({ default: mod.ConnectView }); });
9
9
  });
10
10
  var CreateSessionView = lazy(function () {
11
- return import('./views/02-CreateSessionView').then(function (mod) { return ({
11
+ return import('./views/CreateSessionView').then(function (mod) { return ({
12
12
  default: mod.CreateSessionView,
13
13
  }); });
14
14
  });
15
15
  var SigningView = lazy(function () {
16
- return import('./views/03-SigningView').then(function (mod) { return ({ default: mod.SigningView }); });
16
+ return import('./views/SigningView').then(function (mod) { return ({ default: mod.SigningView }); });
17
17
  });
18
18
  var CreateUserView = lazy(function () {
19
- return import('./views/04-CreateUserView').then(function (mod) { return ({
19
+ return import('./views/CreateUserView').then(function (mod) { return ({
20
20
  default: mod.CreateUserView,
21
21
  }); });
22
22
  });
23
23
  var SuccessView = lazy(function () {
24
- return import('./views/05-SuccessView').then(function (mod) { return ({ default: mod.SuccessView }); });
24
+ return import('./views/SuccessView').then(function (mod) { return ({ default: mod.SuccessView }); });
25
25
  });
26
26
  var NoWhitelistView = lazy(function () {
27
- return import('./views/99-NoWhitelistView').then(function (mod) { return ({
27
+ return import('./views/NoWhitelistView').then(function (mod) { return ({
28
28
  default: mod.NoWhitelistView,
29
29
  }); });
30
30
  });
31
- export function NTSFlow() {
31
+ export function NTSFlow(_a) {
32
32
  var viewMode = useN1WalletContext().viewMode;
33
33
  return (_jsxs(Suspense, { fallback: _jsx(LoadingFallback, {}), children: [viewMode === N1ModalViewMode.Connect && _jsx(ConnectView, {}), viewMode === N1ModalViewMode.CreateSession && _jsx(CreateSessionView, {}), viewMode === N1ModalViewMode.Signing && _jsx(SigningView, {}), viewMode === N1ModalViewMode.CreatingUser && _jsx(CreateUserView, {}), viewMode === N1ModalViewMode.Success && _jsx(SuccessView, {}), viewMode === N1ModalViewMode.NoWhitelist && _jsx(NoWhitelistView, {})] }));
34
34
  }
@@ -1 +1 @@
1
- {"version":3,"file":"NTSFlow.js","sourceRoot":"","sources":["../../../src/Modal/NTSFlow/NTSFlow.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,uBAAuB;AACvB,IAAM,WAAW,GAAG,IAAI,CAAC;IACvB,OAAA,MAAM,CAAC,wBAAwB,CAAC,CAAC,IAAI,CAAC,UAAC,GAAG,IAAK,OAAA,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC,EAA9B,CAA8B,CAAC;AAA9E,CAA8E,CAC/E,CAAC;AACF,IAAM,iBAAiB,GAAG,IAAI,CAAC;IAC7B,OAAA,MAAM,CAAC,8BAA8B,CAAC,CAAC,IAAI,CAAC,UAAC,GAAG,IAAK,OAAA,CAAC;QACpD,OAAO,EAAE,GAAG,CAAC,iBAAiB;KAC/B,CAAC,EAFmD,CAEnD,CAAC;AAFH,CAEG,CACJ,CAAC;AACF,IAAM,WAAW,GAAG,IAAI,CAAC;IACvB,OAAA,MAAM,CAAC,wBAAwB,CAAC,CAAC,IAAI,CAAC,UAAC,GAAG,IAAK,OAAA,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC,EAA9B,CAA8B,CAAC;AAA9E,CAA8E,CAC/E,CAAC;AACF,IAAM,cAAc,GAAG,IAAI,CAAC;IAC1B,OAAA,MAAM,CAAC,2BAA2B,CAAC,CAAC,IAAI,CAAC,UAAC,GAAG,IAAK,OAAA,CAAC;QACjD,OAAO,EAAE,GAAG,CAAC,cAAc;KAC5B,CAAC,EAFgD,CAEhD,CAAC;AAFH,CAEG,CACJ,CAAC;AACF,IAAM,WAAW,GAAG,IAAI,CAAC;IACvB,OAAA,MAAM,CAAC,wBAAwB,CAAC,CAAC,IAAI,CAAC,UAAC,GAAG,IAAK,OAAA,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC,EAA9B,CAA8B,CAAC;AAA9E,CAA8E,CAC/E,CAAC;AACF,IAAM,eAAe,GAAG,IAAI,CAAC;IAC3B,OAAA,MAAM,CAAC,4BAA4B,CAAC,CAAC,IAAI,CAAC,UAAC,GAAG,IAAK,OAAA,CAAC;QAClD,OAAO,EAAE,GAAG,CAAC,eAAe;KAC7B,CAAC,EAFiD,CAEjD,CAAC;AAFH,CAEG,CACJ,CAAC;AAEF,MAAM,UAAU,OAAO;IACb,IAAA,QAAQ,GAAK,kBAAkB,EAAE,SAAzB,CAA0B;IAE1C,OAAO,CACL,MAAC,QAAQ,IAAC,QAAQ,EAAE,KAAC,eAAe,KAAG,aACpC,QAAQ,KAAK,eAAe,CAAC,OAAO,IAAI,KAAC,WAAW,KAAG,EACvD,QAAQ,KAAK,eAAe,CAAC,aAAa,IAAI,KAAC,iBAAiB,KAAG,EACnE,QAAQ,KAAK,eAAe,CAAC,OAAO,IAAI,KAAC,WAAW,KAAG,EACvD,QAAQ,KAAK,eAAe,CAAC,YAAY,IAAI,KAAC,cAAc,KAAG,EAC/D,QAAQ,KAAK,eAAe,CAAC,OAAO,IAAI,KAAC,WAAW,KAAG,EACvD,QAAQ,KAAK,eAAe,CAAC,WAAW,IAAI,KAAC,eAAe,KAAG,IACvD,CACZ,CAAC;AACJ,CAAC","sourcesContent":["import { lazy, Suspense } from 'react';\nimport { useN1WalletContext } from '../../Provider/hooks';\nimport { N1ModalViewMode } from '../../Provider/types';\nimport { LoadingFallback } from './LoadingFallback';\n\n// Lazy load components\nconst ConnectView = lazy(() =>\n import('./views/01-ConnectView').then((mod) => ({ default: mod.ConnectView }))\n);\nconst CreateSessionView = lazy(() =>\n import('./views/02-CreateSessionView').then((mod) => ({\n default: mod.CreateSessionView,\n }))\n);\nconst SigningView = lazy(() =>\n import('./views/03-SigningView').then((mod) => ({ default: mod.SigningView }))\n);\nconst CreateUserView = lazy(() =>\n import('./views/04-CreateUserView').then((mod) => ({\n default: mod.CreateUserView,\n }))\n);\nconst SuccessView = lazy(() =>\n import('./views/05-SuccessView').then((mod) => ({ default: mod.SuccessView }))\n);\nconst NoWhitelistView = lazy(() =>\n import('./views/99-NoWhitelistView').then((mod) => ({\n default: mod.NoWhitelistView,\n }))\n);\n\nexport function NTSFlow() {\n const { viewMode } = useN1WalletContext();\n\n return (\n <Suspense fallback={<LoadingFallback />}>\n {viewMode === N1ModalViewMode.Connect && <ConnectView />}\n {viewMode === N1ModalViewMode.CreateSession && <CreateSessionView />}\n {viewMode === N1ModalViewMode.Signing && <SigningView />}\n {viewMode === N1ModalViewMode.CreatingUser && <CreateUserView />}\n {viewMode === N1ModalViewMode.Success && <SuccessView />}\n {viewMode === N1ModalViewMode.NoWhitelist && <NoWhitelistView />}\n </Suspense>\n );\n}\n"]}
1
+ {"version":3,"file":"NTSFlow.js","sourceRoot":"","sources":["../../../src/Modal/NTSFlow/NTSFlow.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,uBAAuB;AACvB,IAAM,WAAW,GAAG,IAAI,CAAC;IACvB,OAAA,MAAM,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,UAAC,GAAG,IAAK,OAAA,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC,EAA9B,CAA8B,CAAC;AAA3E,CAA2E,CAC5E,CAAC;AACF,IAAM,iBAAiB,GAAG,IAAI,CAAC;IAC7B,OAAA,MAAM,CAAC,2BAA2B,CAAC,CAAC,IAAI,CAAC,UAAC,GAAG,IAAK,OAAA,CAAC;QACjD,OAAO,EAAE,GAAG,CAAC,iBAAiB;KAC/B,CAAC,EAFgD,CAEhD,CAAC;AAFH,CAEG,CACJ,CAAC;AACF,IAAM,WAAW,GAAG,IAAI,CAAC;IACvB,OAAA,MAAM,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,UAAC,GAAG,IAAK,OAAA,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC,EAA9B,CAA8B,CAAC;AAA3E,CAA2E,CAC5E,CAAC;AACF,IAAM,cAAc,GAAG,IAAI,CAAC;IAC1B,OAAA,MAAM,CAAC,wBAAwB,CAAC,CAAC,IAAI,CAAC,UAAC,GAAG,IAAK,OAAA,CAAC;QAC9C,OAAO,EAAE,GAAG,CAAC,cAAc;KAC5B,CAAC,EAF6C,CAE7C,CAAC;AAFH,CAEG,CACJ,CAAC;AACF,IAAM,WAAW,GAAG,IAAI,CAAC;IACvB,OAAA,MAAM,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,UAAC,GAAG,IAAK,OAAA,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC,EAA9B,CAA8B,CAAC;AAA3E,CAA2E,CAC5E,CAAC;AACF,IAAM,eAAe,GAAG,IAAI,CAAC;IAC3B,OAAA,MAAM,CAAC,yBAAyB,CAAC,CAAC,IAAI,CAAC,UAAC,GAAG,IAAK,OAAA,CAAC;QAC/C,OAAO,EAAE,GAAG,CAAC,eAAe;KAC7B,CAAC,EAF8C,CAE9C,CAAC;AAFH,CAEG,CACJ,CAAC;AAMF,MAAM,UAAU,OAAO,CAAC,EAAgB;IAC9B,IAAA,QAAQ,GAAK,kBAAkB,EAAE,SAAzB,CAA0B;IAE1C,OAAO,CACL,MAAC,QAAQ,IAAC,QAAQ,EAAE,KAAC,eAAe,KAAG,aACpC,QAAQ,KAAK,eAAe,CAAC,OAAO,IAAI,KAAC,WAAW,KAAG,EACvD,QAAQ,KAAK,eAAe,CAAC,aAAa,IAAI,KAAC,iBAAiB,KAAG,EACnE,QAAQ,KAAK,eAAe,CAAC,OAAO,IAAI,KAAC,WAAW,KAAG,EACvD,QAAQ,KAAK,eAAe,CAAC,YAAY,IAAI,KAAC,cAAc,KAAG,EAC/D,QAAQ,KAAK,eAAe,CAAC,OAAO,IAAI,KAAC,WAAW,KAAG,EACvD,QAAQ,KAAK,eAAe,CAAC,WAAW,IAAI,KAAC,eAAe,KAAG,IACvD,CACZ,CAAC;AACJ,CAAC","sourcesContent":["import { lazy, Suspense } from 'react';\nimport { useN1WalletContext } from '../../Provider/hooks';\nimport { N1ModalViewMode } from '../../Provider/types';\nimport { LoadingFallback } from './LoadingFallback';\n\n// Lazy load components\nconst ConnectView = lazy(() =>\n import('./views/ConnectView').then((mod) => ({ default: mod.ConnectView }))\n);\nconst CreateSessionView = lazy(() =>\n import('./views/CreateSessionView').then((mod) => ({\n default: mod.CreateSessionView,\n }))\n);\nconst SigningView = lazy(() =>\n import('./views/SigningView').then((mod) => ({ default: mod.SigningView }))\n);\nconst CreateUserView = lazy(() =>\n import('./views/CreateUserView').then((mod) => ({\n default: mod.CreateUserView,\n }))\n);\nconst SuccessView = lazy(() =>\n import('./views/SuccessView').then((mod) => ({ default: mod.SuccessView }))\n);\nconst NoWhitelistView = lazy(() =>\n import('./views/NoWhitelistView').then((mod) => ({\n default: mod.NoWhitelistView,\n }))\n);\n\ninterface NTSFlowProps {\n // Add any props if needed\n}\n\nexport function NTSFlow({}: NTSFlowProps) {\n const { viewMode } = useN1WalletContext();\n\n return (\n <Suspense fallback={<LoadingFallback />}>\n {viewMode === N1ModalViewMode.Connect && <ConnectView />}\n {viewMode === N1ModalViewMode.CreateSession && <CreateSessionView />}\n {viewMode === N1ModalViewMode.Signing && <SigningView />}\n {viewMode === N1ModalViewMode.CreatingUser && <CreateUserView />}\n {viewMode === N1ModalViewMode.Success && <SuccessView />}\n {viewMode === N1ModalViewMode.NoWhitelist && <NoWhitelistView />}\n </Suspense>\n );\n}\n"]}
@@ -39,7 +39,6 @@ import { useState } from 'react';
39
39
  import { useN1WalletInternalContext } from '../../../Provider/hooks';
40
40
  import { ANIMATION_EASE } from '../../NordFlow/constants';
41
41
  import { ModalHeader } from '../components/ModalHeader';
42
- import { IoMdWallet } from 'react-icons/io';
43
42
  export function ConnectView() {
44
43
  var _this = this;
45
44
  var _a = useN1WalletInternalContext(), showDynamicWidget = _a.showDynamicWidget, handleError = _a.handleError;
@@ -64,6 +63,6 @@ export function ConnectView() {
64
63
  }); };
65
64
  return (_jsxs("div", { className: "bg-n1-ww-gray-50 dark:bg-n1-ww-gray-950 relative border border-n1-ww-gray-200 dark:border-n1-ww-gray-800 rounded-md transition-[max-width,transform,opacity] duration-[3000ms] ease-[cubic-bezier(0.16,1,0.3,1)] w-full max-w-sm m-4 origin-center will-change-[max-width,transform,opacity]", children: [_jsx("div", { className: "p-6 border-b border-n1-ww-gray-200 dark:border-n1-ww-gray-800", children: _jsx(ModalHeader, {}) }), _jsx("div", { className: "p-6 overflow-hidden relative", children: _jsxs("div", { className: "space-y-4", children: [_jsx("button", { onClick: handleConnect, onMouseEnter: function () { return setIsHovered('wallet'); }, onMouseLeave: function () { return setIsHovered(null); }, className: "\n group relative w-full overflow-hidden rounded-md border-2 bg-n1-ww-gray-100 dark:bg-neutral-950 py-4 text-center\n transition-all duration-300 ".concat(ANIMATION_EASE, "\n cursor-pointer border-n1-ww-gray-200 dark:border-n1-ww-gray-800 hover:border-n1-ww-gray-400 dark:hover:border-white/60\n "), style: {
66
65
  transform: isHovered === 'wallet' ? 'scale(0.99)' : 'scale(1)',
67
- }, children: _jsx("div", { className: "relative z-[200] pl-4 isolate", children: _jsxs("div", { className: "flex items-center", children: [_jsx(IoMdWallet, { className: "w-5 h-5 text-n1-ww-gray-500 dark:text-neutral-400 group-hover:text-n1-ww-gray-900 dark:group-hover:text-white transition-colors duration-300" }), _jsx("span", { className: "\n ml-2 text-base font-medium tracking-wide transition-colors duration-300 ".concat(ANIMATION_EASE, "\n text-n1-ww-gray-500 dark:text-neutral-400 group-hover:text-n1-ww-gray-900 dark:group-hover:text-white\n "), children: "Continue with Wallet" })] }) }) }), _jsx("button", { disabled: true, onMouseEnter: function () { return setIsHovered('google'); }, onMouseLeave: function () { return setIsHovered(null); }, className: "\n group relative w-full overflow-hidden rounded-md border-2 bg-n1-ww-gray-100 dark:bg-neutral-950 py-4 text-center\n transition-all duration-300 ".concat(ANIMATION_EASE, "\n cursor-not-allowed border-n1-ww-gray-200 dark:border-n1-ww-gray-800 opacity-50\n "), children: _jsx("div", { className: "relative z-[200] pl-4 isolate", children: _jsx("div", { className: "flex items-center", children: _jsx("span", { className: "text-base font-medium tracking-wide text-n1-ww-gray-500 dark:text-neutral-400", children: "Continue with Google (soon)" }) }) }) }), _jsx("button", { disabled: true, onMouseEnter: function () { return setIsHovered('email'); }, onMouseLeave: function () { return setIsHovered(null); }, className: "\n group relative w-full overflow-hidden rounded-md border-2 bg-n1-ww-gray-100 dark:bg-neutral-950 py-4 text-center\n transition-all duration-300 ".concat(ANIMATION_EASE, "\n cursor-not-allowed border-n1-ww-gray-200 dark:border-n1-ww-gray-800 opacity-50\n "), children: _jsx("div", { className: "relative z-[200] pl-4 isolate", children: _jsx("div", { className: "flex items-center", children: _jsx("span", { className: "text-base font-medium tracking-wide text-n1-ww-gray-500 dark:text-neutral-400", children: "Continue with Email (soon)" }) }) }) })] }) })] }));
66
+ }, children: _jsx("div", { className: "relative z-[200] pl-4 isolate", children: _jsx("div", { className: "flex items-center", children: _jsx("span", { className: "\n ml-2 text-base font-medium tracking-wide transition-colors duration-300 ".concat(ANIMATION_EASE, "\n text-n1-ww-gray-500 dark:text-neutral-400 group-hover:text-n1-ww-gray-900 dark:group-hover:text-white\n "), children: "Continue with Wallet" }) }) }) }), _jsx("button", { disabled: true, onMouseEnter: function () { return setIsHovered('google'); }, onMouseLeave: function () { return setIsHovered(null); }, className: "\n group relative w-full overflow-hidden rounded-md border-2 bg-n1-ww-gray-100 dark:bg-neutral-950 py-4 text-center\n transition-all duration-300 ".concat(ANIMATION_EASE, "\n cursor-not-allowed border-n1-ww-gray-200 dark:border-n1-ww-gray-800 opacity-50\n "), children: _jsx("div", { className: "relative z-[200] pl-4 isolate", children: _jsx("div", { className: "flex items-center", children: _jsx("span", { className: "text-base font-medium tracking-wide text-n1-ww-gray-500 dark:text-neutral-400", children: "Continue with Google (soon)" }) }) }) }), _jsx("button", { disabled: true, onMouseEnter: function () { return setIsHovered('email'); }, onMouseLeave: function () { return setIsHovered(null); }, className: "\n group relative w-full overflow-hidden rounded-md border-2 bg-n1-ww-gray-100 dark:bg-neutral-950 py-4 text-center\n transition-all duration-300 ".concat(ANIMATION_EASE, "\n cursor-not-allowed border-n1-ww-gray-200 dark:border-n1-ww-gray-800 opacity-50\n "), children: _jsx("div", { className: "relative z-[200] pl-4 isolate", children: _jsx("div", { className: "flex items-center", children: _jsx("span", { className: "text-base font-medium tracking-wide text-n1-ww-gray-500 dark:text-neutral-400", children: "Continue with Email (soon)" }) }) }) })] }) })] }));
68
67
  }
69
- //# sourceMappingURL=01-ConnectView.js.map
68
+ //# sourceMappingURL=ConnectView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConnectView.js","sourceRoot":"","sources":["../../../../src/Modal/NTSFlow/views/ConnectView.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAGjC,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,MAAM,UAAU,WAAW;IAA3B,iBA2FC;IA1FO,IAAA,KAAqC,0BAA0B,EAAE,EAA/D,iBAAiB,uBAAA,EAAE,WAAW,iBAAiC,CAAC;IAClE,IAAA,KAA4B,QAAQ,CAExC,IAAI,CAAC,EAFA,SAAS,QAAA,EAAE,YAAY,QAEvB,CAAC;IAER,IAAM,aAAa,GAAG;;;;;;oBAElB,qBAAM,iBAAiB,CAAC,IAAI,CAAC,EAAA;;oBAA7B,SAA6B,CAAC;;;;oBAE9B,WAAW,CAAC,OAAoB,CAAC,CAAC;;;;;SAErC,CAAC;IAEF,OAAO,CACL,eAAK,SAAS,EAAC,8RAA8R,aAC3S,cAAK,SAAS,EAAC,+DAA+D,YAC5E,KAAC,WAAW,KAAG,GACX,EAEN,cAAK,SAAS,EAAC,8BAA8B,YAC3C,eAAK,SAAS,EAAC,WAAW,aACxB,iBACE,OAAO,EAAE,aAAa,EACtB,YAAY,EAAE,cAAM,OAAA,YAAY,CAAC,QAAQ,CAAC,EAAtB,CAAsB,EAC1C,YAAY,EAAE,cAAM,OAAA,YAAY,CAAC,IAAI,CAAC,EAAlB,CAAkB,EACtC,SAAS,EAAE,sLAEqB,cAAc,yJAE7C,EACD,KAAK,EAAE;gCACL,SAAS,EAAE,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU;6BAC/D,YAED,cAAK,SAAS,EAAC,+BAA+B,YAC5C,cAAK,SAAS,EAAC,mBAAmB,YAEhC,eACE,SAAS,EAAE,sGAC+D,cAAc,gJAEzF,qCAGM,GACH,GACF,GACC,EAET,iBACE,QAAQ,QACR,YAAY,EAAE,cAAM,OAAA,YAAY,CAAC,QAAQ,CAAC,EAAtB,CAAsB,EAC1C,YAAY,EAAE,cAAM,OAAA,YAAY,CAAC,IAAI,CAAC,EAAlB,CAAkB,EACtC,SAAS,EAAE,sLAEqB,cAAc,iHAE7C,YAED,cAAK,SAAS,EAAC,+BAA+B,YAC5C,cAAK,SAAS,EAAC,mBAAmB,YAChC,eAAM,SAAS,EAAC,+EAA+E,4CAExF,GACH,GACF,GACC,EAET,iBACE,QAAQ,QACR,YAAY,EAAE,cAAM,OAAA,YAAY,CAAC,OAAO,CAAC,EAArB,CAAqB,EACzC,YAAY,EAAE,cAAM,OAAA,YAAY,CAAC,IAAI,CAAC,EAAlB,CAAkB,EACtC,SAAS,EAAE,sLAEqB,cAAc,iHAE7C,YAED,cAAK,SAAS,EAAC,+BAA+B,YAC5C,cAAK,SAAS,EAAC,mBAAmB,YAChC,eAAM,SAAS,EAAC,+EAA+E,2CAExF,GACH,GACF,GACC,IACL,GACF,IACF,CACP,CAAC;AACJ,CAAC","sourcesContent":["import { useState } from 'react';\n// import { IoMdWallet } from 'react-icons/io';\nimport { WalletError } from '../../../errors/types';\nimport { useN1WalletInternalContext } from '../../../Provider/hooks';\nimport { ANIMATION_EASE } from '../../NordFlow/constants';\nimport { ModalHeader } from '../components/ModalHeader';\n\nexport function ConnectView() {\n const { showDynamicWidget, handleError } = useN1WalletInternalContext();\n const [isHovered, setIsHovered] = useState<\n 'wallet' | 'google' | 'email' | null\n >(null);\n\n const handleConnect = async () => {\n try {\n await showDynamicWidget(true);\n } catch (error) {\n handleError(error as WalletError);\n }\n };\n\n return ( \n <div className=\"bg-n1-ww-gray-50 dark:bg-n1-ww-gray-950 relative border border-n1-ww-gray-200 dark:border-n1-ww-gray-800 rounded-md transition-[max-width,transform,opacity] duration-[3000ms] ease-[cubic-bezier(0.16,1,0.3,1)] w-full max-w-sm m-4 origin-center will-change-[max-width,transform,opacity]\">\n <div className=\"p-6 border-b border-n1-ww-gray-200 dark:border-n1-ww-gray-800\">\n <ModalHeader />\n </div>\n\n <div className=\"p-6 overflow-hidden relative\">\n <div className=\"space-y-4\">\n <button\n onClick={handleConnect}\n onMouseEnter={() => setIsHovered('wallet')}\n onMouseLeave={() => setIsHovered(null)}\n className={`\n group relative w-full overflow-hidden rounded-md border-2 bg-n1-ww-gray-100 dark:bg-neutral-950 py-4 text-center\n transition-all duration-300 ${ANIMATION_EASE}\n cursor-pointer border-n1-ww-gray-200 dark:border-n1-ww-gray-800 hover:border-n1-ww-gray-400 dark:hover:border-white/60\n `}\n style={{\n transform: isHovered === 'wallet' ? 'scale(0.99)' : 'scale(1)',\n }}\n >\n <div className=\"relative z-[200] pl-4 isolate\">\n <div className=\"flex items-center\">\n {/* <IoMdWallet className=\"w-5 h-5 text-n1-ww-gray-500 dark:text-neutral-400 group-hover:text-n1-ww-gray-900 dark:group-hover:text-white transition-colors duration-300\" /> */}\n <span\n className={`\n ml-2 text-base font-medium tracking-wide transition-colors duration-300 ${ANIMATION_EASE}\n text-n1-ww-gray-500 dark:text-neutral-400 group-hover:text-n1-ww-gray-900 dark:group-hover:text-white\n `}\n >\n Continue with Wallet\n </span>\n </div>\n </div>\n </button>\n\n <button\n disabled\n onMouseEnter={() => setIsHovered('google')}\n onMouseLeave={() => setIsHovered(null)}\n className={`\n group relative w-full overflow-hidden rounded-md border-2 bg-n1-ww-gray-100 dark:bg-neutral-950 py-4 text-center\n transition-all duration-300 ${ANIMATION_EASE}\n cursor-not-allowed border-n1-ww-gray-200 dark:border-n1-ww-gray-800 opacity-50\n `}\n >\n <div className=\"relative z-[200] pl-4 isolate\">\n <div className=\"flex items-center\">\n <span className=\"text-base font-medium tracking-wide text-n1-ww-gray-500 dark:text-neutral-400\">\n Continue with Google (soon)\n </span>\n </div>\n </div>\n </button>\n\n <button\n disabled\n onMouseEnter={() => setIsHovered('email')}\n onMouseLeave={() => setIsHovered(null)}\n className={`\n group relative w-full overflow-hidden rounded-md border-2 bg-n1-ww-gray-100 dark:bg-neutral-950 py-4 text-center\n transition-all duration-300 ${ANIMATION_EASE}\n cursor-not-allowed border-n1-ww-gray-200 dark:border-n1-ww-gray-800 opacity-50\n `}\n >\n <div className=\"relative z-[200] pl-4 isolate\">\n <div className=\"flex items-center\">\n <span className=\"text-base font-medium tracking-wide text-n1-ww-gray-500 dark:text-neutral-400\">\n Continue with Email (soon)\n </span>\n </div>\n </div>\n </button>\n </div>\n </div>\n </div>\n );\n}\n"]}
@@ -44,14 +44,14 @@ import { N1ModalViewMode } from '../../../Provider/types';
44
44
  import { logger } from '../../../utils/logger';
45
45
  import { BackButton } from '../components/BackButton';
46
46
  import { ModalHeader } from '../components/ModalHeader';
47
- import { signEd25519, NUser } from '@n1xyz/nts-sdk';
47
+ import { signEd25519 } from '@n1xyz/nts-sdk';
48
48
  export function CreateSessionView() {
49
49
  var _this = this;
50
50
  var _a = useState(false), isHovered = _a[0], setIsHovered = _a[1];
51
51
  var _b = useState(false), isPressed = _b[0], setIsPressed = _b[1];
52
52
  var _c = useState(null), NTSComponents = _c[0], setNTSComponents = _c[1];
53
53
  var _d = useState(null), keyPair = _d[0], setKeyPair = _d[1];
54
- var _e = useN1WalletInternalContext(), setViewMode = _e.setViewMode, setUsername = _e.setUsername, setStartClosingLogin = _e.setStartClosingLogin, setIsConnected = _e.setIsConnected, dynamicWallet = _e.dynamicWallet, handleError = _e.handleError, setSessionPubKey = _e.setSessionPubKey, setSignMessageWithSessionKey = _e.setSignMessageWithSessionKey, dynamicHandleLogOut = _e.dynamicHandleLogOut, setDynamicWallet = _e.setDynamicWallet, setAddress = _e.setAddress, setSignMessageWithWalletKey = _e.setSignMessageWithWalletKey, setNUser = _e.setNUser;
54
+ var _e = useN1WalletInternalContext(), setViewMode = _e.setViewMode, setUsername = _e.setUsername, setStartClosingLogin = _e.setStartClosingLogin, setIsConnected = _e.setIsConnected, dynamicWallet = _e.dynamicWallet, handleError = _e.handleError, setSessionPubKey = _e.setSessionPubKey, setSignMessageWithSessionKey = _e.setSignMessageWithSessionKey, dynamicHandleLogOut = _e.dynamicHandleLogOut, setDynamicWallet = _e.setDynamicWallet, setAddress = _e.setAddress, setSignMessageWithWalletKey = _e.setSignMessageWithWalletKey;
55
55
  var _f = useN1WalletContext(), ntsInterface = _f.ntsInterface, walletPubKey = _f.walletPubKey, address = _f.address;
56
56
  // Initialize NTS SDK and generate key pair
57
57
  useEffect(function () {
@@ -112,7 +112,7 @@ export function CreateSessionView() {
112
112
  });
113
113
  }); };
114
114
  var handleSign = function () { return __awaiter(_this, void 0, void 0, function () {
115
- var sessionKeyHex, transactionData, tx, txRes, _1, signFn_1, newUserInstance, user, error_3;
115
+ var sessionKeyHex, transactionData, tx, txRes, _1, signFn_1, user, error_3;
116
116
  var _this = this;
117
117
  return __generator(this, function (_a) {
118
118
  switch (_a.label) {
@@ -195,21 +195,6 @@ export function CreateSessionView() {
195
195
  // Initialize web session with Argus who verifies that the session is
196
196
  // registered with Core, and if so, grants you access to its user metadata db
197
197
  _a.sent();
198
- // Create and set NUser instance
199
- if (ntsInterface && walletPubKey) {
200
- newUserInstance = new NUser(ntsInterface, walletPubKey, keyPair.publicKey, // sessionKey
201
- signWithWallet, // signWithWalletKeyFn
202
- signFn_1 // signMessageWithSessionKeyFn
203
- );
204
- newUserInstance.isSessionValid = true; // Mark session as valid
205
- setNUser(newUserInstance);
206
- logger.debug('NUser instance created and set in CreateSessionView');
207
- }
208
- else {
209
- logger.warn('Could not create NUser: ntsInterface or walletPubKey missing');
210
- // Optionally, handle this case, e.g., by showing an error or preventing further action
211
- handleError(new WalletError(WalletErrorCode.CONNECTION_FAILED, 'Failed to create session', { originalError: JSON.stringify('NtsInterface or walletPubKey missing') }));
212
- }
213
198
  return [4 /*yield*/, getUser()];
214
199
  case 8:
215
200
  user = _a.sent();
@@ -234,6 +219,7 @@ export function CreateSessionView() {
234
219
  else {
235
220
  handleError(new WalletError(WalletErrorCode.CONNECTION_FAILED, 'Failed to create session', { originalError: JSON.stringify(error_3) }));
236
221
  }
222
+ setViewMode(N1ModalViewMode.CreateSession);
237
223
  return [3 /*break*/, 10];
238
224
  case 10: return [2 /*return*/];
239
225
  }
@@ -258,4 +244,4 @@ export function CreateSessionView() {
258
244
  setViewMode(N1ModalViewMode.Connect);
259
245
  } })] }) })] }));
260
246
  }
261
- //# sourceMappingURL=02-CreateSessionView.js.map
247
+ //# sourceMappingURL=CreateSessionView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CreateSessionView.js","sourceRoot":"","sources":["../../../../src/Modal/NTSFlow/views/CreateSessionView.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useEffect, useState } from 'react';\nimport { ANIMATION_EASE } from '../../NordFlow/constants';\nimport { WalletError, WalletErrorCode } from '../../../errors/types';\nimport {\n createWebSession,\n generateSessionKeyPair,\n getUser,\n storeSessionKeysInLocalStorage,\n} from '../../../Logic/utils';\nimport {\n useN1WalletContext,\n useN1WalletInternalContext,\n} from '../../../Provider/hooks';\nimport { N1ModalViewMode } from '../../../Provider/types';\nimport { logger } from '../../../utils/logger';\nimport { BackButton } from '../components/BackButton';\nimport { ModalHeader } from '../components/ModalHeader';\nimport { signEd25519 } from '@n1xyz/nts-sdk';\n\nexport function CreateSessionView() {\n const [isHovered, setIsHovered] = useState(false);\n const [isPressed, setIsPressed] = useState(false);\n\n const [NTSComponents, setNTSComponents] = useState<any>(null);\n const [keyPair, setKeyPair] = useState<{\n publicKey: Uint8Array;\n privateKey: Uint8Array;\n } | null>(null);\n\n const {\n setViewMode,\n setUsername,\n setStartClosingLogin,\n setIsConnected,\n dynamicWallet,\n handleError,\n setSessionPubKey,\n setSignMessageWithSessionKey,\n dynamicHandleLogOut,\n setDynamicWallet,\n setAddress,\n setSignMessageWithWalletKey,\n } = useN1WalletInternalContext();\n\n const { ntsInterface, walletPubKey, address } = useN1WalletContext();\n\n // Initialize NTS SDK and generate key pair\n useEffect(() => {\n const loadNTSSDK = async () => {\n try {\n const { Transaction, AdminAction, CoreApps } = await import(\n '@n1xyz/nts-sdk'\n );\n setNTSComponents({ Transaction, AdminAction, CoreApps });\n const newKeyPair = await generateSessionKeyPair();\n setKeyPair(newKeyPair);\n } catch (error) {\n handleError(\n new WalletError(\n WalletErrorCode.CONNECTION_FAILED,\n 'Failed to initialize NTS SDK',\n { originalError: error }\n )\n );\n }\n };\n loadNTSSDK();\n }, [handleError]);\n\n const signWithWallet = async (msg: string): Promise<Uint8Array> => {\n try {\n if (!dynamicWallet) {\n throw new WalletError(\n WalletErrorCode.WALLET_NOT_FOUND,\n 'Wallet not found for signing'\n );\n }\n\n if (dynamicWallet.chain === 'SOL') {\n const signature = await dynamicWallet.signMessage(msg);\n const binaryString = atob(signature);\n const signatureUint8Array = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n signatureUint8Array[i] = binaryString.charCodeAt(i);\n }\n return signatureUint8Array;\n }\n\n const sig = (await dynamicWallet.signMessage(msg)) as string;\n logger.debug('Wallet signature received', { signature: sig });\n return Uint8Array.from(Buffer.from(sig.slice(2), 'hex'));\n } catch (error) {\n throw new WalletError(\n WalletErrorCode.USER_REJECTED,\n 'Failed to sign message with wallet',\n { originalError: error }\n );\n }\n };\n\n const handleSign = async () => {\n logger.debug('handleSign');\n\n if (!NTSComponents || !keyPair) {\n logger.warn('Required components not initialized');\n return;\n }\n\n setViewMode(N1ModalViewMode.Signing);\n\n try {\n const sessionKeyHex = Buffer.from(keyPair.publicKey).toString('hex');\n logger.debug('Generated session key', { sessionKey: sessionKeyHex });\n\n // Create and sign transaction that registers the session key with Core\n const transactionData = {\n appId: NTSComponents.CoreApps.Admin,\n action: NTSComponents.AdminAction.addSessionKey,\n framework: 'ts',\n data: [\n {\n sessionKey: sessionKeyHex,\n appId: 'hub',\n },\n ],\n };\n\n setSignMessageWithWalletKey(() => signWithWallet);\n const tx = new NTSComponents.Transaction(transactionData, walletPubKey!);\n await tx.signWithWalletFunction(signWithWallet);\n try {\n const txRes = await ntsInterface.sendTransaction(\n tx,\n tx.signature!,\n walletPubKey\n );\n if (txRes.success) {\n logger.debug('txRes', txRes);\n } else {\n logger.debug('txRes', txRes);\n throw new WalletError(\n WalletErrorCode.TRANSACTION_FAILED,\n 'Transaction failed'\n );\n }\n } catch (_) {\n throw new WalletError(\n WalletErrorCode.TRANSACTION_FAILED,\n 'Transaction did not succeed'\n );\n }\n\n // Create session signing function\n const signFn = async (message: Uint8Array) => {\n try {\n return await signEd25519(message, keyPair.privateKey as Uint8Array);\n } catch (_) {\n logger.error('Error signing with Ed25519:', _);\n throw _;\n }\n };\n\n // Store session keys\n logger.debug('Storing session keys');\n storeSessionKeysInLocalStorage({\n privKey: keyPair.privateKey as Uint8Array,\n publicKey: keyPair.publicKey as Uint8Array,\n walletPublicKey: address,\n chainName: dynamicWallet!.chain,\n });\n setSessionPubKey(keyPair.publicKey);\n setSignMessageWithSessionKey(() => signFn);\n\n // Initialize web session with Argus who verifies that the session is\n // registered with Core, and if so, grants you access to its user metadata db\n await createWebSession(signFn, keyPair.publicKey, walletPubKey);\n\n // Check for existing user\n // TODO: handle case for auth.users, currently user.name is a wallet_only_users namespacing\n const user = await getUser();\n if (user?.name) {\n logger.info('Existing user found, completing login');\n setUsername(user.name);\n localStorage.setItem(`n1_${address}_username`, user.name);\n setStartClosingLogin(true);\n setIsConnected(true);\n } else {\n logger.info('No user found, transitioning to user creation');\n setViewMode(N1ModalViewMode.CreatingUser);\n }\n } catch (error: any) {\n logger.error('Session creation failed:', error);\n if (error.name === 'WalletError') {\n handleError(error);\n } else {\n handleError(\n new WalletError(\n WalletErrorCode.CONNECTION_FAILED,\n 'Failed to create session',\n { originalError: JSON.stringify(error) }\n )\n );\n }\n\n setViewMode(N1ModalViewMode.CreateSession);\n }\n };\n\n return (\n <div className=\"bg-n1-ww-gray-50 dark:bg-n1-ww-gray-950 relative border border-n1-ww-gray-200 dark:border-n1-ww-gray-800 rounded-md transition-[max-width,transform,opacity] duration-[3000ms] ease-[cubic-bezier(0.16,1,0.3,1)] w-full max-w-sm m-4 origin-center will-change-[max-width,transform,opacity]\">\n <div className=\"p-6 border-b border-n1-ww-gray-200 dark:border-n1-ww-gray-800\">\n <ModalHeader />\n </div>\n\n <div className=\"p-6 overflow-hidden relative\">\n <div className=\"space-y-4\">\n <div className=\"text-center\">\n <h3 className=\"text-xl font-medium text-n1-ww-gray-900 dark:text-white mb-2\">\n Create Session\n </h3>\n <p className=\"text-n1-ww-gray-500 dark:text-n1-ww-gray-400\">\n Please authenticate to create a new session.\n </p>\n </div>\n\n <button\n onClick={handleSign}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => {\n setIsHovered(false);\n setIsPressed(false);\n }}\n onMouseDown={() => setIsPressed(true)}\n onMouseUp={() => setIsPressed(false)}\n disabled={!NTSComponents || !keyPair}\n className={`\n group relative w-full overflow-hidden rounded-md border-2 bg-n1-ww-gray-100 dark:bg-neutral-950 py-4 text-left\n transition-all duration-300 ${ANIMATION_EASE}\n ${!NTSComponents || !keyPair\n ? 'cursor-not-allowed border-n1-ww-gray-200 dark:border-n1-ww-gray-800 opacity-50'\n : 'cursor-pointer border-n1-ww-gray-200 dark:border-n1-ww-gray-800 hover:border-n1-ww-gray-400 dark:hover:border-white/60'\n }\n `}\n style={{\n transform:\n isPressed && (!NTSComponents || !keyPair)\n ? 'scale(0.98)'\n : isHovered && (!NTSComponents || !keyPair)\n ? 'scale(0.99)'\n : 'scale(1)',\n }}\n >\n <div className=\"relative z-[200] pl-4 isolate\">\n <div className=\"flex items-center justify-start\">\n <span\n className={`\n text-base font-medium tracking-wide transition-colors duration-300 ${ANIMATION_EASE}\n text-n1-ww-gray-500 dark:text-neutral-400 group-hover:text-n1-ww-gray-900 dark:group-hover:text-white\n `}\n >\n Authenticate\n </span>\n </div>\n </div>\n </button>\n\n <BackButton\n onClick={() => {\n logger.debug('BackButton clicked');\n setDynamicWallet(null);\n setAddress('');\n dynamicHandleLogOut();\n setViewMode(N1ModalViewMode.Connect);\n }}\n />\n </div>\n </div>\n </div>\n );\n}\n"]}
@@ -103,4 +103,4 @@ export function CreateUserView() {
103
103
  }
104
104
  return (_jsxs("div", { className: "rounded-[25px] shadow-lg p-5 m-4 bg-white dark:bg-neutral-900 text-neutral-900 dark:text-stone-200", children: [_jsx(ModalHeader, {}), _jsx("div", { className: "flex flex-col items-center justify-center", children: _jsxs("div", { className: "flex mb-2 justify-center sm:justify-between w-full flex-wrap max-w-screen", children: [_jsxs("div", { className: "flex flex-col", children: [_jsx("div", { className: "w-80 h-80 sm:w-48 sm:h-48 rounded-[25px] flex items-center justify-center relative bg-neutral-100 dark:bg-neutral-800", children: _jsx("div", { className: "overflow-hidden rounded-lg w-80 h-80 sm:w-48 sm:h-48 p-2", children: _jsx(BlockiesSvg, { address: address, className: "drop-shadow w-full h-full rounded-[20px]" }) }) }), _jsx("div", { className: "my-4 w-80 sm:w-48 p-2 border rounded-[15px] text-sm duration-300 bg-neutral-100 dark:bg-neutral-800 text-neutral-500 dark:text-neutral-400 border-neutral-200 dark:border-neutral-700", children: "You are creating an account that you can use across all N1." })] }), _jsxs("div", { className: "w-80 flex flex-col items-center sm:items-end justify-between h-full my-2", children: [_jsxs("div", { className: "flex flex-col relative bg-neutral-100 dark:bg-neutral-800 border-neutral-200 dark:border-neutral-700 rounded-[15px] border w-72", children: [_jsx("input", { type: "text", id: "username", placeholder: "Enter your username", value: usernameLocal, onChange: function (e) { return setUsernameLocalLocal(e.target.value); }, className: "p-3 py-4 outline-none focus:ring focus:ring-orange-200 bg-neutral-100 dark:bg-neutral-800 text-neutral-900 dark:text-stone-200 rounded-[15px] border ".concat(error ? 'border-n1-main' : 'border-neutral-200 dark:border-neutral-700') }), _jsxs("div", { className: "p-2 flex w-full justify-between text-xs text-neutral-500 dark:text-neutral-400", children: [_jsx("span", { className: "font-bold", children: "Username:" }), " ", usernameLocal] }), _jsxs("div", { className: "px-2 pb-2 flex w-full justify-between text-xs text-neutral-500 dark:text-neutral-400", children: [_jsx("span", { className: "font-bold", children: "Wallet:" }), ' ', address.substring(0, 9) + '...' + address.slice(-3)] })] }), error && (_jsx("div", { className: "mt-2 w-72 p-2 text-n1-ww-main bg-n1-ww-main/5 dark:bg-n1-ww-main/20 border border-n1-ww-main/40 rounded-[15px] text-center", children: error })), _jsx("button", { className: "my-4 w-72 py-4 border rounded-[15px] text-white bg-neutral-900 dark:bg-white dark:text-black cursor-pointer duration-300 hover:opacity-80", onClick: handleCreate, children: "Create" }), _jsx("div", { className: "w-72", children: _jsx("button", { className: "w-full py-4 border rounded-[18px] cursor-pointer duration-300 hover:opacity-80 bg-neutral-100 dark:bg-neutral-800 text-neutral-500 dark:text-neutral-400 border-neutral-200 dark:border-neutral-700 hover:opacity-80", onClick: close, children: "Close" }) })] })] }) })] }));
105
105
  }
106
- //# sourceMappingURL=04-CreateUserView.js.map
106
+ //# sourceMappingURL=CreateUserView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CreateUserView.js","sourceRoot":"","sources":["../../../../src/Modal/NTSFlow/views/CreateUserView.tsx"],"names":[],"mappings":"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","sourcesContent":["import BlockiesSvg from 'blockies-react-svg';\nimport { useState } from 'react';\nimport { getPseudoName } from '../../../Logic/getPseudoName';\nimport { createUser } from '../../../Logic/utils';\nimport {\n useN1WalletContext,\n useN1WalletInternalContext,\n} from '../../../Provider/hooks';\nimport { N1ModalViewMode } from '../../../Provider/types';\nimport { WalletError, WalletErrorCode } from '../../../errors/types';\nimport { logger } from '../../../utils/logger';\nimport { ModalHeader } from '../components/ModalHeader';\n\nexport function CreateUserView() {\n const {\n setViewMode,\n setIsConnected,\n setUsername,\n setStartClosingLogin,\n handleError,\n } = useN1WalletInternalContext();\n const { address } = useN1WalletContext();\n\n const close = () => {\n setStartClosingLogin(true);\n };\n\n const [usernameLocal, setUsernameLocalLocal] = useState(\n getPseudoName(address)\n );\n const [error, setError] = useState('');\n\n function validateUsername() {\n if (!usernameLocal) {\n setError('Username cannot be blank.');\n return false;\n }\n if (!/^[a-zA-Z0-9-]+$/.test(usernameLocal)) {\n setError('Username must be alphanumeric.');\n return false;\n }\n setError('');\n return true;\n }\n\n async function handleCreate() {\n logger.debug('Creating User');\n\n try {\n if (!validateUsername()) {\n return;\n }\n\n await createUser(usernameLocal);\n setViewMode(N1ModalViewMode.Success);\n setIsConnected(true);\n setUsername(usernameLocal);\n localStorage.setItem('n1_' + address + '_username', usernameLocal);\n } catch (error) {\n if (error instanceof WalletError) {\n handleError(error);\n } else {\n handleError(\n new WalletError(WalletErrorCode.UNKNOWN, 'Failed to create user', {\n originalError: error,\n })\n );\n }\n }\n }\n\n return (\n <div className=\"rounded-[25px] shadow-lg p-5 m-4 bg-white dark:bg-neutral-900 text-neutral-900 dark:text-stone-200\">\n <ModalHeader />\n <div className=\"flex flex-col items-center justify-center\">\n <div className=\"flex mb-2 justify-center sm:justify-between w-full flex-wrap max-w-screen\">\n <div className=\"flex flex-col\">\n <div className=\"w-80 h-80 sm:w-48 sm:h-48 rounded-[25px] flex items-center justify-center relative bg-neutral-100 dark:bg-neutral-800\">\n <div className=\"overflow-hidden rounded-lg w-80 h-80 sm:w-48 sm:h-48 p-2\">\n <BlockiesSvg\n address={address}\n className=\"drop-shadow w-full h-full rounded-[20px]\"\n />\n </div>\n </div>\n <div className=\"my-4 w-80 sm:w-48 p-2 border rounded-[15px] text-sm duration-300 bg-neutral-100 dark:bg-neutral-800 text-neutral-500 dark:text-neutral-400 border-neutral-200 dark:border-neutral-700\">\n You are creating an account that you can use across all N1.\n </div>\n </div>\n\n {/* Username Input */}\n <div className=\"w-80 flex flex-col items-center sm:items-end justify-between h-full my-2\">\n <div className=\"flex flex-col relative bg-neutral-100 dark:bg-neutral-800 border-neutral-200 dark:border-neutral-700 rounded-[15px] border w-72\">\n <input\n type=\"text\"\n id=\"username\"\n placeholder=\"Enter your username\"\n value={usernameLocal}\n onChange={(e) => setUsernameLocalLocal(e.target.value)}\n className={`p-3 py-4 outline-none focus:ring focus:ring-orange-200 bg-neutral-100 dark:bg-neutral-800 text-neutral-900 dark:text-stone-200 rounded-[15px] border ${error ? 'border-n1-main' : 'border-neutral-200 dark:border-neutral-700'}`}\n />\n <div className=\"p-2 flex w-full justify-between text-xs text-neutral-500 dark:text-neutral-400\">\n <span className=\"font-bold\">Username:</span> {usernameLocal}\n </div>\n <div className=\"px-2 pb-2 flex w-full justify-between text-xs text-neutral-500 dark:text-neutral-400\">\n <span className=\"font-bold\">Wallet:</span>{' '}\n {address.substring(0, 9) + '...' + address.slice(-3)}\n </div>\n </div>\n {error && (\n <div className=\"mt-2 w-72 p-2 text-n1-ww-main bg-n1-ww-main/5 dark:bg-n1-ww-main/20 border border-n1-ww-main/40 rounded-[15px] text-center\">\n {error}\n </div>\n )}\n\n <button\n className=\"my-4 w-72 py-4 border rounded-[15px] text-white bg-neutral-900 dark:bg-white dark:text-black cursor-pointer duration-300 hover:opacity-80\"\n onClick={handleCreate}\n >\n Create\n </button>\n <div className=\"w-72\">\n <button\n className=\"w-full py-4 border rounded-[18px] cursor-pointer duration-300 hover:opacity-80 bg-neutral-100 dark:bg-neutral-800 text-neutral-500 dark:text-neutral-400 border-neutral-200 dark:border-neutral-700 hover:opacity-80\"\n onClick={close}\n >\n Close\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n}\n"]}
@@ -40,4 +40,4 @@ export function NoWhitelistView() {
40
40
  : 'scale(1)',
41
41
  }, children: _jsx("div", { className: "relative z-[200] pl-4 isolate", children: _jsx("div", { className: "flex items-center justify-center", children: _jsx("span", { className: "\n text-base font-medium tracking-wide transition-colors duration-300 ".concat(ANIMATION_EASE, "\n text-n1-ww-gray-500 dark:text-neutral-400 group-hover:text-n1-ww-gray-900 dark:group-hover:text-white\n "), children: "Disconnect" }) }) }) })] }) })] }));
42
42
  }
43
- //# sourceMappingURL=99-NoWhitelistView.js.map
43
+ //# sourceMappingURL=NoWhitelistView.js.map