Skip to content

Commit 476dda9

Browse files
committed
Fetch on chain balance
1 parent 8cebd48 commit 476dda9

File tree

3 files changed

+48
-7
lines changed

3 files changed

+48
-7
lines changed

src/generated/client/sdk.gen.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// This file is auto-generated by @hey-api/openapi-ts
22

33
import type { Options as ClientOptions, TDataShape, Client } from '@hey-api/client-fetch';
4-
import type { ListQuotesData, ListQuotesResponse, ListPendingQuotesData, ListPendingQuotesResponse, AdminLookupQuoteData, AdminLookupQuoteResponse, AdminUpdateQuoteData, AdminUpdateQuoteResponse, ResolveOfferData, EnquireQuoteData, EnquireQuoteResponse, LookupQuoteData, LookupQuoteResponse, ActivateKeysetData, ActivateKeysetResponse, DebitData, ECashBalance } from './types.gen';
4+
import type { ListQuotesData, ListQuotesResponse, ListPendingQuotesData, ListPendingQuotesResponse, AdminLookupQuoteData, AdminLookupQuoteResponse, AdminUpdateQuoteData, AdminUpdateQuoteResponse, ResolveOfferData, EnquireQuoteData, EnquireQuoteResponse, LookupQuoteData, LookupQuoteResponse, ActivateKeysetData, ActivateKeysetResponse, DebitData, CreditData, ECashBalance, OnChainBalanceData, OnChainData} from './types.gen';
55
import { client as _heyApiClient } from './client.gen';
66
// import { w } from 'node_modules/react-router/dist/development/lib-CCSAGgcP.d.mts';
77

@@ -113,9 +113,16 @@ export const debitBalance = <ThrowOnError extends boolean = false>(options: Opti
113113
});
114114
};
115115

116-
export const creditBalance = <ThrowOnError extends boolean = false>(options: Options<DebitData, ThrowOnError>) => {
116+
export const creditBalance = <ThrowOnError extends boolean = false>(options: Options<CreditData, ThrowOnError>) => {
117117
return (options.client ?? _heyApiClient).get<ECashBalance, unknown, ThrowOnError>({
118118
url: '/v1/admin/balance/credit',
119119
...options
120120
});
121121
};
122+
123+
export const onchainBalance = <ThrowOnError extends boolean = false>(options: Options<OnChainData, ThrowOnError>) => {
124+
return (options.client ?? _heyApiClient).get<OnChainBalanceData, unknown, ThrowOnError>({
125+
url: '/v1/admin/onchain/balance',
126+
...options
127+
});
128+
};

src/generated/client/types.gen.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -447,3 +447,18 @@ export type CreditData = {
447447
query?: never;
448448
url: '/v1/admin/balance/credit';
449449
};
450+
451+
export type OnChainBalanceData = {
452+
immature: number;
453+
trusted_pending: number;
454+
untrusted_pending: number;
455+
confirmed: number;
456+
};
457+
458+
459+
export type OnChainData = {
460+
body?: never;
461+
path?: never;
462+
query?: never;
463+
url: '/v1/admin/onchain/balance';
464+
};

src/pages/balances/BalancesPage.tsx

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,7 @@ import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"
55
import { Bar, BarChart, CartesianGrid, XAxis, YAxis } from "recharts"
66
import { type ChartConfig, ChartContainer, ChartLegend, ChartLegendContent } from "@/components/ui/chart"
77
import { Skeleton } from "@/components/ui/skeleton"
8-
import { debitBalance, creditBalance } from "@/generated/client/sdk.gen"
9-
// import { ECashBalance } from "@/generated/client/types.gen"
8+
import { debitBalance, creditBalance, onchainBalance } from "@/generated/client/sdk.gen"
109

1110
function Loader() {
1211
return (
@@ -155,11 +154,15 @@ function useBalances() {
155154

156155
try {
157156
// Fetch both credit and debit balances concurrently
158-
const [creditResponse, debitResponse] = await Promise.allSettled([creditBalance({}), debitBalance({})])
157+
const [creditResponse, debitResponse, onchainResponse] = await Promise.allSettled([
158+
creditBalance({}),
159+
debitBalance({}),
160+
onchainBalance({}),
161+
])
159162

160163
const newBalances: Record<string, BalanceDisplay> = {
161-
bitcoin: { amount: "0", unit: "BTC" }, // TODO: Implement bitcoin balance fetching
162-
eiou: { amount: "0", unit: "eIOU" }, // TODO: Implement e-IOU balance fetching
164+
bitcoin: { amount: "0", unit: "BTC" },
165+
eiou: { amount: "0", unit: "eIOU" },
163166
credit: { amount: "0", unit: "credit" },
164167
debit: { amount: "0", unit: "debit" },
165168
}
@@ -196,6 +199,22 @@ function useBalances() {
196199
)
197200
}
198201

202+
if (onchainResponse.status === "fulfilled" && !isErrorResponse(onchainResponse.value)) {
203+
const onchainData = onchainResponse.value.data
204+
if (onchainData && typeof onchainData === "object" && "confirmed" in onchainData) {
205+
console.log("Onchain balance:", onchainData.confirmed)
206+
newBalances.bitcoin = {
207+
amount: String(onchainData.confirmed),
208+
unit: "BTC",
209+
}
210+
}
211+
} else {
212+
console.warn(
213+
"Failed to fetch onchain balance:",
214+
onchainResponse.status === "rejected" ? onchainResponse.reason : onchainResponse.value.error,
215+
)
216+
}
217+
199218
setBalances(newBalances)
200219
} catch (error) {
201220
const errorMessage = error instanceof Error ? error.message : "Unknown error occurred"

0 commit comments

Comments
 (0)