From 24cc46afb679fc2f78ed18b29e7d8b3b9c498fc8 Mon Sep 17 00:00:00 2001 From: Lana Ivina Date: Wed, 22 Jan 2025 10:52:50 +0100 Subject: [PATCH] fix request to Xverse wallet, fetch correct Ordinals address --- apps/web/src/App.tsx | 14 ++++++-------- apps/web/src/connections/satsConnect.ts | 11 ++++++++--- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/apps/web/src/App.tsx b/apps/web/src/App.tsx index 296da2f..968b230 100644 --- a/apps/web/src/App.tsx +++ b/apps/web/src/App.tsx @@ -86,15 +86,13 @@ function App() { const connectBitcoinWalletHandler = async () => { const addresses = await connectBitcoinWallet() - // TODO: replace with the Ordinals address. - // Currently the sats connect lib fetches - // only the Payments address from Xverse. - if (addresses.paymentAddress) { - setTaprootAddress(addresses.paymentAddress) - setBitcoinWallet((prev) => ({ - ...prev, + if (addresses.ordinalsAddress) { + setTaprootAddress(addresses.ordinalsAddress) + setBitcoinWallet({ paymentAddress: addresses.paymentAddress, - })) + ordinalsAddress: addresses.ordinalsAddress, + stacksAddress: addresses.stacksAddress + }) } else { console.error('Ordinals address not found in wallet connection') } diff --git a/apps/web/src/connections/satsConnect.ts b/apps/web/src/connections/satsConnect.ts index dac8eea..eada6ed 100644 --- a/apps/web/src/connections/satsConnect.ts +++ b/apps/web/src/connections/satsConnect.ts @@ -1,4 +1,4 @@ -import { request, AddressPurpose, RpcErrorCode } from "sats-connect"; +import Wallet, { AddressPurpose, RpcErrorCode } from "sats-connect"; /** * Connect to a Bitcoin wallet using sats-connect. @@ -11,7 +11,11 @@ export async function connectBitcoinWallet(): Promise<{ stacksAddress: string | null; }> { try { - const response = await request('wallet_connect', null); + const response = await Wallet.request('wallet_connect', { + message: 'Fetch Bitcoin addresses', + addresses: [AddressPurpose.Payment, AddressPurpose.Ordinals, AddressPurpose.Stacks], + }); + if (response.status === 'success') { const paymentAddressItem = response.result.addresses.find( @@ -24,11 +28,12 @@ export async function connectBitcoinWallet(): Promise<{ (address) => address.purpose === AddressPurpose.Stacks ); - return { + const result = { paymentAddress: paymentAddressItem?.address || null, ordinalsAddress: ordinalsAddressItem?.address || null, stacksAddress: stacksAddressItem?.address || null, }; + return result; } else { if (response.error.code === RpcErrorCode.USER_REJECTION) { console.error('User rejected the connection.');