@dynamic-labs/solana 4.7.2 → 4.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,4 +1,25 @@
1
1
 
2
+ ### [4.8.1](https://github.com/dynamic-labs/dynamic-auth/compare/v4.8.0...v4.8.1) (2025-02-25)
3
+
4
+
5
+ ### Bug Fixes
6
+
7
+ * wc redirect for safari inside iframe ([#8131](https://github.com/dynamic-labs/dynamic-auth/issues/8131)) ([8c74bea](https://github.com/dynamic-labs/dynamic-auth/commit/8c74beae505014eb85be4fd211909709d0a339dd))
8
+
9
+ ## [4.8.0](https://github.com/dynamic-labs/dynamic-auth/compare/v4.7.2...v4.8.0) (2025-02-25)
10
+
11
+
12
+ ### Features
13
+
14
+ * add support for network switching for SOL wallets ([#8095](https://github.com/dynamic-labs/dynamic-auth/issues/8095)) ([8997b39](https://github.com/dynamic-labs/dynamic-auth/commit/8997b399e1e5cd294aad8b719d39928eed5e911d))
15
+ * add support for solNetworks override ([#8138](https://github.com/dynamic-labs/dynamic-auth/issues/8138)) ([8c3f374](https://github.com/dynamic-labs/dynamic-auth/commit/8c3f374a9b2b451f984aed98e7ce506552e2a6c5))
16
+ * **react-native:** add account abstraction multi-chain ([#8132](https://github.com/dynamic-labs/dynamic-auth/issues/8132)) ([c64a26e](https://github.com/dynamic-labs/dynamic-auth/commit/c64a26e16943d913edf4683084f59592a9aeedfc))
17
+
18
+
19
+ ### Bug Fixes
20
+
21
+ * ensure zero dev network cache use project id ([#8133](https://github.com/dynamic-labs/dynamic-auth/issues/8133)) ([408c4ed](https://github.com/dynamic-labs/dynamic-auth/commit/408c4ed764a623b6d870cd24973320e5ca4a74c7))
22
+
2
23
  ### [4.7.2](https://github.com/dynamic-labs/dynamic-auth/compare/v4.7.1...v4.7.2) (2025-02-22)
3
24
 
4
25
  ### Features
package/package.cjs CHANGED
@@ -3,6 +3,6 @@
3
3
 
4
4
  Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
- var version = "4.7.2";
6
+ var version = "4.8.1";
7
7
 
8
8
  exports.version = version;
package/package.js CHANGED
@@ -1,4 +1,4 @@
1
1
  'use client'
2
- var version = "4.7.2";
2
+ var version = "4.8.1";
3
3
 
4
4
  export { version };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dynamic-labs/solana",
3
- "version": "4.7.2",
3
+ "version": "4.8.1",
4
4
  "description": "A React SDK for implementing wallet web3 authentication and authorization to your website.",
5
5
  "author": "Dynamic Labs, Inc.",
6
6
  "license": "MIT",
@@ -25,16 +25,16 @@
25
25
  "@wallet-standard/experimental-features": "0.1.1",
26
26
  "bs58": "5.0.0",
27
27
  "tweetnacl": "1.0.3",
28
- "@dynamic-labs/assert-package-version": "4.7.2",
29
- "@dynamic-labs/embedded-wallet-solana": "4.7.2",
30
- "@dynamic-labs/logger": "4.7.2",
31
- "@dynamic-labs/rpc-providers": "4.7.2",
28
+ "@dynamic-labs/assert-package-version": "4.8.1",
29
+ "@dynamic-labs/embedded-wallet-solana": "4.8.1",
30
+ "@dynamic-labs/logger": "4.8.1",
31
+ "@dynamic-labs/rpc-providers": "4.8.1",
32
32
  "@dynamic-labs/sdk-api-core": "0.0.628",
33
- "@dynamic-labs/solana-core": "4.7.2",
34
- "@dynamic-labs/types": "4.7.2",
35
- "@dynamic-labs/utils": "4.7.2",
36
- "@dynamic-labs/wallet-book": "4.7.2",
37
- "@dynamic-labs/wallet-connector-core": "4.7.2"
33
+ "@dynamic-labs/solana-core": "4.8.1",
34
+ "@dynamic-labs/types": "4.8.1",
35
+ "@dynamic-labs/utils": "4.8.1",
36
+ "@dynamic-labs/wallet-book": "4.8.1",
37
+ "@dynamic-labs/wallet-connector-core": "4.8.1"
38
38
  },
39
39
  "peerDependencies": {}
40
40
  }
package/src/index.cjs CHANGED
@@ -20,7 +20,6 @@ require('./utils/logger.cjs');
20
20
  var createSolanaSignerFromWalletStandard = require('./injected/walletStandard/createSolanaSignerFromWalletStandard/createSolanaSignerFromWalletStandard.cjs');
21
21
  var getWalletStandardWallets = require('./injected/walletStandard/getWalletStandardWallets/getWalletStandardWallets.cjs');
22
22
  var hasAllWalletStandardRequiredFeatures = require('./injected/walletStandard/hasAllWalletStandardRequiredFeatures/hasAllWalletStandardRequiredFeatures.cjs');
23
- var fetchCluster = require('./utils/fetchCluster/fetchCluster.cjs');
24
23
 
25
24
  /* eslint-disable @typescript-eslint/no-unused-vars */
26
25
  assertPackageVersion.assertPackageVersion('@dynamic-labs/solana', _package.version);
@@ -42,4 +41,3 @@ exports.isSignedMessage = isSignedMessage.isSignedMessage;
42
41
  exports.createSolanaSignerFromWalletStandard = createSolanaSignerFromWalletStandard.createSolanaSignerFromWalletStandard;
43
42
  exports.getWalletStandardWallets = getWalletStandardWallets.getWalletStandardWallets;
44
43
  exports.hasAllWalletStandardRequiredFeatures = hasAllWalletStandardRequiredFeatures.hasAllWalletStandardRequiredFeatures;
45
- exports.fetchCluster = fetchCluster.fetchCluster;
package/src/index.d.ts CHANGED
@@ -7,4 +7,3 @@ export { SolanaWalletConnectorsWithConfig } from './SolanaWalletConnectorsWithCo
7
7
  export { isBackpackSolanaSigner } from './utils/isBackpackSolanaSigner';
8
8
  export { isSignedMessage } from './utils/isSignedMessage';
9
9
  export { getWalletStandardWallets, createSolanaSignerFromWalletStandard, hasAllWalletStandardRequiredFeatures, } from './injected';
10
- export { fetchCluster } from './utils/fetchCluster';
package/src/index.js CHANGED
@@ -16,7 +16,6 @@ import './utils/logger.js';
16
16
  export { createSolanaSignerFromWalletStandard } from './injected/walletStandard/createSolanaSignerFromWalletStandard/createSolanaSignerFromWalletStandard.js';
17
17
  export { getWalletStandardWallets } from './injected/walletStandard/getWalletStandardWallets/getWalletStandardWallets.js';
18
18
  export { hasAllWalletStandardRequiredFeatures } from './injected/walletStandard/hasAllWalletStandardRequiredFeatures/hasAllWalletStandardRequiredFeatures.js';
19
- export { fetchCluster } from './utils/fetchCluster/fetchCluster.js';
20
19
 
21
20
  /* eslint-disable @typescript-eslint/no-unused-vars */
22
21
  assertPackageVersion('@dynamic-labs/solana', version);
@@ -5,8 +5,8 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
6
  var _tslib = require('../../../_virtual/_tslib.cjs');
7
7
  var web3_js = require('@solana/web3.js');
8
- var utils = require('@dynamic-labs/utils');
9
8
  var solanaCore = require('@dynamic-labs/solana-core');
9
+ var utils = require('@dynamic-labs/utils');
10
10
  var SolProviderHelper = require('../../SolProviderHelper/SolProviderHelper.cjs');
11
11
  var SignMessageNotSupportedError = require('../../errors/SignMessageNotSupportedError.cjs');
12
12
 
@@ -88,7 +88,7 @@ class InjectedWalletBase extends solanaCore.SolanaWalletConnector {
88
88
  const deepLink = inAppBrowserCompiledTemplate({
89
89
  encodedDappURI: encodeURIComponent(window.location.toString()),
90
90
  });
91
- window.location.assign(deepLink);
91
+ utils.PlatformService.openURL(deepLink);
92
92
  }
93
93
  return;
94
94
  }
@@ -1,8 +1,8 @@
1
1
  'use client'
2
2
  import { __awaiter } from '../../../_virtual/_tslib.js';
3
3
  import { PublicKey } from '@solana/web3.js';
4
- import { isMobile, template } from '@dynamic-labs/utils';
5
4
  import { SolanaWalletConnector, SolanaUiTransaction } from '@dynamic-labs/solana-core';
5
+ import { isMobile, template, PlatformService } from '@dynamic-labs/utils';
6
6
  import { SolProviderHelper } from '../../SolProviderHelper/SolProviderHelper.js';
7
7
  import { SignMessageNotSupportedError } from '../../errors/SignMessageNotSupportedError.js';
8
8
 
@@ -84,7 +84,7 @@ class InjectedWalletBase extends SolanaWalletConnector {
84
84
  const deepLink = inAppBrowserCompiledTemplate({
85
85
  encodedDappURI: encodeURIComponent(window.location.toString()),
86
86
  });
87
- window.location.assign(deepLink);
87
+ PlatformService.openURL(deepLink);
88
88
  }
89
89
  return;
90
90
  }
@@ -6,10 +6,9 @@ Object.defineProperty(exports, '__esModule', { value: true });
6
6
  var _tslib = require('../../../../_virtual/_tslib.cjs');
7
7
  var web3_js = require('@solana/web3.js');
8
8
  var logger = require('../../../utils/logger.cjs');
9
- var fetchCluster = require('../../../utils/fetchCluster/fetchCluster.cjs');
10
9
 
11
10
  const isVersionedTransaction = (transaction) => !('instructions' in transaction);
12
- const createSolanaSignerFromWalletStandard = ({ wallet, walletConnector, network, genesisHashesMap, }) => {
11
+ const createSolanaSignerFromWalletStandard = ({ wallet, walletConnector, }) => {
13
12
  const features = wallet.features;
14
13
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
15
14
  const connect = (args) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
@@ -45,17 +44,21 @@ const createSolanaSignerFromWalletStandard = ({ wallet, walletConnector, network
45
44
  }
46
45
  return account;
47
46
  });
48
- const getChain = () => _tslib.__awaiter(void 0, void 0, void 0, function* () {
49
- var _c, _d;
50
- const rpc = (_d = (_c = network.privateCustomerRpcUrls) === null || _c === void 0 ? void 0 : _c[0]) !== null && _d !== void 0 ? _d : network.rpcUrls[0];
51
- const cluster = yield fetchCluster.fetchCluster(rpc, genesisHashesMap);
47
+ const getChain = () => {
48
+ var _a;
49
+ const currentNetwork = walletConnector.getSelectedNetwork();
50
+ if (!currentNetwork) {
51
+ throw new Error('Network not found');
52
+ }
53
+ //for SVM netwroks, the cluster name is stored in shortName for now
54
+ const cluster = (_a = currentNetwork.cluster) !== null && _a !== void 0 ? _a : 'mainnet-beta';
52
55
  return `solana:${cluster}`;
53
- });
56
+ };
54
57
  const signTransaction = (transaction) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
55
58
  const account = yield getCurrentAccount();
56
59
  const signTransactionResult = yield features['solana:signTransaction'].signTransaction({
57
60
  account,
58
- chain: yield getChain(),
61
+ chain: getChain(),
59
62
  transaction: transaction.serialize({
60
63
  requireAllSignatures: false,
61
64
  }),
@@ -67,8 +70,8 @@ const createSolanaSignerFromWalletStandard = ({ wallet, walletConnector, network
67
70
  });
68
71
  const signAllTransactions = (transactions) => _tslib.__awaiter(void 0, void 0, void 0, function* () { return Promise.all(transactions.map(signTransaction)); });
69
72
  const signAndSendTransaction = (transaction) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
70
- var _e;
71
- const signAndSendTransactionMethod = (_e = features['solana:signAndSendTransaction']) === null || _e === void 0 ? void 0 : _e.signAndSendTransaction;
73
+ var _c;
74
+ const signAndSendTransactionMethod = (_c = features['solana:signAndSendTransaction']) === null || _c === void 0 ? void 0 : _c.signAndSendTransaction;
72
75
  if (!signAndSendTransactionMethod) {
73
76
  logger.logger.error('signAndSendTransaction - Not implemented');
74
77
  throw new Error('signAndSendTransaction - Not implemented by wallet');
@@ -76,15 +79,15 @@ const createSolanaSignerFromWalletStandard = ({ wallet, walletConnector, network
76
79
  const account = yield getCurrentAccount();
77
80
  const signedTransactions = yield signAndSendTransactionMethod({
78
81
  account,
79
- chain: yield getChain(),
82
+ chain: getChain(),
80
83
  transaction: transaction.serialize(),
81
84
  });
82
85
  const [{ signature }] = signedTransactions;
83
86
  return { signature: new TextDecoder().decode(signature) };
84
87
  });
85
88
  const signMessage = (message) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
86
- var _f;
87
- const signMessageMethod = (_f = features['solana:signMessage']) === null || _f === void 0 ? void 0 : _f.signMessage;
89
+ var _d;
90
+ const signMessageMethod = (_d = features['solana:signMessage']) === null || _d === void 0 ? void 0 : _d.signMessage;
88
91
  if (!signMessageMethod) {
89
92
  logger.logger.error('signMessage - Not implemented');
90
93
  throw new Error('signMessage - Not implemented by wallet');
@@ -103,6 +106,7 @@ const createSolanaSignerFromWalletStandard = ({ wallet, walletConnector, network
103
106
  logger.logger.error('on - Not implemented');
104
107
  return;
105
108
  }
109
+ logger.logger.debug(`[SolanaWalletStandardConnector] - on: ${event}`);
106
110
  if (event !== 'accountChanged') {
107
111
  logger.logger.debug(`on - Not implemented for event: ${event}`);
108
112
  return;
@@ -1,12 +1,9 @@
1
1
  import { Wallet } from '@wallet-standard/base';
2
2
  import { ISolana } from '@dynamic-labs/solana-core';
3
- import { GenericNetwork } from '@dynamic-labs/types';
4
3
  import { InjectedWalletBase } from '../../InjectedWalletBase';
5
4
  type CreateSolanaSignerFromWalletStandardProps = {
6
5
  wallet: Wallet;
7
6
  walletConnector: InjectedWalletBase;
8
- network: GenericNetwork;
9
- genesisHashesMap?: Record<string, string>;
10
7
  };
11
- export declare const createSolanaSignerFromWalletStandard: ({ wallet, walletConnector, network, genesisHashesMap, }: CreateSolanaSignerFromWalletStandardProps) => ISolana;
8
+ export declare const createSolanaSignerFromWalletStandard: ({ wallet, walletConnector, }: CreateSolanaSignerFromWalletStandardProps) => ISolana;
12
9
  export {};
@@ -2,10 +2,9 @@
2
2
  import { __awaiter } from '../../../../_virtual/_tslib.js';
3
3
  import { PublicKey, VersionedTransaction, Transaction } from '@solana/web3.js';
4
4
  import { logger } from '../../../utils/logger.js';
5
- import { fetchCluster } from '../../../utils/fetchCluster/fetchCluster.js';
6
5
 
7
6
  const isVersionedTransaction = (transaction) => !('instructions' in transaction);
8
- const createSolanaSignerFromWalletStandard = ({ wallet, walletConnector, network, genesisHashesMap, }) => {
7
+ const createSolanaSignerFromWalletStandard = ({ wallet, walletConnector, }) => {
9
8
  const features = wallet.features;
10
9
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
11
10
  const connect = (args) => __awaiter(void 0, void 0, void 0, function* () {
@@ -41,17 +40,21 @@ const createSolanaSignerFromWalletStandard = ({ wallet, walletConnector, network
41
40
  }
42
41
  return account;
43
42
  });
44
- const getChain = () => __awaiter(void 0, void 0, void 0, function* () {
45
- var _c, _d;
46
- const rpc = (_d = (_c = network.privateCustomerRpcUrls) === null || _c === void 0 ? void 0 : _c[0]) !== null && _d !== void 0 ? _d : network.rpcUrls[0];
47
- const cluster = yield fetchCluster(rpc, genesisHashesMap);
43
+ const getChain = () => {
44
+ var _a;
45
+ const currentNetwork = walletConnector.getSelectedNetwork();
46
+ if (!currentNetwork) {
47
+ throw new Error('Network not found');
48
+ }
49
+ //for SVM netwroks, the cluster name is stored in shortName for now
50
+ const cluster = (_a = currentNetwork.cluster) !== null && _a !== void 0 ? _a : 'mainnet-beta';
48
51
  return `solana:${cluster}`;
49
- });
52
+ };
50
53
  const signTransaction = (transaction) => __awaiter(void 0, void 0, void 0, function* () {
51
54
  const account = yield getCurrentAccount();
52
55
  const signTransactionResult = yield features['solana:signTransaction'].signTransaction({
53
56
  account,
54
- chain: yield getChain(),
57
+ chain: getChain(),
55
58
  transaction: transaction.serialize({
56
59
  requireAllSignatures: false,
57
60
  }),
@@ -63,8 +66,8 @@ const createSolanaSignerFromWalletStandard = ({ wallet, walletConnector, network
63
66
  });
64
67
  const signAllTransactions = (transactions) => __awaiter(void 0, void 0, void 0, function* () { return Promise.all(transactions.map(signTransaction)); });
65
68
  const signAndSendTransaction = (transaction) => __awaiter(void 0, void 0, void 0, function* () {
66
- var _e;
67
- const signAndSendTransactionMethod = (_e = features['solana:signAndSendTransaction']) === null || _e === void 0 ? void 0 : _e.signAndSendTransaction;
69
+ var _c;
70
+ const signAndSendTransactionMethod = (_c = features['solana:signAndSendTransaction']) === null || _c === void 0 ? void 0 : _c.signAndSendTransaction;
68
71
  if (!signAndSendTransactionMethod) {
69
72
  logger.error('signAndSendTransaction - Not implemented');
70
73
  throw new Error('signAndSendTransaction - Not implemented by wallet');
@@ -72,15 +75,15 @@ const createSolanaSignerFromWalletStandard = ({ wallet, walletConnector, network
72
75
  const account = yield getCurrentAccount();
73
76
  const signedTransactions = yield signAndSendTransactionMethod({
74
77
  account,
75
- chain: yield getChain(),
78
+ chain: getChain(),
76
79
  transaction: transaction.serialize(),
77
80
  });
78
81
  const [{ signature }] = signedTransactions;
79
82
  return { signature: new TextDecoder().decode(signature) };
80
83
  });
81
84
  const signMessage = (message) => __awaiter(void 0, void 0, void 0, function* () {
82
- var _f;
83
- const signMessageMethod = (_f = features['solana:signMessage']) === null || _f === void 0 ? void 0 : _f.signMessage;
85
+ var _d;
86
+ const signMessageMethod = (_d = features['solana:signMessage']) === null || _d === void 0 ? void 0 : _d.signMessage;
84
87
  if (!signMessageMethod) {
85
88
  logger.error('signMessage - Not implemented');
86
89
  throw new Error('signMessage - Not implemented by wallet');
@@ -99,6 +102,7 @@ const createSolanaSignerFromWalletStandard = ({ wallet, walletConnector, network
99
102
  logger.error('on - Not implemented');
100
103
  return;
101
104
  }
105
+ logger.debug(`[SolanaWalletStandardConnector] - on: ${event}`);
102
106
  if (event !== 'accountChanged') {
103
107
  logger.debug(`on - Not implemented for event: ${event}`);
104
108
  return;
@@ -15,7 +15,6 @@ const getConnectorConstructorForWalletStandardWallet = (wallet, walletBookMetada
15
15
  this.name = wallet.name;
16
16
  this.overrideKey = `${sanitizedName}sol`;
17
17
  this._provider = createSolanaSignerFromWalletStandard.createSolanaSignerFromWalletStandard({
18
- network: this.solNetworks[0],
19
18
  wallet,
20
19
  walletConnector: this,
21
20
  });
@@ -11,7 +11,6 @@ const getConnectorConstructorForWalletStandardWallet = (wallet, walletBookMetada
11
11
  this.name = wallet.name;
12
12
  this.overrideKey = `${sanitizedName}sol`;
13
13
  this._provider = createSolanaSignerFromWalletStandard({
14
- network: this.solNetworks[0],
15
14
  wallet,
16
15
  walletConnector: this,
17
16
  });
@@ -13,7 +13,6 @@ var buildUrl = require('../buildUrl/buildUrl.cjs');
13
13
  var decryptPayload = require('../decryptPayload/decryptPayload.cjs');
14
14
  var encryptPayload = require('../encryptPayload/encryptPayload.cjs');
15
15
  var storage = require('../storage/storage.cjs');
16
- var fetchCluster = require('../../utils/fetchCluster/fetchCluster.cjs');
17
16
 
18
17
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
19
18
 
@@ -41,7 +40,7 @@ class PhantomRedirect extends solanaCore.SolanaWalletConnector {
41
40
  }
42
41
  connect() {
43
42
  return _tslib.__awaiter(this, void 0, void 0, function* () {
44
- var _a, _b;
43
+ var _a;
45
44
  // Consume the connection type
46
45
  const connectionType = utils.StorageService.getItem(utils.PHANTOM_REDIRECT_CONNECTION_TYPE_KEY);
47
46
  if (connectionType) {
@@ -61,15 +60,16 @@ class PhantomRedirect extends solanaCore.SolanaWalletConnector {
61
60
  const isLocalHost = window.location.href.includes('localhost') ||
62
61
  window.location.href.includes('0.0.0.0') ||
63
62
  window.location.href.includes('127.0.0.1');
64
- const rpc = (_b = (_a = this.solNetworks[0].privateCustomerRpcUrls) === null || _a === void 0 ? void 0 : _a[0]) !== null && _b !== void 0 ? _b : this.solNetworks[0].rpcUrls[0];
63
+ const currentNetwork = this.getSelectedNetwork();
64
+ const cluster = (_a = currentNetwork === null || currentNetwork === void 0 ? void 0 : currentNetwork.cluster) !== null && _a !== void 0 ? _a : 'mainnet-beta';
65
65
  const params = new URLSearchParams({
66
66
  app_url: isLocalHost ? 'https://demo.dynamic.xyz' : window.location.href,
67
- cluster: yield fetchCluster.fetchCluster(rpc),
67
+ cluster,
68
68
  dapp_encryption_public_key: bs58__default["default"].encode(keyPair.publicKey),
69
69
  redirect_link: window.location.href,
70
70
  });
71
71
  const url = buildUrl.buildUrl('connect', params);
72
- window.location.href = url;
72
+ utils.PlatformService.openURL(url);
73
73
  });
74
74
  }
75
75
  getSession() {
@@ -105,7 +105,7 @@ class PhantomRedirect extends solanaCore.SolanaWalletConnector {
105
105
  });
106
106
  const url = buildUrl.buildUrl('signMessage', params);
107
107
  storage.storage.method.set('signMessage');
108
- window.location.href = url;
108
+ utils.PlatformService.openURL(url);
109
109
  // throwing this to prevent local storage from being cleared.
110
110
  // when verifying signature, the SDK calls endSession when no
111
111
  // signature is returned. in the case of phantom mobile, a signature
@@ -224,7 +224,7 @@ class PhantomRedirect extends solanaCore.SolanaWalletConnector {
224
224
  redirect_link: window.location.href,
225
225
  });
226
226
  const url = buildUrl.buildUrl('signAllTransactions', params);
227
- window.location.href = url;
227
+ utils.PlatformService.openURL(url);
228
228
  // actual signatures will be retrieved upon redirect back to dapp
229
229
  return [];
230
230
  }),
@@ -244,7 +244,7 @@ class PhantomRedirect extends solanaCore.SolanaWalletConnector {
244
244
  });
245
245
  const url = buildUrl.buildUrl('signAndSendTransaction', params);
246
246
  storage.storage.method.set('signAndSendTransaction');
247
- window.location.href = url;
247
+ utils.PlatformService.openURL(url);
248
248
  // actual signature will be retrived upon redirect back to dapp
249
249
  return { signature: '' };
250
250
  }),
@@ -262,7 +262,7 @@ class PhantomRedirect extends solanaCore.SolanaWalletConnector {
262
262
  redirect_link: window.location.href,
263
263
  });
264
264
  const url = buildUrl.buildUrl('signMessage', params);
265
- window.location.href = url;
265
+ utils.PlatformService.openURL(url);
266
266
  // actual signature will be retrived upon redirect back to dapp
267
267
  return { signature: Buffer.from('') };
268
268
  }),
@@ -283,7 +283,7 @@ class PhantomRedirect extends solanaCore.SolanaWalletConnector {
283
283
  redirect_link: window.location.href,
284
284
  });
285
285
  const url = buildUrl.buildUrl('signTransaction', params);
286
- window.location.href = url;
286
+ utils.PlatformService.openURL(url);
287
287
  return transaction;
288
288
  }),
289
289
  };
@@ -315,7 +315,7 @@ class PhantomRedirect extends solanaCore.SolanaWalletConnector {
315
315
  redirect_link: window.location.href,
316
316
  });
317
317
  const url = buildUrl.buildUrl('disconnect', params);
318
- window.location.href = url;
318
+ utils.PlatformService.openURL(url);
319
319
  });
320
320
  }
321
321
  /**
@@ -4,12 +4,11 @@ import { PublicKey, Transaction } from '@solana/web3.js';
4
4
  import bs58 from 'bs58';
5
5
  import nacl from 'tweetnacl';
6
6
  import { SolanaWalletConnector } from '@dynamic-labs/solana-core';
7
- import { StorageService, PHANTOM_REDIRECT_CONNECTION_TYPE_KEY } from '@dynamic-labs/utils';
7
+ import { StorageService, PHANTOM_REDIRECT_CONNECTION_TYPE_KEY, PlatformService } from '@dynamic-labs/utils';
8
8
  import { buildUrl } from '../buildUrl/buildUrl.js';
9
9
  import { decryptPayload } from '../decryptPayload/decryptPayload.js';
10
10
  import { encryptPayload } from '../encryptPayload/encryptPayload.js';
11
11
  import { storage, clearStorage } from '../storage/storage.js';
12
- import { fetchCluster } from '../../utils/fetchCluster/fetchCluster.js';
13
12
 
14
13
  class PhantomRedirect extends SolanaWalletConnector {
15
14
  constructor(props) {
@@ -32,7 +31,7 @@ class PhantomRedirect extends SolanaWalletConnector {
32
31
  }
33
32
  connect() {
34
33
  return __awaiter(this, void 0, void 0, function* () {
35
- var _a, _b;
34
+ var _a;
36
35
  // Consume the connection type
37
36
  const connectionType = StorageService.getItem(PHANTOM_REDIRECT_CONNECTION_TYPE_KEY);
38
37
  if (connectionType) {
@@ -52,15 +51,16 @@ class PhantomRedirect extends SolanaWalletConnector {
52
51
  const isLocalHost = window.location.href.includes('localhost') ||
53
52
  window.location.href.includes('0.0.0.0') ||
54
53
  window.location.href.includes('127.0.0.1');
55
- const rpc = (_b = (_a = this.solNetworks[0].privateCustomerRpcUrls) === null || _a === void 0 ? void 0 : _a[0]) !== null && _b !== void 0 ? _b : this.solNetworks[0].rpcUrls[0];
54
+ const currentNetwork = this.getSelectedNetwork();
55
+ const cluster = (_a = currentNetwork === null || currentNetwork === void 0 ? void 0 : currentNetwork.cluster) !== null && _a !== void 0 ? _a : 'mainnet-beta';
56
56
  const params = new URLSearchParams({
57
57
  app_url: isLocalHost ? 'https://demo.dynamic.xyz' : window.location.href,
58
- cluster: yield fetchCluster(rpc),
58
+ cluster,
59
59
  dapp_encryption_public_key: bs58.encode(keyPair.publicKey),
60
60
  redirect_link: window.location.href,
61
61
  });
62
62
  const url = buildUrl('connect', params);
63
- window.location.href = url;
63
+ PlatformService.openURL(url);
64
64
  });
65
65
  }
66
66
  getSession() {
@@ -96,7 +96,7 @@ class PhantomRedirect extends SolanaWalletConnector {
96
96
  });
97
97
  const url = buildUrl('signMessage', params);
98
98
  storage.method.set('signMessage');
99
- window.location.href = url;
99
+ PlatformService.openURL(url);
100
100
  // throwing this to prevent local storage from being cleared.
101
101
  // when verifying signature, the SDK calls endSession when no
102
102
  // signature is returned. in the case of phantom mobile, a signature
@@ -215,7 +215,7 @@ class PhantomRedirect extends SolanaWalletConnector {
215
215
  redirect_link: window.location.href,
216
216
  });
217
217
  const url = buildUrl('signAllTransactions', params);
218
- window.location.href = url;
218
+ PlatformService.openURL(url);
219
219
  // actual signatures will be retrieved upon redirect back to dapp
220
220
  return [];
221
221
  }),
@@ -235,7 +235,7 @@ class PhantomRedirect extends SolanaWalletConnector {
235
235
  });
236
236
  const url = buildUrl('signAndSendTransaction', params);
237
237
  storage.method.set('signAndSendTransaction');
238
- window.location.href = url;
238
+ PlatformService.openURL(url);
239
239
  // actual signature will be retrived upon redirect back to dapp
240
240
  return { signature: '' };
241
241
  }),
@@ -253,7 +253,7 @@ class PhantomRedirect extends SolanaWalletConnector {
253
253
  redirect_link: window.location.href,
254
254
  });
255
255
  const url = buildUrl('signMessage', params);
256
- window.location.href = url;
256
+ PlatformService.openURL(url);
257
257
  // actual signature will be retrived upon redirect back to dapp
258
258
  return { signature: Buffer.from('') };
259
259
  }),
@@ -274,7 +274,7 @@ class PhantomRedirect extends SolanaWalletConnector {
274
274
  redirect_link: window.location.href,
275
275
  });
276
276
  const url = buildUrl('signTransaction', params);
277
- window.location.href = url;
277
+ PlatformService.openURL(url);
278
278
  return transaction;
279
279
  }),
280
280
  };
@@ -306,7 +306,7 @@ class PhantomRedirect extends SolanaWalletConnector {
306
306
  redirect_link: window.location.href,
307
307
  });
308
308
  const url = buildUrl('disconnect', params);
309
- window.location.href = url;
309
+ PlatformService.openURL(url);
310
310
  });
311
311
  }
312
312
  /**
@@ -1,33 +0,0 @@
1
- 'use client'
2
- 'use strict';
3
-
4
- Object.defineProperty(exports, '__esModule', { value: true });
5
-
6
- var _tslib = require('../../../_virtual/_tslib.cjs');
7
-
8
- const GENESIS_HASHES = {
9
- '4uhcVJyU9pJkvQyS88uRDiswHXSCkY3zQawwpjk2NsNY': 'testnet',
10
- '5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d': 'mainnet-beta',
11
- EtWTRABZaYq6iMfeYKouRu166VU2xqa1wcaWoxPkrZBG: 'devnet',
12
- };
13
- const fetchCluster = (rpc_1, ...args_1) => _tslib.__awaiter(void 0, [rpc_1, ...args_1], void 0, function* (rpc, genesisHashesMap = GENESIS_HASHES) {
14
- try {
15
- const { result } = yield (yield fetch(rpc, {
16
- body: JSON.stringify({
17
- id: 1,
18
- jsonrpc: '2.0',
19
- method: 'getGenesisHash',
20
- }),
21
- headers: {
22
- 'Content-Type': 'application/json',
23
- },
24
- method: 'POST',
25
- })).json();
26
- return genesisHashesMap[result];
27
- }
28
- catch (err) {
29
- return 'mainnet-beta';
30
- }
31
- });
32
-
33
- exports.fetchCluster = fetchCluster;
@@ -1 +0,0 @@
1
- export declare const fetchCluster: (rpc: string, genesisHashesMap?: Record<string, string>) => Promise<string>;
@@ -1,29 +0,0 @@
1
- 'use client'
2
- import { __awaiter } from '../../../_virtual/_tslib.js';
3
-
4
- const GENESIS_HASHES = {
5
- '4uhcVJyU9pJkvQyS88uRDiswHXSCkY3zQawwpjk2NsNY': 'testnet',
6
- '5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d': 'mainnet-beta',
7
- EtWTRABZaYq6iMfeYKouRu166VU2xqa1wcaWoxPkrZBG: 'devnet',
8
- };
9
- const fetchCluster = (rpc_1, ...args_1) => __awaiter(void 0, [rpc_1, ...args_1], void 0, function* (rpc, genesisHashesMap = GENESIS_HASHES) {
10
- try {
11
- const { result } = yield (yield fetch(rpc, {
12
- body: JSON.stringify({
13
- id: 1,
14
- jsonrpc: '2.0',
15
- method: 'getGenesisHash',
16
- }),
17
- headers: {
18
- 'Content-Type': 'application/json',
19
- },
20
- method: 'POST',
21
- })).json();
22
- return genesisHashesMap[result];
23
- }
24
- catch (err) {
25
- return 'mainnet-beta';
26
- }
27
- });
28
-
29
- export { fetchCluster };
@@ -1 +0,0 @@
1
- export * from './fetchCluster';