btc-wallet 0.1.2 → 0.1.4

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/esm/index.js CHANGED
@@ -84,6 +84,7 @@ var InjectedConnector = class extends BaseConnector {
84
84
  requestAccounts() {
85
85
  return __async(this, null, function* () {
86
86
  const accounts = yield this.getProviderOrThrow().requestAccounts();
87
+ console.log("\u{1F680} ~ InjectedConnector ~ requestAccounts ~ accounts:", accounts);
87
88
  return accounts;
88
89
  });
89
90
  }
@@ -649,6 +650,7 @@ var WalletClientProvider = class {
649
650
  }
650
651
  }
651
652
  if (method === "personal_sign" /* personalSign */) {
653
+ console.log("personal_sign ---- ", arg);
652
654
  return new Promise((resolve, reject) => {
653
655
  eventUtils_default.emit("personalSign" /* personalSign */, arg);
654
656
  eventUtils_default.once("personalSignResult" /* personalSignResult */, ({ result, error }) => {
@@ -954,6 +956,7 @@ var ConnectModal = ({ open, onClose }) => {
954
956
  yield connect(connector.metadata.id);
955
957
  closeConnectModal();
956
958
  } catch (error) {
959
+ console.error("onConnect error", error);
957
960
  if (error.code === 4001) {
958
961
  setRetryVisible(true);
959
962
  }
@@ -1496,10 +1499,13 @@ var SignModal = ({ open, onClose, onOpen }) => {
1496
1499
  }), [userOpBundle, smartAccount, accountContract]);
1497
1500
  useEffect4(() => {
1498
1501
  if (userOpBundle && open) {
1502
+ console.log("deserializeUserOp start");
1499
1503
  setDeserializeLoading(true);
1500
1504
  deserializeUserOp().then((result) => {
1505
+ console.log("\u{1F680} ~ deserializeUserOp ~ result:", result);
1501
1506
  setDeserializeResult(result);
1502
1507
  }).catch((error) => {
1508
+ console.log("\u{1F680} ~ deserializeUserOp ~ error:", error);
1503
1509
  eventUtils_default.emit("sendUserOpResult" /* sendUserOpResult */, {
1504
1510
  error
1505
1511
  });
@@ -1510,6 +1516,7 @@ var SignModal = ({ open, onClose, onOpen }) => {
1510
1516
  useEffect4(() => {
1511
1517
  if (open && publicClient && evmAccount && userOpBundle) {
1512
1518
  publicClient.getBalance({ address: evmAccount }).then((result) => setNativeBalance(result)).catch((error) => {
1519
+ console.log("\u{1F680} ~ getBalance ~ error:", error);
1513
1520
  eventUtils_default.emit("sendUserOpResult" /* sendUserOpResult */, {
1514
1521
  error
1515
1522
  });
@@ -1682,6 +1689,7 @@ var AASignerProvider = class {
1682
1689
  this.getPublicClient = () => {
1683
1690
  var _a, _b;
1684
1691
  const rpcUrl = ((_a = this == null ? void 0 : this.rpcUrls) == null ? void 0 : _a[this.chainId]) || ((_b = chains3.getEVMChainInfoById(this.chainId || 1)) == null ? void 0 : _b.rpcUrl);
1692
+ console.log("rpcUrl", rpcUrl);
1685
1693
  return createPublicClient({
1686
1694
  transport: http(rpcUrl)
1687
1695
  });
@@ -1716,8 +1724,10 @@ var AASignerProvider = class {
1716
1724
  return `0x${this.chainId.toString(16)}`;
1717
1725
  } else if (arg.method === "personal_sign" /* personalSign */) {
1718
1726
  let message = (_a = arg.params) == null ? void 0 : _a[0];
1727
+ console.log("personal_sign message:", message);
1719
1728
  if (message.length !== 66) {
1720
1729
  const hash = hashMessage({ raw: message });
1730
+ console.log("personal_sign hash:", hash);
1721
1731
  message = hash;
1722
1732
  }
1723
1733
  const result = yield this.personalSign(message || "");
@@ -1725,15 +1735,19 @@ var AASignerProvider = class {
1725
1735
  if (!convertResult) {
1726
1736
  throw new Error("sign error");
1727
1737
  }
1738
+ console.log(`personal_sign result(${convertResult.length}): `, convertResult);
1728
1739
  return convertResult;
1729
1740
  } else if (arg.method === "eth_signTypedData" || arg.method === "eth_signTypedData_v4") {
1730
1741
  const typedData = (_b = arg.params) == null ? void 0 : _b[1];
1742
+ console.log("signTypedData typedData", typedData);
1731
1743
  const hash = hashTypedData(typeof typedData === "string" ? JSON.parse(typedData) : typedData);
1744
+ console.log("signTypedData hash", hash);
1732
1745
  const result = yield this.personalSign(hash || "");
1733
1746
  const convertResult = convertSignature(result);
1734
1747
  if (!convertResult) {
1735
1748
  throw new Error("sign error");
1736
1749
  }
1750
+ console.log(`eth_signTypedData result(${convertResult.length}): `, convertResult);
1737
1751
  return convertResult;
1738
1752
  } else if (arg.method === "wallet_switchEthereumChain") {
1739
1753
  if (arg.params && arg.params instanceof Array && arg.params[0] && arg.params[0].chainId) {
@@ -1905,6 +1919,7 @@ var ConnectProvider = ({
1905
1919
  setEVMAccount(res);
1906
1920
  }).catch((e) => {
1907
1921
  setEVMAccount(void 0);
1922
+ console.error("smartAccount getAddress error", e);
1908
1923
  });
1909
1924
  } else {
1910
1925
  setEVMAccount(void 0);
@@ -1926,6 +1941,7 @@ var ConnectProvider = ({
1926
1941
  const requestAccount = useCallback7(
1927
1942
  (connector2) => __async(void 0, null, function* () {
1928
1943
  let accounts2 = yield connector2.getAccounts();
1944
+ console.log("requestAccount start, autoConnect", accounts2, autoConnect);
1929
1945
  if (accounts2.length === 0 && autoConnect) {
1930
1946
  accounts2 = yield connector2.requestAccounts();
1931
1947
  }
@@ -1935,7 +1951,9 @@ var ConnectProvider = ({
1935
1951
  );
1936
1952
  const requestDirectAccount = useCallback7(
1937
1953
  (connector2) => __async(void 0, null, function* () {
1954
+ console.log(111);
1938
1955
  let accounts2 = yield connector2.getAccounts();
1956
+ console.log("requestAccount start, autoConnect", accounts2, autoConnect);
1939
1957
  if (accounts2.length === 0) {
1940
1958
  accounts2 = yield connector2.requestAccounts();
1941
1959
  }
@@ -1947,6 +1965,7 @@ var ConnectProvider = ({
1947
1965
  useEffect5(() => {
1948
1966
  if (connector) {
1949
1967
  requestAccount(connector).catch((e) => {
1968
+ console.log("get account error", e);
1950
1969
  setAccounts([]);
1951
1970
  });
1952
1971
  } else {
@@ -2002,6 +2021,7 @@ var ConnectProvider = ({
2002
2021
  })
2003
2022
  })
2004
2023
  );
2024
+ console.log("walletEntryPlugin init");
2005
2025
  }
2006
2026
  }, [options, evmSupportChainIds, accountContract]);
2007
2027
  useEffect5(() => {
@@ -2010,6 +2030,7 @@ var ConnectProvider = ({
2010
2030
  walletEntryPlugin.setWalletCore({
2011
2031
  ethereum: smartAccount.provider
2012
2032
  });
2033
+ console.log("walletEntryPlugin setWalletCore");
2013
2034
  }
2014
2035
  }, [smartAccount, options]);
2015
2036
  useEffect5(() => {
@@ -2017,8 +2038,10 @@ var ConnectProvider = ({
2017
2038
  if (((_a2 = options.walletOptions) == null ? void 0 : _a2.visible) !== false) {
2018
2039
  if (evmAccount) {
2019
2040
  walletEntryPlugin.walletEntryCreate();
2041
+ console.log("walletEntryPlugin walletEntryCreate");
2020
2042
  } else {
2021
2043
  walletEntryPlugin.walletEntryDestroy();
2044
+ console.log("walletEntryPlugin walletEntryDestroy");
2022
2045
  }
2023
2046
  }
2024
2047
  }, [evmAccount, smartAccount, options]);
@@ -2317,6 +2340,7 @@ import { sha256 } from "js-sha256";
2317
2340
 
2318
2341
  // src/utils/initWalletButton.ts
2319
2342
  function setupWalletButton(network, wallet, originalWallet) {
2343
+ console.log("setupWalletButton");
2320
2344
  if (document.getElementById("satoshi-wallet-button")) {
2321
2345
  return;
2322
2346
  }
@@ -2324,6 +2348,13 @@ function setupWalletButton(network, wallet, originalWallet) {
2324
2348
  iframeUrl: network === "testnet" ? "https://wallet-dev.satoshibridge.top" : "https://wallet.satoshibridge.top",
2325
2349
  iframeStyle: { width: "400px", height: "650px" }
2326
2350
  });
2351
+ iframe.addEventListener("mouseenter", () => {
2352
+ var _a;
2353
+ (_a = document.activeElement) == null ? void 0 : _a.setAttribute("tabindex", "null");
2354
+ setTimeout(() => {
2355
+ iframe.focus();
2356
+ }, 0);
2357
+ });
2327
2358
  const button = createFloatingButtonWithIframe({
2328
2359
  openImageUrl: "https://assets.deltatrade.ai/wallet-assets/wallet-btn.png",
2329
2360
  closeImageUrl: "https://assets.deltatrade.ai/wallet-assets/wallet-btn-active.png",
@@ -2363,6 +2394,9 @@ function createFloatingButtonWithIframe({
2363
2394
  iframe.style.display = isCurrentlyVisible ? "none" : "block";
2364
2395
  button.src = isCurrentlyVisible ? openImageUrl : closeImageUrl;
2365
2396
  localStorage.setItem("iframeVisible", String(!isCurrentlyVisible));
2397
+ setTimeout(() => {
2398
+ iframe.focus();
2399
+ }, 0);
2366
2400
  };
2367
2401
  return button;
2368
2402
  }
@@ -2374,9 +2408,6 @@ function createIframe({
2374
2408
  iframe.id = "satoshi-wallet-iframe";
2375
2409
  iframe.allow = "clipboard-read; clipboard-write";
2376
2410
  iframe.src = iframeUrl;
2377
- iframe.onclick = () => {
2378
- iframe.focus();
2379
- };
2380
2411
  Object.assign(iframe.style, __spreadValues({
2381
2412
  position: "fixed",
2382
2413
  bottom: "90px",
@@ -2395,20 +2426,24 @@ function setupButtonClickHandler(button, iframe, wallet, originalWallet) {
2395
2426
  const accountId = (_a = yield wallet == null ? void 0 : wallet.getAccounts()) == null ? void 0 : _a[0].accountId;
2396
2427
  const originalAccountId = originalWallet.account;
2397
2428
  const originalPublicKey = yield originalWallet.getPublicKey();
2429
+ console.log({ accountId, originalAccountId, originalPublicKey });
2398
2430
  const iframeSrc = new URL(iframe.src);
2399
2431
  iframeSrc.searchParams.set("origin", window.location.origin);
2400
2432
  accountId && iframeSrc.searchParams.set("accountId", accountId);
2401
2433
  originalAccountId && iframeSrc.searchParams.set("originalAccountId", originalAccountId);
2402
2434
  originalPublicKey && iframeSrc.searchParams.set("originalPublicKey", originalPublicKey);
2403
2435
  iframe.src = iframeSrc.toString();
2436
+ console.log("iframe src", iframe.src);
2404
2437
  window.addEventListener("message", (event) => __async(this, null, function* () {
2405
2438
  var _a2, _b;
2406
2439
  if (event.origin !== iframeSrc.origin)
2407
2440
  return;
2408
2441
  const { action, requestId, data } = event.data;
2409
2442
  if (action === "signAndSendTransaction") {
2443
+ console.log("signAndSendTransaction message", event.data);
2410
2444
  try {
2411
2445
  const result = yield wallet.signAndSendTransaction(data);
2446
+ console.log("signAndSendTransaction result", result);
2412
2447
  (_a2 = event.source) == null ? void 0 : _a2.postMessage(
2413
2448
  {
2414
2449
  requestId,
@@ -2418,6 +2453,7 @@ function setupButtonClickHandler(button, iframe, wallet, originalWallet) {
2418
2453
  { targetOrigin: event.origin }
2419
2454
  );
2420
2455
  } catch (error) {
2456
+ console.error("signAndSendTransaction error", error);
2421
2457
  (_b = event.source) == null ? void 0 : _b.postMessage(
2422
2458
  {
2423
2459
  requestId,
@@ -2509,6 +2545,7 @@ var BTCWallet = (_0) => __async(void 0, [_0], function* ({
2509
2545
  signAndSendTransaction,
2510
2546
  signAndSendTransactions
2511
2547
  };
2548
+ initWalletButton(options.network.networkId, wallet);
2512
2549
  if (!inter) {
2513
2550
  inter = setInterval(() => __async(void 0, null, function* () {
2514
2551
  const btcContext = window.btcContext;
@@ -2517,6 +2554,7 @@ var BTCWallet = (_0) => __async(void 0, [_0], function* ({
2517
2554
  const context = btcContext.getContext();
2518
2555
  context.on("updatePublicKey", (btcPublicKey) => __async(void 0, null, function* () {
2519
2556
  const { nearTempAddress } = yield getNearAccountByBtcPublicKey(btcPublicKey);
2557
+ console.info("accountsChanged:", nearTempAddress, btcContext.account);
2520
2558
  emitter.emit("accountsChanged", {
2521
2559
  accounts: [
2522
2560
  {
@@ -2530,6 +2568,7 @@ var BTCWallet = (_0) => __async(void 0, [_0], function* ({
2530
2568
  accounts: []
2531
2569
  });
2532
2570
  }));
2571
+ console.log("metadata.autoConnect:", metadata);
2533
2572
  if ("autoConnect" in metadata && metadata.autoConnect && localStorage.getItem("near-wallet-selector:selectedWalletId") === '"btc-wallet"') {
2534
2573
  yield btcContext.autoConnect();
2535
2574
  }
@@ -2537,7 +2576,6 @@ var BTCWallet = (_0) => __async(void 0, [_0], function* ({
2537
2576
  }
2538
2577
  }), 500);
2539
2578
  }
2540
- initWalletButton(options.network.networkId, state.getAccount(), wallet);
2541
2579
  function viewMethod(_02) {
2542
2580
  return __async(this, arguments, function* ({ method, args = {} }) {
2543
2581
  const res = yield provider.query({
@@ -2563,7 +2601,6 @@ var BTCWallet = (_0) => __async(void 0, [_0], function* ({
2563
2601
  state.saveAccount(nearTempAddress);
2564
2602
  state.savePublicKey(nearTempPublicKey);
2565
2603
  state.saveBtcPublicKey(btcPublicKey);
2566
- initWalletButton(options.network.networkId, nearTempAddress, wallet);
2567
2604
  return {
2568
2605
  nearTempAddress,
2569
2606
  nearTempPublicKey
@@ -2572,6 +2609,7 @@ var BTCWallet = (_0) => __async(void 0, [_0], function* ({
2572
2609
  }
2573
2610
  function signIn(_02) {
2574
2611
  return __async(this, arguments, function* ({ contractId, methodNames }) {
2612
+ console.log(provider);
2575
2613
  const accountId = state.getAccount();
2576
2614
  const publicKey = state.getPublicKey();
2577
2615
  const btcContext = window.btcContext;
@@ -2677,6 +2715,7 @@ var BTCWallet = (_0) => __async(void 0, [_0], function* ({
2677
2715
  txBytes,
2678
2716
  (byte) => ("0" + (byte & 255).toString(16)).slice(-2)
2679
2717
  ).join("");
2718
+ console.log("txHex:", txHex);
2680
2719
  const hash = bs58.encode(new Uint8Array(sha256.array(txBytes)));
2681
2720
  return { txBytes, txHex, hash };
2682
2721
  });
@@ -2701,8 +2740,10 @@ var BTCWallet = (_0) => __async(void 0, [_0], function* ({
2701
2740
  btcPubKey: state.getBtcPublicKey(),
2702
2741
  data: toHex(strIntention)
2703
2742
  });
2743
+ console.log("result:", result);
2704
2744
  if (result.result_code === 0) {
2705
2745
  const hash = newTransactions.map((t) => t.hash);
2746
+ console.log("txHash:", hash);
2706
2747
  const result2 = yield pollTransactionStatuses(options.network.networkId, hash);
2707
2748
  return result2;
2708
2749
  } else {
@@ -2710,6 +2751,26 @@ var BTCWallet = (_0) => __async(void 0, [_0], function* ({
2710
2751
  }
2711
2752
  });
2712
2753
  }
2754
+ function initWalletButton(network, wallet2) {
2755
+ return __async(this, null, function* () {
2756
+ console.log("initWalletButton:", network, wallet2);
2757
+ const checkAndSetupWalletButton = () => {
2758
+ const accountId = state.getAccount();
2759
+ const btcContext = window.btcContext;
2760
+ console.log("checkAndSetupWalletButton:", accountId, btcContext.account);
2761
+ if (accountId && btcContext.account) {
2762
+ setupWalletButton(network, wallet2, btcContext);
2763
+ } else {
2764
+ removeWalletButton();
2765
+ !btcContext.account && setTimeout(() => {
2766
+ checkAndSetupWalletButton();
2767
+ }, 5e3);
2768
+ }
2769
+ };
2770
+ yield delay(1e3);
2771
+ checkAndSetupWalletButton();
2772
+ });
2773
+ }
2713
2774
  return wallet;
2714
2775
  });
2715
2776
  function getNonceFromApi(network, accountId) {
@@ -2768,22 +2829,6 @@ function toHex(originalString) {
2768
2829
  hexString = hexString.replace(/(^0+)/g, "");
2769
2830
  return hexString;
2770
2831
  }
2771
- function initWalletButton(network, accountId, wallet) {
2772
- return __async(this, null, function* () {
2773
- yield delay(1e3);
2774
- const checkAndSetupWalletButton = () => {
2775
- if (accountId && window.btcContext.account) {
2776
- setupWalletButton(network, wallet, window.btcContext);
2777
- } else {
2778
- removeWalletButton();
2779
- !window.btcContext.account && setTimeout(() => {
2780
- checkAndSetupWalletButton();
2781
- }, 5e3);
2782
- }
2783
- };
2784
- checkAndSetupWalletButton();
2785
- });
2786
- }
2787
2832
  var rcpUrls = {
2788
2833
  mainnet: [
2789
2834
  "https://near.lava.build",
@@ -2812,14 +2857,17 @@ function pollTransactionStatuses(network, hashes) {
2812
2857
  try {
2813
2858
  const result = yield provider.txStatus(hash, "unused", "FINAL");
2814
2859
  if (result && result.status) {
2860
+ console.log(`Transaction ${hash} result:`, result);
2815
2861
  return result;
2816
2862
  }
2817
2863
  } catch (error) {
2864
+ console.error(`Failed to fetch transaction status for ${hash}: ${error.message}`);
2818
2865
  }
2819
2866
  if (attempt === maxAttempts) {
2820
2867
  throw new Error(`Transaction not found after max attempts: ${hash}`);
2821
2868
  }
2822
2869
  yield delay(1e4);
2870
+ console.log(`RPC request failed for ${hash}, retrying ${maxAttempts - attempt} more times`);
2823
2871
  }
2824
2872
  });
2825
2873
  const results = yield Promise.all(hashes.map((hash) => pollStatus(hash)));
@@ -2829,7 +2877,7 @@ function pollTransactionStatuses(network, hashes) {
2829
2877
 
2830
2878
  // src/index.ts
2831
2879
  var getVersion = () => {
2832
- return "0.1.2";
2880
+ return "0.1.4";
2833
2881
  };
2834
2882
  if (typeof window !== "undefined") {
2835
2883
  window.__PARTICLE_BTC_CONNECT_VERSION = getVersion();