btc-wallet 0.5.5-beta → 0.5.7-beta

Sign up to get free protection for your applications and to get access to all the features.
package/esm/index.js CHANGED
@@ -649,26 +649,18 @@ var XverseConnector = class extends BaseConnector {
649
649
  downloadUrl: "https://www.xverse.app"
650
650
  };
651
651
  this.loadAccounts = (network) => __async(this, null, function* () {
652
- const { getAddress, AddressPurpose } = yield import("sats-connect");
653
- const addresses = yield new Promise((resolve, reject) => {
654
- const getAddressOptions = {
655
- payload: {
656
- purposes: [AddressPurpose.Payment, AddressPurpose.Ordinals],
657
- message: "Address for receiving Ordinals and payments",
658
- network: {
659
- type: network
660
- }
661
- },
662
- onFinish: (response) => {
663
- resolve(response.addresses);
664
- },
665
- onCancel: () => reject({
666
- code: 4001,
667
- message: "User rejected the request."
668
- })
669
- };
670
- getAddress(getAddressOptions).catch((error) => reject(error));
652
+ const { AddressPurpose } = yield import("sats-connect");
653
+ const provider = this.getProvider();
654
+ yield provider.request("wallet_requestPermissions", void 0);
655
+ const { result: walletType } = yield provider.request("wallet_getWalletType", void 0);
656
+ const { result } = yield provider.request("getAddresses", {
657
+ purposes: [AddressPurpose.Payment, AddressPurpose.Ordinals],
658
+ message: "Address for receiving Ordinals and payments"
671
659
  });
660
+ const addresses = result.addresses.map((item) => __spreadProps(__spreadValues({}, item), {
661
+ walletType
662
+ }));
663
+ console.log("\u{1F680} ~ XverseConnector ~ loadAccounts ~ res:", addresses);
672
664
  localStorage.setItem("btc-connect-xverse-addresses-" + network, JSON.stringify(addresses));
673
665
  return addresses;
674
666
  });
@@ -690,78 +682,76 @@ var XverseConnector = class extends BaseConnector {
690
682
  }
691
683
  requestAccounts() {
692
684
  return __async(this, null, function* () {
693
- if (isMobile() && !this.getProvider()) {
694
- MobileWalletConnect.redirectToWallet(this.metadata.id);
695
- return [];
685
+ if (isMobile()) {
686
+ try {
687
+ this.getProvider();
688
+ } catch (error) {
689
+ MobileWalletConnect.redirectToWallet(this.metadata.id);
690
+ return [];
691
+ }
696
692
  }
697
693
  const addresses = yield this.loadAccounts(__privateGet(this, _network));
698
694
  return addresses.map((item) => item.address);
699
695
  });
700
696
  }
701
- getAccounts() {
697
+ getAddresses() {
702
698
  return __async(this, null, function* () {
703
- if (!this.isReady()) {
704
- throw new Error(`${this.metadata.name} is not install!`);
705
- }
706
699
  const data = localStorage.getItem("btc-connect-xverse-addresses-" + __privateGet(this, _network));
707
700
  if (data) {
708
- const addresses = JSON.parse(data);
709
- return addresses.map((item) => item.address);
710
- } else {
711
- return [];
701
+ return JSON.parse(data);
712
702
  }
703
+ return [];
713
704
  });
714
705
  }
715
- getPublicKey() {
706
+ getCurrentAddress() {
716
707
  return __async(this, null, function* () {
717
- if (!this.isReady()) {
718
- throw new Error(`${this.metadata.name} is not install!`);
719
- }
720
- const data = localStorage.getItem("btc-connect-xverse-addresses-" + __privateGet(this, _network));
721
- if (data) {
722
- const addresses = JSON.parse(data);
723
- return addresses[0].publicKey;
724
- } else {
725
- return "";
708
+ const addresses = yield this.getAddresses();
709
+ const address = addresses == null ? void 0 : addresses[0];
710
+ if (!address) {
711
+ throw new Error(`${this.metadata.name} not connected!`);
726
712
  }
713
+ return address;
727
714
  });
728
715
  }
729
- signMessage(signStr) {
716
+ getAccounts() {
730
717
  return __async(this, null, function* () {
731
718
  if (!this.isReady()) {
732
719
  throw new Error(`${this.metadata.name} is not install!`);
733
720
  }
734
- const addresses = yield this.getAccounts();
735
- if (addresses.length === 0) {
736
- throw new Error(`${this.metadata.name} not connected!`);
737
- }
738
- const { signMessage } = yield import("sats-connect");
739
- const sig = yield new Promise((resolve, reject) => {
740
- const signMessageOptions = {
741
- payload: {
742
- network: {
743
- type: __privateGet(this, _network)
744
- },
745
- address: addresses[0],
746
- message: signStr
747
- },
748
- onFinish: (response) => {
749
- resolve(response);
750
- },
751
- onCancel: () => {
752
- reject({
753
- code: 4001,
754
- message: "User rejected the request."
755
- });
756
- }
757
- };
758
- signMessage(signMessageOptions).catch((e) => {
759
- reject(e);
760
- });
721
+ const addresses = yield this.getAddresses();
722
+ return addresses.map((item) => item.address);
723
+ });
724
+ }
725
+ getPublicKey() {
726
+ return __async(this, null, function* () {
727
+ const address = yield this.getCurrentAddress();
728
+ return address.publicKey;
729
+ });
730
+ }
731
+ signMessage(signStr) {
732
+ return __async(this, null, function* () {
733
+ const address = yield this.getCurrentAddress();
734
+ const provider = this.getProvider();
735
+ const { result } = yield provider.request("signMessage", {
736
+ address: address.address,
737
+ message: signStr,
738
+ protocol: "ECDSA"
761
739
  });
762
- const modifiedSig = Buffer.from(sig, "base64");
763
- modifiedSig[0] = 31 + (modifiedSig[0] - 31) % 4;
764
- return modifiedSig.toString("base64");
740
+ const modifiedSig = Buffer.from(result.signature, "base64");
741
+ console.log("xverse walletType", address.walletType);
742
+ console.log("xverse raw sig", result.signature, modifiedSig.toString("base64"));
743
+ if (address.walletType === "ledger") {
744
+ if (address.addressType === "p2wpkh") {
745
+ modifiedSig[0] = 31 + (modifiedSig[0] - 39);
746
+ } else if (address.addressType === "p2sh") {
747
+ modifiedSig[0] = 31 + (modifiedSig[0] - 35);
748
+ }
749
+ } else {
750
+ modifiedSig[0] = 31 + (modifiedSig[0] - 31) % 4;
751
+ }
752
+ const sig = modifiedSig.toString("base64");
753
+ console.log("xverse modified sig", sig);
754
+ return sig;
765
755
  });
766
756
  }
767
757
  on(event, handler) {
@@ -771,9 +761,11 @@ var XverseConnector = class extends BaseConnector {
771
761
  return __privateGet(this, _event).removeListener(event, handler);
772
762
  }
773
763
  getProvider() {
774
- if (this.isReady()) {
775
- return window.BitcoinProvider;
764
+ const provider = window.BitcoinProvider;
765
+ if (!provider) {
766
+ throw new Error(`${this.metadata.name} is not install!`);
776
767
  }
768
+ return provider;
777
769
  }
778
770
  getNetwork() {
779
771
  return __async(this, null, function* () {
@@ -791,9 +783,6 @@ var XverseConnector = class extends BaseConnector {
791
783
  sendBitcoin(toAddress, satoshis) {
792
784
  return __async(this, null, function* () {
793
785
  const provider = this.getProvider();
794
- if (!provider) {
795
- throw new Error(`${this.metadata.name} is not install!`);
796
- }
797
786
  const { result } = yield provider.request("sendTransfer", {
798
787
  recipients: [{ address: toAddress, amount: satoshis }]
799
788
  });
@@ -3368,6 +3357,16 @@ function getCsnaAccountId(env) {
3368
3357
  return csna;
3369
3358
  });
3370
3359
  }
3360
+ function checkDepositDisabledAddress() {
3361
+ const data = localStorage.getItem("btc-connect-xverse-addresses-Mainnet");
3362
+ if (!data)
3363
+ return;
3364
+ const addresses = JSON.parse(data);
3365
+ const address = addresses == null ? void 0 : addresses[0];
3366
+ if (address.walletType === "ledger" && (address.addressType !== "p2wpkh" || address.addressType !== "p2sh")) {
3367
+ throw new Error("Ledger is only supported for p2wpkh and p2sh address");
3368
+ }
3369
+ }
3371
3370
  function executeBTCDepositAndAction(_0) {
3372
3371
  return __async(this, arguments, function* ({
3373
3372
  action,
@@ -3380,6 +3379,7 @@ function executeBTCDepositAndAction(_0) {
3380
3379
  }) {
3381
3380
  var _a;
3382
3381
  try {
3382
+ checkDepositDisabledAddress();
3383
3383
  const { getPublicKey } = getBtcProvider();
3384
3384
  const config = yield getConfig(env);
3385
3385
  const btcPublicKey = yield getPublicKey();
@@ -3822,7 +3822,9 @@ function setupButtonClickHandler(button, iframe, wallet, originalWallet) {
3822
3822
  iframe.src = iframeSrc.toString();
3823
3823
  const actions = {
3824
3824
  signAndSendTransaction: wallet.signAndSendTransaction,
3825
- executeBTCDepositAndAction
3825
+ signAndSendTransactions: wallet.signAndSendTransactions,
3826
+ executeBTCDepositAndAction,
3827
+ getWithdrawTransaction
3826
3828
  };
3827
3829
  window.addEventListener("message", (event) => __async(this, null, function* () {
3828
3830
  var _a2, _b;
@@ -4434,7 +4436,7 @@ function setupBTCWallet({
4434
4436
 
4435
4437
  // src/index.ts
4436
4438
  var getVersion = () => {
4437
- return "0.5.5-beta";
4439
+ return "0.5.7-beta";
4438
4440
  };
4439
4441
  if (typeof window !== "undefined") {
4440
4442
  window.__BTC_WALLET_VERSION = getVersion();