@aurum-sdk/core 0.2.0 → 0.2.2-canary.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.
@@ -91,8 +91,7 @@ var WALLET_PRIORITY = [
91
91
  _types.WalletId.WalletConnect,
92
92
  _types.WalletId.Brave,
93
93
  _types.WalletId.Rabby,
94
- _types.WalletId.CoinbaseWallet,
95
- _types.WalletId.Ledger
94
+ _types.WalletId.CoinbaseWallet
96
95
  ];
97
96
  function sortWallets(wallets, options = {}) {
98
97
  const { filterHidden = true } = options;
@@ -119,335 +118,6 @@ function sortWallets(wallets, options = {}) {
119
118
  return result;
120
119
  }
121
120
 
122
- // src/services/sentry.ts
123
- var _browser = require('@sentry/browser'); var Sentry = _interopRequireWildcard(_browser);
124
- var initialized = false;
125
- var telemetryEnabled = true;
126
- function getEnvironment() {
127
- if (typeof window !== "undefined") {
128
- const hostname = window.location.hostname;
129
- if (hostname === "localhost" || hostname === "127.0.0.1") {
130
- return "development";
131
- }
132
- }
133
- return "production";
134
- }
135
- function initSentry(enabled = true) {
136
- telemetryEnabled = enabled;
137
- if (initialized || !telemetryEnabled || false) return;
138
- initialized = true;
139
- Sentry.init({
140
- dsn: "https://0bb16fd7057ac7b45ae0ab416cdbea8b@o4505953815494656.ingest.us.sentry.io/4509747448184832",
141
- environment: getEnvironment(),
142
- release: `@aurum-sdk/core@${"0.2.0"}`,
143
- sendDefaultPii: false,
144
- enableLogs: true
145
- });
146
- }
147
- function getUrl() {
148
- if (typeof window !== "undefined") {
149
- return window.location.href;
150
- }
151
- return void 0;
152
- }
153
- var sentryLogger = {
154
- info: (message, attributes) => {
155
- if (telemetryEnabled) Sentry.logger.info(message, { url: getUrl(), ...attributes });
156
- },
157
- warn: (message, attributes) => {
158
- if (telemetryEnabled) Sentry.logger.warn(message, { url: getUrl(), ...attributes });
159
- },
160
- error: (message, attributes) => {
161
- if (telemetryEnabled) Sentry.logger.error(message, { url: getUrl(), ...attributes });
162
- }
163
- };
164
-
165
- // src/wallet-adapters/AppKitAdapter.ts
166
- var _logos = require('@aurum-sdk/logos');
167
-
168
-
169
- // src/utils/isConfigError.ts
170
- var isConfigError = (error) => {
171
- const name = _optionalChain([error, 'optionalAccess', _2 => _2.name]);
172
- return name === "ConfigError";
173
- };
174
- var createConfigError = (adapterName) => {
175
- const error = new Error(`Missing required project ID for ${adapterName}`);
176
- error.name = "ConfigError";
177
- return error;
178
- };
179
-
180
- // src/wallet-adapters/AppKitAdapter.ts
181
- var AppKitAdapter = class {
182
- constructor(config) {
183
- this.id = _types.WalletId.WalletConnect;
184
- this.name = _types.WalletName.WalletConnect;
185
- this.icon = _nullishCoalesce(_logos.getLogoDataUri.call(void 0, _types.WalletId.WalletConnect, "brand"), () => ( ""));
186
- this.hide = true;
187
- this.downloadUrl = null;
188
- this.wcDeepLinkUrl = null;
189
- this.modal = null;
190
- this.wagmiAdapter = null;
191
- this.provider = null;
192
- this.address = null;
193
- this.accountsChangedCallback = null;
194
- this.unsubscribeFunctions = [];
195
- this.initPromise = null;
196
- this.config = {
197
- projectId: config.projectId,
198
- appName: config.appName,
199
- modalZIndex: config.modalZIndex,
200
- theme: config.theme
201
- };
202
- }
203
- async ensureInitialized() {
204
- if (this.modal) return;
205
- if (!this.initPromise) {
206
- this.initPromise = this.initializeAppKit();
207
- }
208
- await this.initPromise;
209
- }
210
- async initializeAppKit() {
211
- if (typeof window === "undefined") return;
212
- const [{ createAppKit }, { WagmiAdapter }, { mainnet }] = await Promise.all([
213
- Promise.resolve().then(() => _interopRequireWildcard(require("@reown/appkit"))),
214
- Promise.resolve().then(() => _interopRequireWildcard(require("@reown/appkit-adapter-wagmi"))),
215
- Promise.resolve().then(() => _interopRequireWildcard(require("@reown/appkit/networks")))
216
- ]);
217
- const networks = [mainnet];
218
- this.wagmiAdapter = new WagmiAdapter({
219
- projectId: this.config.projectId,
220
- networks,
221
- ssr: true
222
- });
223
- this.modal = createAppKit({
224
- adapters: [this.wagmiAdapter],
225
- networks,
226
- projectId: this.config.projectId,
227
- metadata: {
228
- name: this.config.appName,
229
- description: this.config.appName,
230
- url: window.location.origin,
231
- icons: []
232
- },
233
- allowUnsupportedChain: true,
234
- themeMode: this.config.theme,
235
- themeVariables: {
236
- "--apkt-z-index": this.config.modalZIndex + 1
237
- }
238
- });
239
- this.setupEventListeners();
240
- }
241
- setupEventListeners() {
242
- if (!this.modal) return;
243
- const unsubscribeProviders = this.modal.subscribeProviders((state) => {
244
- const eip155Provider = state["eip155"];
245
- this.provider = eip155Provider || null;
246
- if (!eip155Provider) {
247
- this.address = null;
248
- }
249
- });
250
- this.unsubscribeFunctions.push(unsubscribeProviders);
251
- }
252
- syncAddressFromWagmi() {
253
- if (!_optionalChain([this, 'access', _3 => _3.wagmiAdapter, 'optionalAccess', _4 => _4.wagmiConfig])) return;
254
- const { state } = this.wagmiAdapter.wagmiConfig;
255
- if (state.current && state.connections) {
256
- const connection = state.connections.get(state.current);
257
- if (_optionalChain([connection, 'optionalAccess', _5 => _5.accounts, 'optionalAccess', _6 => _6[0]])) {
258
- this.address = connection.accounts[0];
259
- }
260
- }
261
- }
262
- async syncProviderFromModal() {
263
- if (!this.modal) return;
264
- try {
265
- const getProvidersFn = this.modal.getProviders;
266
- if (typeof getProvidersFn === "function") {
267
- const providers = getProvidersFn.call(this.modal);
268
- const eip155Provider = _optionalChain([providers, 'optionalAccess', _7 => _7["eip155"]]);
269
- if (eip155Provider) {
270
- this.provider = eip155Provider;
271
- return;
272
- }
273
- }
274
- if (_optionalChain([this, 'access', _8 => _8.wagmiAdapter, 'optionalAccess', _9 => _9.wagmiConfig])) {
275
- const { state } = this.wagmiAdapter.wagmiConfig;
276
- if (state.current && state.connections) {
277
- const connection = state.connections.get(state.current);
278
- const connector = _optionalChain([connection, 'optionalAccess', _10 => _10.connector]);
279
- if (connector && typeof connector.getProvider === "function") {
280
- try {
281
- const provider = await connector.getProvider();
282
- if (provider) {
283
- this.provider = provider;
284
- }
285
- } catch (error) {
286
- sentryLogger.warn("Failed to get provider from wagmi connector", { error });
287
- }
288
- }
289
- }
290
- }
291
- } catch (error) {
292
- sentryLogger.warn("Failed to get provider from WalletConnect modal", { error });
293
- }
294
- }
295
- isInstalled() {
296
- return true;
297
- }
298
- async connect() {
299
- if (!this.config.projectId) {
300
- throw createConfigError("WalletConnect");
301
- }
302
- await this.ensureInitialized();
303
- if (!this.modal) {
304
- sentryLogger.error("WalletConnect modal is not available");
305
- throw new Error("WalletConnect modal is not available");
306
- }
307
- const existingAddress = this.modal.getAddress();
308
- if (this.modal.getIsConnectedState() && existingAddress) {
309
- await this.syncProviderFromModal();
310
- if (this.provider) {
311
- this.address = existingAddress;
312
- return {
313
- address: existingAddress,
314
- provider: this.provider,
315
- walletId: this.id
316
- };
317
- }
318
- await this.disconnect();
319
- }
320
- this.modal.open({ view: "AllWallets" });
321
- return await this.waitForConnection();
322
- }
323
- waitForConnection(timeout = 6e4) {
324
- return new Promise((resolve, reject) => {
325
- const startTime = Date.now();
326
- let unsubscribeState = null;
327
- let isResolved = false;
328
- const cleanup = () => {
329
- _optionalChain([unsubscribeState, 'optionalCall', _11 => _11()]);
330
- };
331
- const checkConnection = async () => {
332
- if (isResolved) return true;
333
- this.syncAddressFromWagmi();
334
- if (this.address && !this.provider) {
335
- await this.syncProviderFromModal();
336
- }
337
- if (this.provider && this.address) {
338
- try {
339
- const accounts = await this.provider.request({ method: "eth_accounts" });
340
- if (accounts && accounts.length > 0) {
341
- isResolved = true;
342
- cleanup();
343
- _optionalChain([this, 'access', _12 => _12.modal, 'optionalAccess', _13 => _13.close, 'call', _14 => _14()]);
344
- resolve({
345
- address: this.address,
346
- provider: this.provider,
347
- walletId: this.id
348
- });
349
- return true;
350
- }
351
- return false;
352
- } catch (e2) {
353
- return false;
354
- }
355
- }
356
- return false;
357
- };
358
- unsubscribeState = this.modal.subscribeState(async (state) => {
359
- if (await checkConnection()) return;
360
- if (state.open === false && !this.address && !isResolved) {
361
- cleanup();
362
- reject(new Error("Connection rejected by user"));
363
- }
364
- });
365
- const pollTimeout = async () => {
366
- if (await checkConnection()) return;
367
- if (Date.now() - startTime > timeout) {
368
- cleanup();
369
- reject(new Error("Connection timeout"));
370
- return;
371
- }
372
- setTimeout(pollTimeout, 500);
373
- };
374
- pollTimeout();
375
- });
376
- }
377
- async tryRestoreConnection() {
378
- await this.ensureInitialized();
379
- if (!this.modal || !this.wagmiAdapter) return null;
380
- try {
381
- await new Promise((resolve) => setTimeout(resolve, 1e3));
382
- const wagmiConfig = this.wagmiAdapter.wagmiConfig;
383
- if (_optionalChain([wagmiConfig, 'optionalAccess', _15 => _15.state, 'optionalAccess', _16 => _16.current]) && wagmiConfig.state.connections) {
384
- const connection = wagmiConfig.state.connections.get(wagmiConfig.state.current);
385
- if (_optionalChain([connection, 'optionalAccess', _17 => _17.accounts, 'optionalAccess', _18 => _18[0]])) {
386
- this.address = connection.accounts[0];
387
- if (this.provider && this.address) {
388
- return {
389
- address: this.address,
390
- provider: this.provider,
391
- walletId: this.id
392
- };
393
- }
394
- }
395
- }
396
- return null;
397
- } catch (e3) {
398
- return null;
399
- }
400
- }
401
- async disconnect() {
402
- if (!this.modal) {
403
- this.address = null;
404
- this.provider = null;
405
- return;
406
- }
407
- await this.modal.disconnect("eip155");
408
- const timeout = Date.now() + 2e3;
409
- while (Date.now() < timeout && (this.modal.getIsConnectedState() || this.modal.getAddress())) {
410
- await new Promise((r) => setTimeout(r, 100));
411
- }
412
- this.address = null;
413
- this.provider = null;
414
- }
415
- getProvider() {
416
- return this.provider;
417
- }
418
- onAccountsChanged(callback) {
419
- if (!_optionalChain([this, 'access', _19 => _19.provider, 'optionalAccess', _20 => _20.on])) return;
420
- if (this.accountsChangedCallback) {
421
- _optionalChain([this, 'access', _21 => _21.provider, 'access', _22 => _22.removeListener, 'optionalCall', _23 => _23("accountsChanged", this.accountsChangedCallback)]);
422
- }
423
- this.accountsChangedCallback = (accounts) => {
424
- this.address = accounts[0] || null;
425
- callback(accounts);
426
- };
427
- this.provider.on("accountsChanged", this.accountsChangedCallback);
428
- }
429
- removeListeners() {
430
- if (_optionalChain([this, 'access', _24 => _24.provider, 'optionalAccess', _25 => _25.removeListener]) && this.accountsChangedCallback) {
431
- this.provider.removeListener("accountsChanged", this.accountsChangedCallback);
432
- this.accountsChangedCallback = null;
433
- }
434
- this.unsubscribeFunctions.forEach((unsub) => unsub());
435
- this.unsubscribeFunctions = [];
436
- }
437
- };
438
- /** Internal identifier for distinguishing from WalletConnectAdapter */
439
- AppKitAdapter.INTERNAL_ID = "appkit-modal";
440
-
441
- // src/utils/platform/isMobile.ts
442
- var _mobiledetect = require('mobile-detect'); var _mobiledetect2 = _interopRequireDefault(_mobiledetect);
443
- function isMobile() {
444
- if (typeof window === "undefined" || typeof navigator === "undefined") {
445
- return false;
446
- }
447
- const md = new (0, _mobiledetect2.default)(window.navigator.userAgent);
448
- return md.mobile() !== null || md.tablet() !== null;
449
- }
450
-
451
121
  // src/contexts/NavigationContext.tsx
452
122
 
453
123
 
@@ -653,7 +323,7 @@ var Divider = ({ children }) => {
653
323
  var FOCUSABLE_SELECTOR = 'button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])';
654
324
  function getDeepActiveElement() {
655
325
  let active = document.activeElement;
656
- while (_optionalChain([active, 'optionalAccess', _26 => _26.shadowRoot, 'optionalAccess', _27 => _27.activeElement])) {
326
+ while (_optionalChain([active, 'optionalAccess', _2 => _2.shadowRoot, 'optionalAccess', _3 => _3.activeElement])) {
657
327
  active = active.shadowRoot.activeElement;
658
328
  }
659
329
  return active;
@@ -662,7 +332,7 @@ function useFocusTrap(containerRef, { isActive, onEscape, refocusKey }) {
662
332
  _react.useEffect.call(void 0, () => {
663
333
  if (isActive && containerRef.current) {
664
334
  const timer = setTimeout(() => {
665
- _optionalChain([containerRef, 'access', _28 => _28.current, 'optionalAccess', _29 => _29.focus, 'call', _30 => _30()]);
335
+ _optionalChain([containerRef, 'access', _4 => _4.current, 'optionalAccess', _5 => _5.focus, 'call', _6 => _6()]);
666
336
  }, 50);
667
337
  return () => clearTimeout(timer);
668
338
  }
@@ -671,7 +341,7 @@ function useFocusTrap(containerRef, { isActive, onEscape, refocusKey }) {
671
341
  if (!isActive) return;
672
342
  const handleKeyDown = (e) => {
673
343
  if (e.key === "Escape") {
674
- _optionalChain([onEscape, 'optionalCall', _31 => _31()]);
344
+ _optionalChain([onEscape, 'optionalCall', _7 => _7()]);
675
345
  return;
676
346
  }
677
347
  if (e.key !== "Tab" || !containerRef.current) return;
@@ -873,7 +543,7 @@ var Modal = ({
873
543
  if (animState !== "entering") return;
874
544
  const rafId = requestAnimationFrame(() => {
875
545
  setAnimState("open");
876
- _optionalChain([dialogRef, 'access', _32 => _32.current, 'optionalAccess', _33 => _33.focus, 'call', _34 => _34()]);
546
+ _optionalChain([dialogRef, 'access', _8 => _8.current, 'optionalAccess', _9 => _9.focus, 'call', _10 => _10()]);
877
547
  });
878
548
  return () => cancelAnimationFrame(rafId);
879
549
  }, [animState]);
@@ -1055,6 +725,62 @@ var ModalHeader = ({ leftAction, rightAction, title }) => {
1055
725
  // src/contexts/EmailAuthContext.tsx
1056
726
 
1057
727
 
728
+ // src/services/sentry.ts
729
+ var _browser = require('@sentry/browser'); var Sentry = _interopRequireWildcard(_browser);
730
+ var initialized = false;
731
+ var telemetryEnabled = true;
732
+ function getEnvironment() {
733
+ if (typeof window !== "undefined") {
734
+ const hostname = window.location.hostname;
735
+ if (hostname === "localhost" || hostname === "127.0.0.1") {
736
+ return "development";
737
+ }
738
+ }
739
+ return "production";
740
+ }
741
+ function initSentry(enabled = true) {
742
+ telemetryEnabled = enabled;
743
+ if (initialized || !telemetryEnabled || false) return;
744
+ initialized = true;
745
+ Sentry.init({
746
+ dsn: "https://0bb16fd7057ac7b45ae0ab416cdbea8b@o4505953815494656.ingest.us.sentry.io/4509747448184832",
747
+ environment: getEnvironment(),
748
+ release: `@aurum-sdk/core@${"0.2.2-canary.0"}`,
749
+ sendDefaultPii: false,
750
+ enableLogs: true
751
+ });
752
+ }
753
+ function getUrl() {
754
+ if (typeof window !== "undefined") {
755
+ return window.location.href;
756
+ }
757
+ return void 0;
758
+ }
759
+ var sentryLogger = {
760
+ info: (message, attributes) => {
761
+ if (telemetryEnabled) Sentry.logger.info(message, { url: getUrl(), ...attributes });
762
+ },
763
+ warn: (message, attributes) => {
764
+ if (telemetryEnabled) Sentry.logger.warn(message, { url: getUrl(), ...attributes });
765
+ },
766
+ error: (message, attributes) => {
767
+ if (telemetryEnabled) Sentry.logger.error(message, { url: getUrl(), ...attributes });
768
+ }
769
+ };
770
+
771
+ // src/utils/isConfigError.ts
772
+ var isConfigError = (error) => {
773
+ const name = _optionalChain([error, 'optionalAccess', _11 => _11.name]);
774
+ return name === "ConfigError";
775
+ };
776
+ var createConfigError = (adapterName) => {
777
+ const error = new Error(`Missing required project ID for ${adapterName}`);
778
+ error.name = "ConfigError";
779
+ return error;
780
+ };
781
+
782
+ // src/contexts/EmailAuthContext.tsx
783
+
1058
784
  var EmailAuthContext = _react.createContext.call(void 0, null);
1059
785
  var useEmailAuth = () => {
1060
786
  const context = _react.useContext.call(void 0, EmailAuthContext);
@@ -1115,14 +841,14 @@ var EmailAuthProvider = ({
1115
841
  await attemptEmailAuth(email, emailAdapter);
1116
842
  } catch (error2) {
1117
843
  setEmailAuthState((prev) => ({ ...prev, step: "email" }));
1118
- const errorMessage = _nullishCoalesce(_optionalChain([error2, 'access', _35 => _35.message, 'optionalAccess', _36 => _36.toLowerCase, 'call', _37 => _37()]), () => ( ""));
844
+ const errorMessage = _nullishCoalesce(_optionalChain([error2, 'access', _12 => _12.message, 'optionalAccess', _13 => _13.toLowerCase, 'call', _14 => _14()]), () => ( ""));
1119
845
  const isAlreadyAuthenticated = errorMessage.includes("user is already authenticated");
1120
846
  if (isConfigError(error2)) {
1121
847
  navigateTo(PAGE_IDS.CONFIG_ERROR);
1122
848
  } else if (isAlreadyAuthenticated) {
1123
849
  try {
1124
850
  await handleAlreadyAuthenticatedError(email, emailAdapter);
1125
- } catch (e4) {
851
+ } catch (e2) {
1126
852
  setError("Failed to send email verification");
1127
853
  }
1128
854
  } else {
@@ -1152,12 +878,12 @@ var EmailAuthProvider = ({
1152
878
  setTimeout(() => {
1153
879
  onConnect({
1154
880
  walletId: emailAdapter.id,
1155
- address: _nullishCoalesce(_optionalChain([verifyResult, 'access', _38 => _38.user, 'optionalAccess', _39 => _39.evmAccounts, 'optionalAccess', _40 => _40[0]]), () => ( "")),
881
+ address: _nullishCoalesce(_optionalChain([verifyResult, 'access', _15 => _15.user, 'optionalAccess', _16 => _16.evmAccounts, 'optionalAccess', _17 => _17[0]]), () => ( "")),
1156
882
  provider: emailAdapter.getProvider(),
1157
883
  email: emailAuthState.email
1158
884
  });
1159
885
  }, 1500);
1160
- } catch (e5) {
886
+ } catch (e3) {
1161
887
  setError("Invalid or expired code");
1162
888
  setEmailAuthState((prev) => ({ ...prev, step: "otp" }));
1163
889
  }
@@ -1569,13 +1295,17 @@ var ConnectionIconsRow = ({
1569
1295
 
1570
1296
  // src/components/ConnectModal/ConnectionStatus/ConnectionStatusBase.tsx
1571
1297
 
1298
+ var ERROR_CODE = {
1299
+ USER_REJECTED: 4001,
1300
+ REQUEST_PENDING: -32002
1301
+ };
1572
1302
  var ConnectionStatusBase = ({
1573
1303
  title,
1574
1304
  pendingHeaderText,
1575
1305
  pendingSubContent,
1576
1306
  extraContent
1577
1307
  }) => {
1578
- const { selectedWallet, error, success, goBackToHome, retryConnection } = useConnectModal();
1308
+ const { selectedWallet, error, errorCode, success, goBackToHome, retryConnection } = useConnectModal();
1579
1309
  const { onDismiss, brandConfig } = useWidgetContext();
1580
1310
  const [shouldShake, setShouldShake] = _react.useState.call(void 0, false);
1581
1311
  _react.useEffect.call(void 0, () => {
@@ -1592,12 +1322,15 @@ var ConnectionStatusBase = ({
1592
1322
  }
1593
1323
  const getHeaderVariant = () => {
1594
1324
  if (success) return "success";
1595
- if (error) return "error";
1325
+ if (error && errorCode !== ERROR_CODE.REQUEST_PENDING) return "error";
1596
1326
  return "primary";
1597
1327
  };
1598
1328
  const getHeaderText = () => {
1599
1329
  if (success) return "";
1600
- if (error) return "Request Rejected";
1330
+ if (error) {
1331
+ if (errorCode === ERROR_CODE.REQUEST_PENDING) return "Request Pending";
1332
+ return "Request Rejected";
1333
+ }
1601
1334
  return pendingHeaderText;
1602
1335
  };
1603
1336
  const renderSubContent = () => {
@@ -1605,6 +1338,13 @@ var ConnectionStatusBase = ({
1605
1338
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "success-icon-large", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.CircleCheck, { color: "var(--aurum-primary-color)", size: 46 }) });
1606
1339
  }
1607
1340
  if (error) {
1341
+ if (errorCode === ERROR_CODE.REQUEST_PENDING) {
1342
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, Text, { align: "center", size: "sm", variant: "secondary", children: [
1343
+ "Check your wallet for a ",
1344
+ "\n",
1345
+ "pending connection request"
1346
+ ] });
1347
+ }
1608
1348
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, Text, { align: "center", size: "sm", variant: "secondary", children: [
1609
1349
  "Please try again or select a ",
1610
1350
  "\n",
@@ -1649,15 +1389,17 @@ var ConnectionStatusBase = ({
1649
1389
 
1650
1390
  // src/components/ConnectModal/ConnectionStatus/Desktop.tsx
1651
1391
 
1652
-
1653
1392
  var ConnectionStatusPage = () => {
1654
1393
  const { selectedWallet } = useConnectModal();
1655
1394
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1656
1395
  ConnectionStatusBase,
1657
1396
  {
1658
- pendingHeaderText: `Approve in ${_optionalChain([selectedWallet, 'optionalAccess', _41 => _41.name])}`,
1659
- pendingSubContent: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Text, { align: "center", size: "sm", variant: "secondary", children: _optionalChain([selectedWallet, 'optionalAccess', _42 => _42.id]) === _types.WalletId.Ledger ? `Please wait for the Ledger Live modal to open` : `Please check your wallet to
1660
- approve the connection` })
1397
+ pendingHeaderText: `Approve in ${_optionalChain([selectedWallet, 'optionalAccess', _18 => _18.name])}`,
1398
+ pendingSubContent: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, Text, { align: "center", size: "sm", variant: "secondary", children: [
1399
+ "Please check your wallet to",
1400
+ "\n",
1401
+ "approve the connection"
1402
+ ] })
1661
1403
  }
1662
1404
  );
1663
1405
  };
@@ -1675,11 +1417,11 @@ var ConnectionStatusMobilePage = () => {
1675
1417
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1676
1418
  ConnectionStatusBase,
1677
1419
  {
1678
- title: _optionalChain([selectedWallet, 'optionalAccess', _43 => _43.name]),
1679
- pendingHeaderText: `Opening ${_optionalChain([selectedWallet, 'optionalAccess', _44 => _44.name])}`,
1420
+ title: _optionalChain([selectedWallet, 'optionalAccess', _19 => _19.name]),
1421
+ pendingHeaderText: `Opening ${_optionalChain([selectedWallet, 'optionalAccess', _20 => _20.name])}`,
1680
1422
  pendingSubContent: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, Text, { size: "sm", variant: "secondary", align: "center", style: { maxWidth: "18.75rem" }, children: [
1681
1423
  "If ",
1682
- _optionalChain([selectedWallet, 'optionalAccess', _45 => _45.name]),
1424
+ _optionalChain([selectedWallet, 'optionalAccess', _21 => _21.name]),
1683
1425
  " doesn't open automatically, click the button below"
1684
1426
  ] }),
1685
1427
  extraContent: showLaunchButton && !success && !error ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Button, { variant: "tertiary", size: "md", onClick: retryConnection, style: { width: "100%", marginTop: "0.5rem" }, children: "Launch App" }) : void 0
@@ -1691,14 +1433,13 @@ var ConnectionStatusMobilePage = () => {
1691
1433
 
1692
1434
 
1693
1435
  // src/components/QRCodeDisplay/QRCodeDisplay.tsx
1694
-
1695
1436
  var _reactqrcodelogo = require('react-qrcode-logo');
1696
1437
 
1697
1438
  // src/utils/generateQrCodeWalletLogo.tsx
1698
-
1439
+ var _logos = require('@aurum-sdk/logos');
1699
1440
 
1700
1441
  var generateQrCodeWalletLogo = (walletAdapter) => {
1701
- if (walletAdapter && !(walletAdapter instanceof AppKitAdapter) && walletAdapter.icon) {
1442
+ if (_optionalChain([walletAdapter, 'optionalAccess', _22 => _22.icon])) {
1702
1443
  return walletAdapter.icon;
1703
1444
  }
1704
1445
  return _nullishCoalesce(_logos.getLogoDataUri.call(void 0, _types.WalletId.WalletConnect), () => ( ""));
@@ -1861,24 +1602,13 @@ var QRCodeSkeleton = ({ size = 128 }) => {
1861
1602
 
1862
1603
  // src/components/QRCodeDisplay/QRCodeDisplay.tsx
1863
1604
 
1605
+
1864
1606
  var QRCodeDisplay = ({ uri, size = 256 }) => {
1865
1607
  const { brandConfig } = useWidgetContext();
1866
- const { selectedWallet, displayedWallets, connectWallet } = useConnectModal();
1608
+ const { selectedWallet, displayedWallets, openWalletConnectModal } = useConnectModal();
1867
1609
  const qrCodeDisplayColor = brandConfig.theme === "light" ? "#000000" : "#6b7280";
1868
1610
  const bgColor = brandConfig.theme === "light" ? "#ffffff" : "#121212";
1869
- const logoWalletRef = _react.useRef.call(void 0, null);
1870
- _react.useEffect.call(void 0, () => {
1871
- if (selectedWallet && !(selectedWallet instanceof AppKitAdapter)) {
1872
- logoWalletRef.current = selectedWallet;
1873
- }
1874
- }, [selectedWallet]);
1875
- const logoWallet = logoWalletRef.current || selectedWallet;
1876
- const appKitAdapter = displayedWallets.find((w) => w instanceof AppKitAdapter);
1877
- const handleAppKitConnect = async () => {
1878
- if (appKitAdapter) {
1879
- connectWallet(appKitAdapter);
1880
- }
1881
- };
1611
+ const wcAdapter = displayedWallets.find(({ id }) => id === _types.WalletId.WalletConnect);
1882
1612
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Column, { align: "center", gap: 16, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, Column, { align: "center", gap: 4, children: [
1883
1613
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1884
1614
  "div",
@@ -1896,7 +1626,7 @@ var QRCodeDisplay = ({ uri, size = 256 }) => {
1896
1626
  quietZone: 0,
1897
1627
  bgColor,
1898
1628
  fgColor: qrCodeDisplayColor,
1899
- logoImage: generateQrCodeWalletLogo(logoWallet || void 0),
1629
+ logoImage: generateQrCodeWalletLogo(selectedWallet || void 0),
1900
1630
  logoWidth: size * 0.2,
1901
1631
  logoHeight: size * 0.2,
1902
1632
  removeQrCodeBehindLogo: true,
@@ -1907,14 +1637,14 @@ var QRCodeDisplay = ({ uri, size = 256 }) => {
1907
1637
  )
1908
1638
  }
1909
1639
  ),
1910
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, Row, { justify: appKitAdapter ? "space-between" : "center", style: { width: "100%" }, children: [
1640
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, Row, { justify: _optionalChain([wcAdapter, 'optionalAccess', _23 => _23.openModal]) ? "space-between" : "center", style: { width: "100%" }, children: [
1911
1641
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, CopyButton, { text: uri || "", disabled: !uri, variant: "secondary", label: "Copy URI" }),
1912
- appKitAdapter && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1642
+ _optionalChain([wcAdapter, 'optionalAccess', _24 => _24.openModal]) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1913
1643
  Button,
1914
1644
  {
1915
1645
  variant: "text",
1916
1646
  size: "sm",
1917
- onClick: handleAppKitConnect,
1647
+ onClick: openWalletConnectModal,
1918
1648
  style: { color: "var(--color-foreground-muted)", fontWeight: "500" },
1919
1649
  children: "Open Modal"
1920
1650
  }
@@ -1932,17 +1662,10 @@ var QRCodePage = () => {
1932
1662
  const { navigateTo } = useNavigation();
1933
1663
  const { selectedWallet, error, configError, retryConnection, qrSuccess } = useConnectModal();
1934
1664
  const [connectionUri, setConnectionUri] = _react.useState.call(void 0, null);
1935
- const originalWalletRef = _react.useRef.call(void 0, null);
1936
- _react.useEffect.call(void 0, () => {
1937
- if (selectedWallet && !(selectedWallet instanceof AppKitAdapter)) {
1938
- originalWalletRef.current = selectedWallet;
1939
- }
1940
- }, [selectedWallet]);
1941
- const displayWallet = originalWalletRef.current || selectedWallet;
1942
1665
  const goBackToHome = () => {
1943
1666
  navigateTo(PAGE_IDS.SELECT_WALLET);
1944
1667
  };
1945
- const title = _optionalChain([displayWallet, 'optionalAccess', _46 => _46.name]) === _types.WalletName.WalletConnect ? "Scan QR code" : `Scan with ${_optionalChain([displayWallet, 'optionalAccess', _47 => _47.name])} app`;
1668
+ const title = _optionalChain([selectedWallet, 'optionalAccess', _25 => _25.name]) === _types.WalletName.WalletConnect ? "Scan QR code" : `Scan with ${_optionalChain([selectedWallet, 'optionalAccess', _26 => _26.name])} app`;
1946
1669
  _react.useEffect.call(void 0, () => {
1947
1670
  const handleWalletConnectURI = (event) => {
1948
1671
  setConnectionUri(event.detail.uri);
@@ -1972,19 +1695,19 @@ var QRCodePage = () => {
1972
1695
  ),
1973
1696
  qrSuccess ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Column, { align: "center", style: { height: "8rem" }, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.CircleCheck, { color: "var(--aurum-primary-color)", size: 46 }) }) : /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
1974
1697
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Column, { align: "center", gap: 24, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, QRCodeDisplay, { uri: error ? null : connectionUri }) }),
1975
- _optionalChain([displayWallet, 'optionalAccess', _48 => _48.downloadUrl]) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
1698
+ _optionalChain([selectedWallet, 'optionalAccess', _27 => _27.downloadUrl]) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
1976
1699
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Spacer, { size: 15 }),
1977
1700
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
1978
1701
  Button,
1979
1702
  {
1980
1703
  variant: "tertiary",
1981
1704
  expand: true,
1982
- onClick: () => window.open(_nullishCoalesce(displayWallet.downloadUrl, () => ( "")), "_blank", "noopener,noreferrer"),
1705
+ onClick: () => window.open(_nullishCoalesce(selectedWallet.downloadUrl, () => ( "")), "_blank", "noopener,noreferrer"),
1983
1706
  children: [
1984
1707
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.SquareArrowOutUpRight, { size: 16, color: "var(--color-foreground-muted)" }),
1985
1708
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, Text, { size: "sm", weight: "semibold", variant: "secondary", children: [
1986
1709
  "Download ",
1987
- displayWallet.name
1710
+ selectedWallet.name
1988
1711
  ] })
1989
1712
  ]
1990
1713
  }
@@ -2147,12 +1870,12 @@ var useOtpInputs = ({
2147
1870
  newOtp[index] = value.slice(-1);
2148
1871
  setOtp(newOtp);
2149
1872
  if (value && index < OTP_LENGTH - 1) {
2150
- _optionalChain([inputRefs, 'access', _49 => _49.current, 'access', _50 => _50[index + 1], 'optionalAccess', _51 => _51.focus, 'call', _52 => _52()]);
1873
+ _optionalChain([inputRefs, 'access', _28 => _28.current, 'access', _29 => _29[index + 1], 'optionalAccess', _30 => _30.focus, 'call', _31 => _31()]);
2151
1874
  }
2152
1875
  };
2153
1876
  const handleKeyDown = (index, e) => {
2154
1877
  if (e.key === "Backspace" && !otp[index] && index > 0) {
2155
- _optionalChain([inputRefs, 'access', _53 => _53.current, 'access', _54 => _54[index - 1], 'optionalAccess', _55 => _55.focus, 'call', _56 => _56()]);
1878
+ _optionalChain([inputRefs, 'access', _32 => _32.current, 'access', _33 => _33[index - 1], 'optionalAccess', _34 => _34.focus, 'call', _35 => _35()]);
2156
1879
  }
2157
1880
  };
2158
1881
  const handlePaste = (e) => {
@@ -2164,7 +1887,7 @@ var useOtpInputs = ({
2164
1887
  setOtp(newOtp);
2165
1888
  const nextEmptyIndex = newOtp.findIndex((digit) => !digit);
2166
1889
  if (nextEmptyIndex !== -1) {
2167
- _optionalChain([inputRefs, 'access', _57 => _57.current, 'access', _58 => _58[nextEmptyIndex], 'optionalAccess', _59 => _59.focus, 'call', _60 => _60()]);
1890
+ _optionalChain([inputRefs, 'access', _36 => _36.current, 'access', _37 => _37[nextEmptyIndex], 'optionalAccess', _38 => _38.focus, 'call', _39 => _39()]);
2168
1891
  }
2169
1892
  };
2170
1893
  _react.useEffect.call(void 0, () => {
@@ -2173,16 +1896,16 @@ var useOtpInputs = ({
2173
1896
  }
2174
1897
  }, [otp]);
2175
1898
  _react.useEffect.call(void 0, () => {
2176
- _optionalChain([inputRefs, 'access', _61 => _61.current, 'access', _62 => _62[0], 'optionalAccess', _63 => _63.focus, 'call', _64 => _64()]);
1899
+ _optionalChain([inputRefs, 'access', _40 => _40.current, 'access', _41 => _41[0], 'optionalAccess', _42 => _42.focus, 'call', _43 => _43()]);
2177
1900
  const timer = setTimeout(() => {
2178
- _optionalChain([inputRefs, 'access', _65 => _65.current, 'access', _66 => _66[0], 'optionalAccess', _67 => _67.focus, 'call', _68 => _68()]);
1901
+ _optionalChain([inputRefs, 'access', _44 => _44.current, 'access', _45 => _45[0], 'optionalAccess', _46 => _46.focus, 'call', _47 => _47()]);
2179
1902
  }, 100);
2180
1903
  return () => clearTimeout(timer);
2181
1904
  }, []);
2182
1905
  _react.useEffect.call(void 0, () => {
2183
1906
  if (error) {
2184
1907
  setOtp(Array(OTP_LENGTH).fill(""));
2185
- _optionalChain([inputRefs, 'access', _69 => _69.current, 'access', _70 => _70[0], 'optionalAccess', _71 => _71.focus, 'call', _72 => _72()]);
1908
+ _optionalChain([inputRefs, 'access', _48 => _48.current, 'access', _49 => _49[0], 'optionalAccess', _50 => _50.focus, 'call', _51 => _51()]);
2186
1909
  }
2187
1910
  }, [error]);
2188
1911
  _react.useEffect.call(void 0, () => {
@@ -2231,7 +1954,7 @@ var EmailVerifyOTP = () => {
2231
1954
  startCountdown(RESEND_COUNTDOWN_SECONDS);
2232
1955
  await sendEmailOTP(emailAuthState.email);
2233
1956
  setOtp(Array(OTP_LENGTH).fill(""));
2234
- _optionalChain([inputRefs, 'access', _73 => _73.current, 'access', _74 => _74[0], 'optionalAccess', _75 => _75.focus, 'call', _76 => _76()]);
1957
+ _optionalChain([inputRefs, 'access', _52 => _52.current, 'access', _53 => _53[0], 'optionalAccess', _54 => _54.focus, 'call', _55 => _55()]);
2235
1958
  };
2236
1959
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { children: [
2237
1960
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
@@ -2380,6 +2103,16 @@ var PAGE_COMPONENTS = {
2380
2103
  [PAGE_IDS.CONFIG_ERROR]: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ConfigErrorPage, {})
2381
2104
  };
2382
2105
 
2106
+ // src/utils/platform/isMobile.ts
2107
+ var _mobiledetect = require('mobile-detect'); var _mobiledetect2 = _interopRequireDefault(_mobiledetect);
2108
+ function isMobile() {
2109
+ if (typeof window === "undefined" || typeof navigator === "undefined") {
2110
+ return false;
2111
+ }
2112
+ const md = new (0, _mobiledetect2.default)(window.navigator.userAgent);
2113
+ return md.mobile() !== null || md.tablet() !== null;
2114
+ }
2115
+
2383
2116
  // src/utils/walletConnectDeepLink.ts
2384
2117
  var clearExistingDeepLinkListeners = () => {
2385
2118
  const existingListeners = _nullishCoalesce(window.__aurumDeepLinkListeners, () => ( []));
@@ -2418,209 +2151,19 @@ var registerGlobalCleanup = (cleanupFn) => {
2418
2151
  if (index > -1) cleanupList.splice(index, 1);
2419
2152
  cleanupFn();
2420
2153
  };
2421
- _optionalChain([window, 'access', _77 => _77.__aurumDeepLinkListeners, 'optionalAccess', _78 => _78.push, 'call', _79 => _79(cleanup)]);
2154
+ _optionalChain([window, 'access', _56 => _56.__aurumDeepLinkListeners, 'optionalAccess', _57 => _57.push, 'call', _58 => _58(cleanup)]);
2422
2155
  return cleanup;
2423
2156
  };
2424
2157
 
2425
- // src/wallet-adapters/WalletConnectAdapter.ts
2426
-
2427
-
2428
- var WalletConnectAdapter = class {
2429
- constructor(config) {
2430
- this.id = _types.WalletId.WalletConnect;
2431
- this.name = _types.WalletName.WalletConnect;
2432
- this.icon = _nullishCoalesce(_logos.getLogoDataUri.call(void 0, _types.WalletId.WalletConnect, "brand"), () => ( ""));
2433
- this.hide = false;
2434
- this.downloadUrl = null;
2435
- this.wcDeepLinkUrl = null;
2436
- this.provider = null;
2437
- this.connectionUri = null;
2438
- this.accountsChangedCallback = null;
2439
- this.initPromise = null;
2440
- this.config = {
2441
- projectId: config.projectId,
2442
- appName: config.appName
2443
- };
2444
- }
2445
- async ensureInitialized() {
2446
- if (this.provider) return;
2447
- if (!this.initPromise) {
2448
- this.initPromise = this.initializeProvider();
2449
- }
2450
- await this.initPromise;
2451
- }
2452
- async initializeProvider() {
2453
- if (typeof window === "undefined") return;
2454
- const { EthereumProvider } = await Promise.resolve().then(() => _interopRequireWildcard(require("@walletconnect/ethereum-provider")));
2455
- this.provider = await EthereumProvider.init({
2456
- projectId: _nullishCoalesce(this.config.projectId, () => ( "")),
2457
- optionalChains: [1],
2458
- showQrModal: false,
2459
- metadata: {
2460
- name: this.config.appName,
2461
- description: this.config.appName,
2462
- url: window.location.origin,
2463
- icons: []
2464
- }
2465
- });
2466
- this.provider.on("display_uri", (uri) => {
2467
- this.connectionUri = uri;
2468
- if (typeof window !== "undefined") {
2469
- window.dispatchEvent(new CustomEvent("walletconnect:uri", { detail: { uri } }));
2470
- }
2471
- });
2472
- this.provider.on("connect", (session) => {
2473
- if (typeof window !== "undefined") {
2474
- window.dispatchEvent(new CustomEvent("walletconnect:connect", { detail: { session } }));
2475
- }
2476
- });
2477
- this.provider.on("disconnect", () => {
2478
- this.connectionUri = null;
2479
- });
2480
- this.provider.on("session_delete", () => {
2481
- if (typeof window !== "undefined") {
2482
- window.dispatchEvent(new CustomEvent("walletconnect:disconnect"));
2483
- }
2484
- });
2485
- }
2486
- isInstalled() {
2487
- return true;
2488
- }
2489
- async connect() {
2490
- if (!this.config.projectId) {
2491
- throw createConfigError("WalletConnect");
2492
- }
2493
- try {
2494
- await this.ensureInitialized();
2495
- if (!this.provider) {
2496
- sentryLogger.error("connect: WalletConnect is not available");
2497
- throw new Error("WalletConnect is not available");
2498
- }
2499
- const accounts = await this.provider.enable();
2500
- if (!accounts || accounts.length === 0 || !accounts[0]) {
2501
- sentryLogger.error("connect: No accounts returned from WalletConnect");
2502
- throw new Error("No accounts returned from WalletConnect");
2503
- }
2504
- return {
2505
- address: accounts[0],
2506
- provider: this.provider,
2507
- walletId: this.id
2508
- };
2509
- } catch (e6) {
2510
- this.connectionUri = null;
2511
- throw new Error("Failed to connect to WalletConnect");
2512
- }
2513
- }
2514
- getConnectionUri() {
2515
- return this.connectionUri;
2516
- }
2517
- /**
2518
- * Starts a WalletConnect session for headless/custom QR code flows.
2519
- * Returns the URI immediately and a function to wait for the connection.
2520
- */
2521
- async startSession(timeout = 1e4) {
2522
- if (!this.config.projectId) {
2523
- throw new Error("WalletConnect projectId is required");
2524
- }
2525
- await this.ensureInitialized();
2526
- if (!this.provider) {
2527
- sentryLogger.error("startSession: WalletConnect is not available");
2528
- throw new Error("WalletConnect is not available");
2529
- }
2530
- this.connectionUri = null;
2531
- const uriPromise = new Promise((resolve, reject) => {
2532
- const timeoutId = setTimeout(() => {
2533
- reject(new Error("Timeout waiting for WalletConnect URI"));
2534
- }, timeout);
2535
- this.provider.once("display_uri", (uri2) => {
2536
- clearTimeout(timeoutId);
2537
- this.connectionUri = uri2;
2538
- resolve(uri2);
2539
- });
2540
- });
2541
- const connectionPromise = (async () => {
2542
- const accounts = await this.provider.enable();
2543
- if (!accounts || accounts.length === 0 || !accounts[0]) {
2544
- sentryLogger.error("startSession: No accounts returned from WalletConnect");
2545
- throw new Error("No accounts returned from WalletConnect");
2546
- }
2547
- return {
2548
- address: accounts[0],
2549
- provider: this.provider,
2550
- walletId: this.id
2551
- };
2552
- })();
2553
- const uri = await uriPromise;
2554
- return {
2555
- uri,
2556
- waitForConnection: async () => {
2557
- try {
2558
- return await connectionPromise;
2559
- } catch (e7) {
2560
- this.connectionUri = null;
2561
- throw new Error("Failed to connect via WalletConnect");
2562
- }
2563
- }
2564
- };
2565
- }
2566
- async tryRestoreConnection() {
2567
- try {
2568
- await this.ensureInitialized();
2569
- if (!this.provider) {
2570
- return null;
2571
- }
2572
- const accounts = this.provider.accounts;
2573
- if (!accounts || accounts.length === 0 || !accounts[0]) {
2574
- return null;
2575
- }
2576
- return {
2577
- address: accounts[0],
2578
- provider: this.provider,
2579
- walletId: this.id
2580
- };
2581
- } catch (e8) {
2582
- return null;
2583
- }
2584
- }
2585
- async disconnect() {
2586
- try {
2587
- if (this.provider) {
2588
- await this.provider.disconnect();
2589
- }
2590
- } finally {
2591
- this.connectionUri = null;
2592
- this.provider = null;
2593
- this.initPromise = null;
2594
- }
2595
- }
2596
- getProvider() {
2597
- return this.provider;
2598
- }
2599
- // Called by Aurum when user connects wallet
2600
- // Passes Aurum.ts --> syncStateFromAccountsChanged() to handle the provider accounts changed event
2601
- onAccountsChanged(callback) {
2602
- if (!_optionalChain([this, 'access', _80 => _80.provider, 'optionalAccess', _81 => _81.on])) return;
2603
- if (this.accountsChangedCallback) {
2604
- _optionalChain([this, 'access', _82 => _82.provider, 'access', _83 => _83.removeListener, 'optionalCall', _84 => _84("accountsChanged", this.accountsChangedCallback)]);
2605
- }
2606
- this.accountsChangedCallback = callback;
2607
- this.provider.on("accountsChanged", this.accountsChangedCallback);
2608
- }
2609
- removeListeners() {
2610
- if (!_optionalChain([this, 'access', _85 => _85.provider, 'optionalAccess', _86 => _86.removeListener]) || !this.accountsChangedCallback) return;
2611
- this.provider.removeListener("accountsChanged", this.accountsChangedCallback);
2612
- this.accountsChangedCallback = null;
2613
- }
2614
- };
2615
-
2616
2158
  // src/hooks/useConnectSelectedWallet.tsx
2159
+
2617
2160
  var useConnectSelectedWallet = () => {
2618
2161
  const { navigateTo } = useNavigation();
2619
2162
  const connectInstalledWallet = async ({ adapter, onConnect, setSuccess }) => {
2620
2163
  navigateTo(PAGE_IDS.CONNECTING);
2621
2164
  try {
2622
2165
  const { address, provider } = await adapter.connect();
2623
- _optionalChain([setSuccess, 'optionalCall', _87 => _87(true)]);
2166
+ _optionalChain([setSuccess, 'optionalCall', _59 => _59(true)]);
2624
2167
  setTimeout(() => {
2625
2168
  onConnect({ walletId: adapter.id, address, provider });
2626
2169
  }, 1e3);
@@ -2633,7 +2176,7 @@ var useConnectSelectedWallet = () => {
2633
2176
  }
2634
2177
  };
2635
2178
  const connectUninstalledWalletQRCode = async ({ displayedWallets, onConnect, setSuccess }) => {
2636
- const walletConnectAdapter = _optionalChain([displayedWallets, 'optionalAccess', _88 => _88.find, 'call', _89 => _89((w) => w instanceof WalletConnectAdapter)]);
2179
+ const walletConnectAdapter = _optionalChain([displayedWallets, 'optionalAccess', _60 => _60.find, 'call', _61 => _61(({ id }) => id === _types.WalletId.WalletConnect)]);
2637
2180
  if (!walletConnectAdapter) {
2638
2181
  sentryLogger.error("connectUninstalledWalletQRCode: WalletConnect adapter not found");
2639
2182
  throw new Error("WalletConnect adapter not found");
@@ -2641,7 +2184,7 @@ var useConnectSelectedWallet = () => {
2641
2184
  navigateTo(PAGE_IDS.QR_CODE);
2642
2185
  try {
2643
2186
  const { address, provider } = await walletConnectAdapter.connect();
2644
- _optionalChain([setSuccess, 'optionalCall', _90 => _90(true)]);
2187
+ _optionalChain([setSuccess, 'optionalCall', _62 => _62(true)]);
2645
2188
  setTimeout(() => {
2646
2189
  onConnect({ walletId: walletConnectAdapter.id, address, provider });
2647
2190
  }, 1e3);
@@ -2659,7 +2202,7 @@ var useConnectSelectedWallet = () => {
2659
2202
  onConnect,
2660
2203
  setSuccess
2661
2204
  }) => {
2662
- const walletConnectAdapter = _optionalChain([displayedWallets, 'optionalAccess', _91 => _91.find, 'call', _92 => _92((w) => w instanceof WalletConnectAdapter)]);
2205
+ const walletConnectAdapter = _optionalChain([displayedWallets, 'optionalAccess', _63 => _63.find, 'call', _64 => _64(({ id }) => id === _types.WalletId.WalletConnect)]);
2663
2206
  if (!walletConnectAdapter) {
2664
2207
  sentryLogger.error("connectWithMobileDeepLink: WalletConnect adapter not found");
2665
2208
  throw new Error("WalletConnect adapter not found");
@@ -2678,7 +2221,7 @@ var useConnectSelectedWallet = () => {
2678
2221
  if (isRejected) {
2679
2222
  return;
2680
2223
  }
2681
- _optionalChain([setSuccess, 'optionalCall', _93 => _93(true)]);
2224
+ _optionalChain([setSuccess, 'optionalCall', _65 => _65(true)]);
2682
2225
  setTimeout(() => {
2683
2226
  onConnect({ walletId: walletConnectAdapter.id, address, provider });
2684
2227
  }, 1e3);
@@ -2691,13 +2234,20 @@ var useConnectSelectedWallet = () => {
2691
2234
  throw error;
2692
2235
  }
2693
2236
  };
2694
- const connectAppKit = async ({ adapter, onConnect, setSuccess }) => {
2237
+ const connectWalletConnectModal = async ({ adapter, onConnect, setSuccess }) => {
2695
2238
  try {
2696
- const { address, provider } = await adapter.connect();
2697
- _optionalChain([setSuccess, 'optionalCall', _94 => _94(true)]);
2698
- setTimeout(() => {
2239
+ if (!adapter.openModal) {
2240
+ throw new Error("Adapter does not support openModal");
2241
+ }
2242
+ const { address, provider } = await adapter.openModal();
2243
+ _optionalChain([setSuccess, 'optionalCall', _66 => _66(true)]);
2244
+ if (isMobile()) {
2699
2245
  onConnect({ walletId: adapter.id, address, provider });
2700
- }, 1e3);
2246
+ } else {
2247
+ setTimeout(() => {
2248
+ onConnect({ walletId: adapter.id, address, provider });
2249
+ }, 1e3);
2250
+ }
2701
2251
  } catch (error) {
2702
2252
  if (isConfigError(error)) {
2703
2253
  navigateTo(PAGE_IDS.CONFIG_ERROR);
@@ -2711,7 +2261,7 @@ var useConnectSelectedWallet = () => {
2711
2261
  return {
2712
2262
  // Both mobile and desktop
2713
2263
  connectInstalledWallet,
2714
- connectAppKit,
2264
+ connectWalletConnectModal,
2715
2265
  redirectToDownloadPage,
2716
2266
  // Desktop only
2717
2267
  connectUninstalledWalletQRCode,
@@ -2738,9 +2288,10 @@ var ConnectModalProvider = ({ children, displayedWallets, onConnect }) => {
2738
2288
  connectInstalledWallet,
2739
2289
  connectWithMobileDeepLink,
2740
2290
  connectUninstalledWalletQRCode,
2741
- connectAppKit
2291
+ connectWalletConnectModal
2742
2292
  } = useConnectSelectedWallet();
2743
2293
  const [error, setError] = _react.useState.call(void 0, false);
2294
+ const [errorCode, setErrorCode] = _react.useState.call(void 0, null);
2744
2295
  const [configError, setConfigError] = _react.useState.call(void 0, false);
2745
2296
  const [success, setSuccess] = _react.useState.call(void 0, false);
2746
2297
  const [qrSuccess, setQrSuccess] = _react.useState.call(void 0, false);
@@ -2748,6 +2299,7 @@ var ConnectModalProvider = ({ children, displayedWallets, onConnect }) => {
2748
2299
  const connectWallet = async (wallet) => {
2749
2300
  try {
2750
2301
  setError(false);
2302
+ setErrorCode(null);
2751
2303
  setConfigError(false);
2752
2304
  setSuccess(false);
2753
2305
  setQrSuccess(false);
@@ -2756,8 +2308,6 @@ var ConnectModalProvider = ({ children, displayedWallets, onConnect }) => {
2756
2308
  const isDesktop = !isOnMobile;
2757
2309
  const hasDeepLink = Boolean(wallet.wcDeepLinkUrl);
2758
2310
  if (isDesktop) {
2759
- if (wallet instanceof AppKitAdapter)
2760
- return await connectAppKit({ adapter: wallet, onConnect, setSuccess: setQrSuccess });
2761
2311
  if (!wallet.isInstalled() && !hasDeepLink) {
2762
2312
  return await redirectToDownloadPage();
2763
2313
  }
@@ -2772,12 +2322,12 @@ var ConnectModalProvider = ({ children, displayedWallets, onConnect }) => {
2772
2322
  }
2773
2323
  if (isOnMobile) {
2774
2324
  if (wallet.id === _types.WalletId.WalletConnect) {
2775
- const appkitAdapter = _optionalChain([displayedWallets, 'optionalAccess', _95 => _95.find, 'call', _96 => _96((w) => w instanceof AppKitAdapter)]);
2776
- if (!appkitAdapter) {
2777
- sentryLogger.error("WalletConnect modal adapter not found");
2778
- throw new Error("WalletConnect modal adapter not found");
2325
+ const wcAdapter = _optionalChain([displayedWallets, 'optionalAccess', _67 => _67.find, 'call', _68 => _68(({ id }) => id === _types.WalletId.WalletConnect)]);
2326
+ if (!wcAdapter) {
2327
+ sentryLogger.error("WalletConnect adapter not found");
2328
+ throw new Error("WalletConnect adapter not found");
2779
2329
  }
2780
- return await connectAppKit({ adapter: appkitAdapter, onConnect, setSuccess: setQrSuccess });
2330
+ return await connectWalletConnectModal({ adapter: wcAdapter, onConnect, setSuccess: setQrSuccess });
2781
2331
  }
2782
2332
  if (wallet.isInstalled()) return await connectInstalledWallet({ adapter: wallet, onConnect, setSuccess });
2783
2333
  if (hasDeepLink) {
@@ -2787,6 +2337,7 @@ var ConnectModalProvider = ({ children, displayedWallets, onConnect }) => {
2787
2337
  }
2788
2338
  } catch (err) {
2789
2339
  setError(true);
2340
+ setErrorCode(_nullishCoalesce(_optionalChain([err, 'optionalAccess', _69 => _69.code]), () => ( null)));
2790
2341
  if (isConfigError(err)) {
2791
2342
  setConfigError(true);
2792
2343
  }
@@ -2795,16 +2346,29 @@ var ConnectModalProvider = ({ children, displayedWallets, onConnect }) => {
2795
2346
  const retryConnection = () => {
2796
2347
  if (selectedWallet) connectWallet(selectedWallet);
2797
2348
  };
2349
+ const openWalletConnectModal = async () => {
2350
+ const wcAdapter = _optionalChain([displayedWallets, 'optionalAccess', _70 => _70.find, 'call', _71 => _71(({ id }) => id === _types.WalletId.WalletConnect)]);
2351
+ if (!wcAdapter) {
2352
+ sentryLogger.error("WalletConnect adapter not found");
2353
+ return;
2354
+ }
2355
+ try {
2356
+ await connectWalletConnectModal({ adapter: wcAdapter, onConnect, setSuccess: setQrSuccess });
2357
+ } catch (e4) {
2358
+ }
2359
+ };
2798
2360
  const goBackToHome = () => {
2799
2361
  navigateTo(PAGE_IDS.SELECT_WALLET);
2800
2362
  setSelectedWallet(null);
2801
2363
  setError(false);
2364
+ setErrorCode(null);
2802
2365
  setConfigError(false);
2803
2366
  setSuccess(false);
2804
2367
  setQrSuccess(false);
2805
2368
  };
2806
2369
  const contextValue = {
2807
2370
  error,
2371
+ errorCode,
2808
2372
  configError,
2809
2373
  success,
2810
2374
  qrSuccess,
@@ -2812,6 +2376,7 @@ var ConnectModalProvider = ({ children, displayedWallets, onConnect }) => {
2812
2376
  displayedWallets,
2813
2377
  goBackToHome,
2814
2378
  connectWallet,
2379
+ openWalletConnectModal,
2815
2380
  retryConnection,
2816
2381
  setSelectedWallet,
2817
2382
  setSuccess,
@@ -2886,8 +2451,5 @@ ${generateBrandCssVariables(brandConfig)}`;
2886
2451
 
2887
2452
 
2888
2453
 
2889
-
2890
-
2891
-
2892
- exports.useAurumStore = useAurumStore; exports.waitForStoreHydration = waitForStoreHydration; exports.useWidgetContext = useWidgetContext; exports.WidgetProvider = WidgetProvider; exports.DEFAULT_THEME = DEFAULT_THEME; exports.getDefaultThemeConfig = getDefaultThemeConfig; exports.POWERED_BY_SPACER_REM = POWERED_BY_SPACER_REM; exports.PageTransitionContainer = PageTransitionContainer; exports.PoweredBy = PoweredBy; exports.Modal = Modal; exports.Spacer = Spacer; exports.ThemeContainer = ThemeContainer; exports.useNavigation = useNavigation; exports.sortWallets = sortWallets; exports.initSentry = initSentry; exports.sentryLogger = sentryLogger; exports.createConfigError = createConfigError; exports.AppKitAdapter = AppKitAdapter; exports.isMobile = isMobile; exports.WalletConnectAdapter = WalletConnectAdapter; exports.ConnectUIProviders = ConnectUIProviders; exports.ConnectPages = ConnectPages; exports.generateCompleteStyles = generateCompleteStyles;
2893
- //# sourceMappingURL=chunk-NKWY4I4L.js.map
2454
+ exports.useAurumStore = useAurumStore; exports.waitForStoreHydration = waitForStoreHydration; exports.useWidgetContext = useWidgetContext; exports.WidgetProvider = WidgetProvider; exports.DEFAULT_THEME = DEFAULT_THEME; exports.getDefaultThemeConfig = getDefaultThemeConfig; exports.POWERED_BY_SPACER_REM = POWERED_BY_SPACER_REM; exports.PageTransitionContainer = PageTransitionContainer; exports.PoweredBy = PoweredBy; exports.Modal = Modal; exports.Spacer = Spacer; exports.ThemeContainer = ThemeContainer; exports.useNavigation = useNavigation; exports.sortWallets = sortWallets; exports.initSentry = initSentry; exports.sentryLogger = sentryLogger; exports.createConfigError = createConfigError; exports.ConnectUIProviders = ConnectUIProviders; exports.ConnectPages = ConnectPages; exports.generateCompleteStyles = generateCompleteStyles;
2455
+ //# sourceMappingURL=chunk-K6PG2PDF.js.map