btc-wallet 0.5.52-beta → 0.5.55-beta

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.
@@ -11,3 +11,13 @@ export declare function retryOperation<T>(operation: () => Promise<T> | T, shoul
11
11
  }): Promise<T>;
12
12
  export declare function toHex(originalString: string): string;
13
13
  export declare function isMobile(): boolean;
14
+ export declare function safeJSONParse<T>(str: string): T | undefined;
15
+ export declare function safeJSONStringify(obj: any): string | undefined;
16
+ export declare function storageStore(namespace?: string, options?: {
17
+ storage?: Storage;
18
+ }): {
19
+ set(key: string, value: any): void;
20
+ get<T>(key: string): T | undefined;
21
+ remove(key: string): void;
22
+ clearAll: () => void;
23
+ } | undefined;
@@ -1,9 +1,15 @@
1
1
  import type { Wallet } from '@near-wallet-selector/core';
2
2
  import { type ENV } from '../config';
3
+ interface setupWalletButtonOptions {
4
+ env: ENV;
5
+ nearWallet: Wallet;
6
+ btcWallet?: OriginalWallet;
7
+ walletUrl?: string;
8
+ }
3
9
  interface OriginalWallet {
4
10
  account: string | undefined;
5
11
  getPublicKey: () => Promise<string | undefined>;
6
12
  }
7
- export declare function setupWalletButton(env: ENV, wallet: Wallet, originalWallet: OriginalWallet, walletUrl?: string): void;
13
+ export declare function setupWalletButton({ env, nearWallet, btcWallet, walletUrl, }: setupWalletButtonOptions): void;
8
14
  export declare function removeWalletButton(): void;
9
15
  export {};
package/esm/index.js CHANGED
@@ -164,6 +164,51 @@ function isMobile() {
164
164
  }
165
165
  return false;
166
166
  }
167
+ function safeJSONParse(str) {
168
+ try {
169
+ return JSON.parse(str);
170
+ } catch (e) {
171
+ console.error("safeJSONParse", e);
172
+ return void 0;
173
+ }
174
+ }
175
+ function safeJSONStringify(obj) {
176
+ try {
177
+ return JSON.stringify(obj);
178
+ } catch (e) {
179
+ console.error("safeJSONStringify", e);
180
+ return void 0;
181
+ }
182
+ }
183
+ function storageStore(namespace, options) {
184
+ if (typeof window === "undefined")
185
+ return;
186
+ const _namespace = namespace || "SATOSHI_WALLET_DEFAULT";
187
+ const storage5 = (options == null ? void 0 : options.storage) || (window == null ? void 0 : window.localStorage);
188
+ const namespaceKey = (key) => {
189
+ return _namespace + ":" + key;
190
+ };
191
+ return {
192
+ set(key, value) {
193
+ const _value = safeJSONStringify(value);
194
+ _value ? storage5.setItem(namespaceKey(key), _value) : storage5.removeItem(namespaceKey(key));
195
+ },
196
+ get(key) {
197
+ const _value = storage5.getItem(namespaceKey(key));
198
+ return _value ? safeJSONParse(_value) : void 0;
199
+ },
200
+ remove(key) {
201
+ storage5.removeItem(namespaceKey(key));
202
+ },
203
+ clearAll: function clearAll() {
204
+ for (const key in storage5) {
205
+ if (key.startsWith(namespace + ":")) {
206
+ storage5.removeItem(key);
207
+ }
208
+ }
209
+ }
210
+ };
211
+ }
167
212
 
168
213
  // src/utils/Dialog.ts
169
214
  var Dialog = class {
@@ -706,6 +751,7 @@ import EventEmitter from "events";
706
751
  var xverse_default = "data:image/png;base64,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";
707
752
 
708
753
  // src/connector/xverse.ts
754
+ var storage = storageStore("SATOSHI_WALLET_XVERSE");
709
755
  var _network, _event;
710
756
  var XverseConnector = class extends BaseConnector {
711
757
  constructor() {
@@ -731,7 +777,7 @@ var XverseConnector = class extends BaseConnector {
731
777
  walletType
732
778
  }));
733
779
  console.log("\u{1F680} ~ XverseConnector ~ loadAccounts ~ res:", addresses);
734
- localStorage.setItem("btc-connect-xverse-addresses-" + network, JSON.stringify(addresses));
780
+ storage == null ? void 0 : storage.set(`${network}:addresses`, addresses);
735
781
  return addresses;
736
782
  });
