From c9e23fa3270cda59c99c0ac41dde4c044d83bb38 Mon Sep 17 00:00:00 2001
From: veralygit <57183851+veralygit@users.noreply.github.com>
Date: Wed, 30 Oct 2024 17:52:12 +0800
Subject: [PATCH] feat(fractal): add fractal support (#376)

* feat(fractal): add fractal support

* chore: version bump ordit-sdk
---
 packages/ord-connect/package.json            |  2 +-
 packages/ord-connect/src/hooks/useBalance.ts | 10 ++++++++--
 packages/ord-connect/src/hooks/useSend.ts    |  5 +++--
 packages/ord-connect/src/hooks/useSendV2.tsx |  5 +++--
 pnpm-lock.yaml                               | 10 +++++-----
 5 files changed, 20 insertions(+), 12 deletions(-)

diff --git a/packages/ord-connect/package.json b/packages/ord-connect/package.json
index 153c312a..bd9a8e9f 100644
--- a/packages/ord-connect/package.json
+++ b/packages/ord-connect/package.json
@@ -60,7 +60,7 @@
     ]
   },
   "peerDependencies": {
-    "@ordzaar/ordit-sdk": "^2.2.1",
+    "@ordzaar/ordit-sdk": "^3.0.0",
     "react": "^18.3.1",
     "react-dom": "^18.3.1"
   }
diff --git a/packages/ord-connect/src/hooks/useBalance.ts b/packages/ord-connect/src/hooks/useBalance.ts
index 452e8ce6..76d07e61 100644
--- a/packages/ord-connect/src/hooks/useBalance.ts
+++ b/packages/ord-connect/src/hooks/useBalance.ts
@@ -10,7 +10,7 @@ import {
 import { useOrdConnect } from "../providers/OrdConnectProvider";
 
 export function useBalance() {
-  const { network, publicKey, format } = useOrdConnect();
+  const { network, publicKey, format, chain } = useOrdConnect();
   const [error, setError] = useState<string | null>(null);
   const [loading, setLoading] = useState<boolean>(false);
 
@@ -21,6 +21,7 @@ export function useBalance() {
       if (!format || !format.payments || !publicKey || !publicKey.payments) {
         throw new Error("No wallet is connected");
       }
+
       const { address } = getAddressesFromPublicKey(
         publicKey.payments,
         network,
@@ -28,11 +29,16 @@ export function useBalance() {
           AddressType,
           "p2wsh"
         >,
+        chain,
       )[0];
 
-      const datasource = new JsonRpcDatasource({ network });
+      const datasource = new JsonRpcDatasource({
+        chain,
+        network,
+      });
 
       const totalBalance = await datasource.getBalance({ address });
+
       const totalAmountInSats = Number(
         new BigNumber(totalBalance)
           .multipliedBy(100_000_000)
diff --git a/packages/ord-connect/src/hooks/useSend.ts b/packages/ord-connect/src/hooks/useSend.ts
index 3a825c1d..d6f777de 100644
--- a/packages/ord-connect/src/hooks/useSend.ts
+++ b/packages/ord-connect/src/hooks/useSend.ts
@@ -12,7 +12,7 @@ type SendFunction = (
 ) => Promise<string | null>;
 
 export function useSend() {
-  const { wallet, network, address, publicKey } = useOrdConnect();
+  const { wallet, network, address, publicKey, chain } = useOrdConnect();
   const [error, setError] = useState<string | null>(null);
   const [loading, setLoading] = useState<boolean>(false);
 
@@ -35,6 +35,7 @@ export function useSend() {
           address: address.payments,
           feeRate,
           network,
+          chain,
           publicKey: publicKey.payments,
           outputs: [
             {
@@ -53,7 +54,7 @@ export function useSend() {
         });
 
         if (relay) {
-          const datasource = new JsonRpcDatasource({ network });
+          const datasource = new JsonRpcDatasource({ network, chain });
           const txId = await datasource.relay({ hex: signedPsbt.hex });
           setLoading(false);
           return txId;
diff --git a/packages/ord-connect/src/hooks/useSendV2.tsx b/packages/ord-connect/src/hooks/useSendV2.tsx
index aaaecf5b..7adfa8c1 100644
--- a/packages/ord-connect/src/hooks/useSendV2.tsx
+++ b/packages/ord-connect/src/hooks/useSendV2.tsx
@@ -21,7 +21,7 @@ type SendResponse = {
 };
 
 export function useSendV2() {
-  const { wallet, network, address, publicKey } = useOrdConnect();
+  const { wallet, network, address, publicKey, chain } = useOrdConnect();
   const [isLoading, setIsLoading] = useState<boolean>(false);
 
   const send: SendFunction = useCallback(
@@ -49,6 +49,7 @@ export function useSendV2() {
           address: address.payments,
           feeRate,
           network,
+          chain,
           publicKey: publicKey.payments,
           outputs: [
             {
@@ -70,7 +71,7 @@ export function useSendV2() {
         });
 
         if (relay) {
-          const datasource = new JsonRpcDatasource({ network });
+          const datasource = new JsonRpcDatasource({ network, chain });
           const txId = await datasource.relay({ hex: signedPsbt.hex });
           setIsLoading(false);
           return {
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index bc0de2fe..afd08d8e 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -30,8 +30,8 @@ importers:
         specifier: ^2.1.10
         version: 2.1.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@ordzaar/ordit-sdk':
-        specifier: ^2.2.1
-        version: 2.2.1(typescript@5.6.3)(valibot@0.33.2)
+        specifier: ^3.0.0
+        version: 3.0.0(typescript@5.6.3)(valibot@0.33.2)
       bignumber.js:
         specifier: ^9.1.2
         version: 9.1.2
@@ -426,8 +426,8 @@ packages:
     resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==}
     engines: {node: '>=12.4.0'}
 
-  '@ordzaar/ordit-sdk@2.2.1':
-    resolution: {integrity: sha512-iAvx0pcrstrLeuxx0owKvvY+JwfWAX3jQK5WuW+XmUn4SFjcgGxZrGpVZWyfU6tGccpqOZSliUkk5WOT2eaVVw==}
+  '@ordzaar/ordit-sdk@3.0.0':
+    resolution: {integrity: sha512-jCmD7OOOEZ4s8fdN77h+MKPuMkjta5ifGypzxQtFPuNCvAfywSRIzW9X63+AuPGjkFTLovwlMMEuk1v4bAJE2A==}
 
   '@ordzaar/standard-prettier@2.1.2':
     resolution: {integrity: sha512-SkFST4KuvHnIfi5nsGqLCYodAm0Wv7U+6T1vQDwjuwDoL0k0sGcelve3/ZluFN9Z6NMUlw86sIenjzxZWPlu1Q==}
@@ -3196,7 +3196,7 @@ snapshots:
 
   '@nolyfill/is-core-module@1.0.39': {}
 
-  '@ordzaar/ordit-sdk@2.2.1(typescript@5.6.3)(valibot@0.33.2)':
+  '@ordzaar/ordit-sdk@3.0.0(typescript@5.6.3)(valibot@0.33.2)':
     dependencies:
       '@bitcoinerlab/secp256k1': 1.1.1
       '@wallet-standard/core': 1.0.3