737
783
  __privateGet(this, _event).setMaxListeners(100);
@@ -766,9 +812,9 @@ var XverseConnector = class extends BaseConnector {
766
812
  }
767
813
  getAddresses() {
768
814
  return __async(this, null, function* () {
769
- const data = localStorage.getItem("btc-connect-xverse-addresses-" + __privateGet(this, _network));
815
+ const data = storage == null ? void 0 : storage.get(`${__privateGet(this, _network)}:addresses`);
770
816
  if (data) {
771
- return JSON.parse(data);
817
+ return data;
772
818
  }
773
819
  return [];
774
820
  });
@@ -853,8 +899,7 @@ var XverseConnector = class extends BaseConnector {
853
899
  });
854
900
  }
855
901
  disconnect() {
856
- localStorage.removeItem("btc-connect-xverse-addresses-Mainnet");
857
- localStorage.removeItem("btc-connect-xverse-addresses-Testnet");
902
+ storage == null ? void 0 : storage.remove(`${__privateGet(this, _network)}:addresses`);
858
903
  }
859
904
  };
860
905
  _network = new WeakMap();
@@ -867,6 +912,7 @@ import EventEmitter2 from "events";
867
912
  var magicEden_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADYAAAAgCAYAAABZyotbAAADGklEQVR42sVYTW7aQBT+ZsZk0yy8jWoqIxWK1E16A3KDcoLACRqkGKFugE0VAVLgBElOQHqC0BPUm0q0EMVVoWxZNCsYv25MlR/AY2O73xKZefO9ed+b7w0DgFm+ZrquPCdCAYAOwAbQM0btS0SIaa5aJ6AEIhPR49Ge2SxfM6Urb0B4Fowx1nj5o9WMhpTVJ8J7xA3OKsb3VpdNs9YFAaVN30VBbpqr1omogWQwXyxeZDhhexaJqDHNVetho8zyNTNBUgCga9qfQ+5pCnGQuzMbunTlDf4DuOqHYcjtpe7P12k3XjAnPe4MeJC/BCH3+431YZt249KXEPwIANgka1HgnPg0lFm+Zkopv6qU+aasAzQImPSfy+V+N+M05gCghQnrnRw2kfN0pYdPPOlCiObB8MyJXWOqZTnNVesR6EqXUt7cmQ09cWLryE2yVsm/tTOHXLensLyZSt33Q7eQMBpbpznO+dUmB/ME74xR255kTy8BdqywetcYtSqJntjDk5NS3vmRIqKmMWrbALBYLE88f+e3+kmYO1SF2ADRYJAed/6VacbpzoUQRTDmqCTu1+vTQqTEiKhJRDsaYeYIIcpPfz0YnjmC8yMAc4Vyr0deiulxp7ELOSK3vKl1HwzPHCIqKixTCNIllTUWlhwRNdPjztZy1jTNQcQI1DxCkHukq40uRckoM2flKmLpit5Gy2F19RSulEoXuuuiEtuJreCN3+Wwunr2VKBQzq9uW9eJ3GPbyKnoSnUAJRc9v3KO/II2Ru1LIUQGoCsANmO4BlD220iAAdRO37ZPwuxN27X7eOUWaO7aS92fk6+umCMEL4bdVySWKgjUBlDmCMGPdhlbtCRJeQOogl5Il1LWJ1kryPJfhBCDVTISJSal7CsOoDqCPyuUpJTOJGsVjVHbTqwUJ1mrBOAw5jAmgH7SGjtOKI45efvx0JfYcrlvRxKOJfsMx33mrUEQf7bdPeBzMpSYY3z7ZHMAlfXzkJrXU26/QnRVhspdsfKU7EEbvgBQ8Ehe7/r8taXdFzy96WBMj+ycQLbrUm9l5f4C3RupufZdcK8AAAAASUVORK5CYII=";
868
913
 
869
914
  // src/connector/magicEden.ts
915
+ var storage2 = storageStore("SATOSHI_WALLET_MAGICEDEN");
870
916
  var _network2, _event2;
871
917
  var MagicEdenConnector = class extends BaseConnector {
872
918
  constructor() {
@@ -900,7 +946,7 @@ var MagicEdenConnector = class extends BaseConnector {
900
946
  };
901
947
  getAddress(getAddressOptions).catch((error) => reject(error));
902
948
  });
903
- localStorage.setItem("btc-connect-magicEden-addresses-" + network, JSON.stringify(addresses));
949
+ storage2 == null ? void 0 : storage2.set(`${network}:addresses`, addresses);
904
950
  return addresses;
905
951
  });
906
952
  __privateGet(this, _event2).setMaxListeners(100);
@@ -927,10 +973,9 @@ var MagicEdenConnector = class extends BaseConnector {
927
973
  if (!this.isReady()) {
928
974
  throw new Error(`${this.metadata.name} is not install!`);
929
975
  }
930
- const data = localStorage.getItem("btc-connect-magicEden-addresses-" + __privateGet(this, _network2));
976
+ const data = storage2 == null ? void 0 : storage2.get(`${__privateGet(this, _network2)}:addresses`);
931
977
  if (data) {
932
- const addresses = JSON.parse(data);
933
- return addresses.map((item) => item.address);
978
+ return data.map((item) => item.address);
934
979
  } else {
935
980
  return [];
936
981
  }
@@ -941,10 +986,9 @@ var MagicEdenConnector = class extends BaseConnector {
941
986
  if (!this.isReady()) {
942
987
  throw new Error(`${this.metadata.name} is not install!`);
943
988
  }
944
- const data = localStorage.getItem("btc-connect-magicEden-addresses-" + __privateGet(this, _network2));
989
+ const data = storage2 == null ? void 0 : storage2.get(`${__privateGet(this, _network2)}:addresses`);
945
990
  if (data) {
946
- const addresses = JSON.parse(data);
947
- return addresses[0].publicKey;
991
+ return data[0].publicKey;
948
992
  } else {
949
993
  return "";
950
994
  }
@@ -1057,8 +1101,7 @@ var MagicEdenConnector = class extends BaseConnector {
1057
1101
  });
1058
1102
  }
1059
1103
  disconnect() {
1060
- localStorage.removeItem("btc-connect-magicEden-addresses-Mainnet");
1061
- localStorage.removeItem("btc-connect-magicEden-addresses-Testnet");
1104
+ storage2 == null ? void 0 : storage2.remove(`${__privateGet(this, _network2)}:addresses`);
1062
1105
  }
1063
1106
  };
1064
1107
  _network2 = new WeakMap();
@@ -1152,13 +1195,14 @@ var useConnector = () => {
1152
1195
  const { connectors, setConnectorId } = useConnectProvider();
1153
1196
  const connect = useCallback2(
1154
1197
  (connectorId) => __async(void 0, null, function* () {
1198
+ var _a;
1155
1199
  const connector = connectors.find((item) => item.metadata.id === connectorId);
1156
1200
  if (!connector) {
1157
1201
  throw new Error(`connector id ${connectorId} not found`);
1158
1202
  }
1159
1203
  const accounts = yield connector.requestAccounts();
1160
1204
  if (accounts.length > 0) {
1161
- localStorage.setItem("current-connector-id", connector.metadata.id);
1205
+ (_a = storageStore()) == null ? void 0 : _a.set("current-connector-id", connector.metadata.id);
1162
1206
  setConnectorId(connector.metadata.id);
1163
1207
  }
1164
1208
  }),
@@ -2320,12 +2364,16 @@ var ConnectProvider = ({
2320
2364
  name: ((_a = Object.keys(options.aaOptions.accountContracts)) == null ? void 0 : _a[0]) || "BTC",
2321
2365
  version: ((_c = options.aaOptions.accountContracts[((_b = Object.keys(options.aaOptions.accountContracts)) == null ? void 0 : _b[0]) || "BTC"]) == null ? void 0 : _c[0].version) || "1.0.0"
2322
2366
  });
2323
- const initConnectorId = useCallback7(() => {
2324
- const id = localStorage.getItem("current-connector-id");
2325
- setConnectorId(id || "");
2367
+ const getConnectorId = useCallback7(() => {
2368
+ var _a2;
2369
+ if (typeof window === "undefined") {
2370
+ return "";
2371
+ }
2372
+ const id = (_a2 = storageStore()) == null ? void 0 : _a2.get("current-connector-id");
2373
+ return id != null ? id : "";
2326
2374
  }, []);
2327
2375
  const getConnector = useCallback7(() => {
2328
- const connectorId2 = localStorage.getItem("current-connector-id");
2376
+ const connectorId2 = getConnectorId();
2329
2377
  return connectors.find((item) => item.metadata.id === connectorId2);
2330
2378
  }, [connectorId, connectors]);
2331
2379
  const setAccountContract = useCallback7(
@@ -2339,8 +2387,11 @@ var ConnectProvider = ({
2339
2387
  [options.aaOptions.accountContracts, _setAccountContract]
2340
2388
  );
2341
2389
  useEffect5(() => {
2342
- initConnectorId();
2343
- }, [autoConnect, initConnectorId]);
2390
+ const connectorId2 = getConnectorId();
2391
+ if (connectorId2) {
2392
+ setConnectorId(connectorId2);
2393
+ }
2394
+ }, [autoConnect, getConnectorId]);
2344
2395
  const evmSupportChainIds = useMemo5(() => {
2345
2396
  var _a2;
2346
2397
  let chainIds = (_a2 = options.aaOptions.accountContracts[accountContract.name]) == null ? void 0 : _a2.filter((item) => item.version === accountContract.version).map((item) => item.chainIds).reduce((a, b) => {
@@ -2460,7 +2511,8 @@ var ConnectProvider = ({
2460
2511
  }
2461
2512
  }, [connectorId, connectors]);
2462
2513
  const disconnect = useCallback7(() => {
2463
- localStorage.removeItem("current-connector-id");
2514
+ var _a2;
2515
+ (_a2 = storageStore()) == null ? void 0 : _a2.remove("current-connector-id");
2464
2516
  txConfirmUtils_default.reset();
2465
2517
  if (connector) {
2466
2518
  connector.disconnect();
@@ -2649,7 +2701,8 @@ function BtcWalletSelectorContextProvider({
2649
2701
  new UnisatConnector(),
2650
2702
  new XverseConnector(),
2651
2703
  new OKXConnector(),
2652
- new BitgetConnector()
2704
+ new BitgetConnector(),
2705
+ new MagicEdenConnector()
2653
2706
  ];
2654
2707
  const walletSelectorContextValue = useMemo6(() => {
2655
2708
  const simpleFn = {};
@@ -2888,7 +2941,7 @@ var nearRpcUrls = {
2888
2941
  mainnet: [
2889
2942
  "https://near.lava.build",
2890
2943
  "https://rpc.mainnet.near.org",
2891
- "https://free.rpc.fastnear.com",
2944
+ "https://mw.rpc.fastnear.com",
2892
2945
  "https://near.drpc.org"
2893
2946
  ],
2894
2947
  testnet: ["https://rpc.testnet.near.org"]
@@ -3084,36 +3137,37 @@ var STORAGE_KEYS = {
3084
3137
  PUBLIC_KEY: "btc-wallet-publickey",
3085
3138
  BTC_PUBLIC_KEY: "btc-wallet-btc-publickey"
3086
3139
  };
3140
+ var storage3 = storageStore("SATOSHI_WALLET_ACCOUNT");
3087
3141
  var state_default = {
3088
3142
  saveAccount(account) {
3089
3143
  if (!account) {
3090
3144
  this.removeAccount();
3091
3145
  return;
3092
3146
  }
3093
- window.localStorage.setItem(STORAGE_KEYS.ACCOUNT, account);
3147
+ storage3 == null ? void 0 : storage3.set(STORAGE_KEYS.ACCOUNT, account);
3094
3148
  },
3095
3149
  removeAccount() {
3096
- window.localStorage.removeItem(STORAGE_KEYS.ACCOUNT);
3150
+ storage3 == null ? void 0 : storage3.remove(STORAGE_KEYS.ACCOUNT);
3097
3151
  },
3098
3152
  savePublicKey(publicKey) {
3099
3153
  if (!publicKey) {
3100
3154
  this.removePublicKey();
3101
3155
  return;
3102
3156
  }
3103
- window.localStorage.setItem(STORAGE_KEYS.PUBLIC_KEY, publicKey);
3157
+ storage3 == null ? void 0 : storage3.set(STORAGE_KEYS.PUBLIC_KEY, publicKey);
3104
3158
  },
3105
3159
  removePublicKey() {
3106
- window.localStorage.removeItem(STORAGE_KEYS.PUBLIC_KEY);
3160
+ storage3 == null ? void 0 : storage3.remove(STORAGE_KEYS.PUBLIC_KEY);
3107
3161
  },
3108
3162
  saveBtcPublicKey(publicKey) {
3109
3163
  if (!publicKey) {
3110
3164
  this.removeBtcPublicKey();
3111
3165
  return;
3112
3166
  }
3113
- window.localStorage.setItem(STORAGE_KEYS.BTC_PUBLIC_KEY, publicKey);
3167
+ storage3 == null ? void 0 : storage3.set(STORAGE_KEYS.BTC_PUBLIC_KEY, publicKey);
3114
3168
  },
3115
3169
  removeBtcPublicKey() {
3116
- window.localStorage.removeItem(STORAGE_KEYS.BTC_PUBLIC_KEY);
3170
+ storage3 == null ? void 0 : storage3.remove(STORAGE_KEYS.BTC_PUBLIC_KEY);
3117
3171
  },
3118
3172
  clear() {
3119
3173
  this.removeAccount();
@@ -3129,13 +3183,13 @@ var state_default = {
3129
3183
  this.savePublicKey(publicKey);
3130
3184
  },
3131
3185
  getAccount() {
3132
- return window.localStorage.getItem(STORAGE_KEYS.ACCOUNT) || "";
3186
+ return (storage3 == null ? void 0 : storage3.get(STORAGE_KEYS.ACCOUNT)) || "";
3133
3187
  },
3134
3188
  getPublicKey() {
3135
- return window.localStorage.getItem(STORAGE_KEYS.PUBLIC_KEY) || "";
3189
+ return (storage3 == null ? void 0 : storage3.get(STORAGE_KEYS.PUBLIC_KEY)) || "";
3136
3190
  },
3137
3191
  getBtcPublicKey() {
3138
- return window.localStorage.getItem(STORAGE_KEYS.BTC_PUBLIC_KEY) || "";
3192
+ return (storage3 == null ? void 0 : storage3.get(STORAGE_KEYS.BTC_PUBLIC_KEY)) || "";
3139
3193
  },
3140
3194
  isValid() {
3141
3195
  const account = this.getAccount();
@@ -3831,11 +3885,13 @@ function getCsnaAccountId(env) {
3831
3885
  });
3832
3886
  }
3833
3887
  function checkDepositDisabledAddress() {
3834
- const data = localStorage.getItem("btc-connect-xverse-addresses-Mainnet");
3888
+ var _a;
3889
+ const data = (_a = storageStore("SATOSHI_WALLET_XVERSE")) == null ? void 0 : _a.get(
3890
+ `Mainnet:addresses`
3891
+ );
3835
3892
  if (!data)
3836
3893
  return;
3837
- const addresses = JSON.parse(data);
3838
- const address = addresses == null ? void 0 : addresses[0];
3894
+ const address = data == null ? void 0 : data[0];
3839
3895
  if (address.walletType === "ledger" && !["p2wpkh", "p2sh"].includes(address.addressType)) {
3840
3896
  throw new Error("Ledger is only supported for p2wpkh and p2sh address");
3841
3897
  }
@@ -3872,7 +3928,7 @@ function executeBTCDepositAndAction(_0) {
3872
3928
  throw new Error("Deposit amount or action is required");
3873
3929
  }
3874
3930
  const csna = yield getCsnaAccountId(env);
3875
- const depositAmount = Number(amount || (action == null ? void 0 : action.amount) || 0);
3931
+ const depositAmount = new Big2(amount || (action == null ? void 0 : action.amount) || 0).round(0, Big2.roundDown).toNumber();
3876
3932
  console.log("depositAmount", depositAmount);
3877
3933
  if (depositAmount <= 0) {
3878
3934
  throw new Error("Invalid deposit amount");
@@ -3976,13 +4032,14 @@ function checkSatoshiWhitelist(btcAccountId, env = "mainnet") {
3976
4032
  return __async(this, null, function* () {
3977
4033
  if (env !== "mainnet")
3978
4034
  return;
3979
- const hasShownNotice = localStorage.getItem("btc-wallet-private-mainnet-notice");
4035
+ const storage5 = storageStore();
4036
+ const hasShownNotice = storage5 == null ? void 0 : storage5.get("private-mainnet-notice");
3980
4037
  if (!hasShownNotice) {
3981
4038
  Dialog.alert({
3982
4039
  title: "Notice",
3983
4040
  message: "You are currently using Satoshi Private Mainnet. This is a private version for testing. Please try a small amount of assets in Ramp"
3984
4041
  });
3985
- localStorage.setItem("btc-wallet-private-mainnet-notice", "true");
4042
+ storage5 == null ? void 0 : storage5.set("private-mainnet-notice", "true");
3986
4043
  }
3987
4044
  if (!btcAccountId)
3988
4045
  return;
@@ -4312,7 +4369,13 @@ function uint8ArrayToHex(uint8Array) {
4312
4369
  }
4313
4370
 
4314
4371
  // src/utils/initWalletButton.ts
4315
- function setupWalletButton(env, wallet, originalWallet, walletUrl) {
4372
+ var storage4 = storageStore("SATOSHI_WALLET_BUTTON");
4373
+ function setupWalletButton({
4374
+ env,
4375
+ nearWallet,
4376
+ btcWallet,
4377
+ walletUrl
4378
+ }) {
4316
4379
  console.log(`setupWalletButton ${walletUrl || ""}`);
4317
4380
  if (document.getElementById("satoshi-wallet-button")) {
4318
4381
  return;
@@ -4335,23 +4398,25 @@ function setupWalletButton(env, wallet, originalWallet, walletUrl) {
4335
4398
  closeImageUrl: "https://assets.deltatrade.ai/wallet-assets/wallet-btn-active.png",
4336
4399
  iframe
4337
4400
  });
4338
- setupButtonClickHandler(button, iframe, wallet, originalWallet);
4401
+ setupButtonClickHandler(button, iframe, nearWallet, btcWallet);
4339
4402
  }
4340
4403
  function createFloatingButtonWithIframe({
4341
4404
  openImageUrl,
4342
4405
  closeImageUrl,
4343
4406
  iframe
4344
4407
  }) {
4408
+ var _a;
4345
4409
  const button = document.createElement("img");
4346
4410
  button.id = "satoshi-wallet-button";
4347
- const isIframeVisible = localStorage.getItem("btc-wallet-iframe-visible") === "true";
4411
+ const isIframeVisible = (_a = storage4 == null ? void 0 : storage4.get("visible")) != null ? _a : true;
4348
4412
  button.src = isIframeVisible ? closeImageUrl : openImageUrl;
4349
4413
  iframe.style.display = isIframeVisible ? "block" : "none";
4350
4414
  const windowWidth = window.innerWidth;
4351
4415
  const windowHeight = window.innerHeight;
4352
- const savedPosition = JSON.parse(
4353
- localStorage.getItem("btc-wallet-button-position") || '{"right": "20px", "bottom": "20px"}'
4354
- );
4416
+ const savedPosition = (storage4 == null ? void 0 : storage4.get("position")) || {
4417
+ right: "20px",
4418
+ bottom: "20px"
4419
+ };
4355
4420
  const right = Math.min(Math.max(20, parseInt(savedPosition.right)), windowWidth - 80);
4356
4421
  const bottom = Math.min(Math.max(20, parseInt(savedPosition.bottom)), windowHeight - 80);
4357
4422
  Object.assign(button.style, {
@@ -4447,13 +4512,10 @@ function createFloatingButtonWithIframe({
4447
4512
  isDragging = false;
4448
4513
  button.style.cursor = "grab";
4449
4514
  button.style.transition = "transform 0.15s ease";
4450
- localStorage.setItem(
4451
- "btc-wallet-button-position",
4452
- JSON.stringify({
4453
- right: button.style.right,
4454
- bottom: button.style.bottom
4455
- })
4456
- );
4515
+ storage4 == null ? void 0 : storage4.set("position", {
4516
+ right: button.style.right,
4517
+ bottom: button.style.bottom
4518
+ });
4457
4519
  if (!isDragEvent) {
4458
4520
  handleButtonClick();
4459
4521
  }
@@ -4467,7 +4529,7 @@ function createFloatingButtonWithIframe({
4467
4529
  const newVisibleState = !isCurrentlyVisible;
4468
4530
  iframe.style.display = newVisibleState ? "block" : "none";
4469
4531
  button.src = newVisibleState ? closeImageUrl : openImageUrl;
4470
- localStorage.setItem("btc-wallet-iframe-visible", String(newVisibleState));
4532
+ storage4 == null ? void 0 : storage4.set("visible", newVisibleState);
4471
4533
  setTimeout(() => {
4472
4534
  if (newVisibleState) {
4473
4535
  iframe.focus();
@@ -4481,11 +4543,12 @@ function createIframe({
4481
4543
  iframeUrl,
4482
4544
  iframeStyle = {}
4483
4545
  }) {
4546
+ var _a;
4484
4547
  const iframe = document.createElement("iframe");
4485
4548
  iframe.id = "satoshi-wallet-iframe";
4486
4549
  iframe.allow = "clipboard-read; clipboard-write";
4487
4550
  iframe.src = iframeUrl;
4488
- const isVisible = localStorage.getItem("btc-wallet-iframe-visible") === "true";
4551
+ const isVisible = (_a = storage4 == null ? void 0 : storage4.get("visible")) != null ? _a : true;
4489
4552
  Object.assign(iframe.style, __spreadValues({
4490
4553
  position: "fixed",
4491
4554
  bottom: "90px",
@@ -4500,12 +4563,12 @@ function createIframe({
4500
4563
  return iframe;
4501
4564
  }
4502
4565
  var currentMessageHandler = null;
4503
- function setupButtonClickHandler(button, iframe, wallet, originalWallet) {
4566
+ function setupButtonClickHandler(button, iframe, nearWallet, btcWallet) {
4504
4567
  return __async(this, null, function* () {
4505
4568
  var _a;
4506
- const accountId = (_a = yield wallet == null ? void 0 : wallet.getAccounts()) == null ? void 0 : _a[0].accountId;
4507
- const originalAccountId = originalWallet.account;
4508
- const originalPublicKey = yield originalWallet.getPublicKey();
4569
+ const accountId = (_a = yield nearWallet == null ? void 0 : nearWallet.getAccounts()) == null ? void 0 : _a[0].accountId;
4570
+ const originalAccountId = btcWallet == null ? void 0 : btcWallet.account;
4571
+ const originalPublicKey = yield btcWallet == null ? void 0 : btcWallet.getPublicKey();
4509
4572
  console.log({ accountId, originalAccountId, originalPublicKey });
4510
4573
  const iframeSrc = new URL(iframe.src);
4511
4574
  iframeSrc.searchParams.set("origin", window.location.origin);
@@ -4514,8 +4577,8 @@ function setupButtonClickHandler(button, iframe, wallet, originalWallet) {
4514
4577
  originalPublicKey && iframeSrc.searchParams.set("originalPublicKey", originalPublicKey);
4515
4578
  iframe.src = iframeSrc.toString();
4516
4579
  const actions = {
4517
- signAndSendTransaction: wallet.signAndSendTransaction,
4518
- signAndSendTransactions: wallet.signAndSendTransactions,
4580
+ signAndSendTransaction: nearWallet.signAndSendTransaction,
4581
+ signAndSendTransactions: nearWallet.signAndSendTransactions,
4519
4582
  executeBTCDepositAndAction,
4520
4583
  getWithdrawTransaction
4521
4584
  };
@@ -4560,6 +4623,7 @@ function setupButtonClickHandler(button, iframe, wallet, originalWallet) {
4560
4623
  });
4561
4624
  }
4562
4625
  function removeWalletButton() {
4626
+ console.log("removeWalletButton");
4563
4627
  const button = document.getElementById("satoshi-wallet-button");
4564
4628
  button == null ? void 0 : button.remove();
4565
4629
  const iframe = document.getElementById("satoshi-wallet-iframe");
@@ -4666,7 +4730,12 @@ var BTCWallet = (_0) => __async(void 0, [_0], function* ({
4666
4730
  if (btcPublicKey) {
4667
4731
  yield getNearAccountByBtcPublicKey(btcPublicKey);
4668
4732
  removeWalletButton();
4669
- setupWalletButton(env, wallet, btcContext, metadata.walletUrl);
4733
+ setupWalletButton({
4734
+ env,
4735
+ nearWallet: wallet,
4736
+ btcWallet: btcContext,
4737
+ walletUrl: metadata.walletUrl
4738
+ });
4670
4739
  }
4671
4740
  } else {
4672
4741
  removeWalletButton();
@@ -4909,11 +4978,30 @@ function setupBTCWallet({
4909
4978
  import {
4910
4979
  setupModal as _setupModal
4911
4980
  } from "ref-modal-ui";
4981
+ var subscription;
4912
4982
  function setupWalletSelectorModal(selector, options) {
4913
4983
  if (!selector)
4914
4984
  throw new Error("selector is required");
4985
+ const {
4986
+ showChainGroups = true,
4987
+ showWalletUIForNearAccount = true,
4988
+ env = "mainnet",
4989
+ walletUrl
4990
+ } = options;
4991
+ subscription == null ? void 0 : subscription.unsubscribe();
4915
4992
  const state = selector.store.getState();
4916
4993
  const group = getGroup(state);
4994
+ subscription = selector.store.observable.subscribe((state2) => {
4995
+ const walletId = state2.selectedWalletId;
4996
+ console.log("setupWalletSelectorModal walletId", walletId);
4997
+ if (!walletId)
4998
+ removeWalletButton();
4999
+ if (showWalletUIForNearAccount && walletId !== "btc-wallet") {
5000
+ selector.wallet().then((wallet) => {
5001
+ setupWalletButton({ env, nearWallet: wallet, walletUrl });
5002
+ });
5003
+ }
5004
+ });
4917
5005
  if (group.includes("btc")) {
4918
5006
  document.head.appendChild(document.createElement("style")).textContent = `
4919
5007
  #near-wallet-selector-modal .options-list .btc-wallet {
@@ -4924,7 +5012,7 @@ function setupWalletSelectorModal(selector, options) {
4924
5012
  const modal = _setupModal(selector, options);
4925
5013
  const originalShow = modal.show.bind(modal);
4926
5014
  modal.show = () => __async(this, null, function* () {
4927
- const chain = group.length > 1 ? yield openChainModal() : group[0];
5015
+ const chain = group.length > 1 && showChainGroups ? yield openChainModal() : group[0];
4928
5016
  if (chain === "btc") {
4929
5017
  const module = state.modules.find((module2) => module2.id === "btc-wallet");
4930
5018
  if (module) {
@@ -4981,7 +5069,7 @@ function getGroup(state) {
4981
5069
 
4982
5070
  // src/index.ts
4983
5071
  var getVersion = () => {
4984
- return "0.5.52-beta";
5072
+ return "0.5.55-beta";
4985
5073
  };
4986
5074
  if (typeof window !== "undefined") {
4987
5075
  window.__BTC_WALLET_VERSION = getVersion();