mirror of
https://github.com/Routstr/routstr-core.git
synced 2026-10-05 20:28:23 +00:00
Removes the child-key (shared parent balance) feature and the balance-limit machinery from the entire stack: Backend: - Drop POST /v1/balance/child-key and /v1/balance/child-key/reset - Remove parent-key billing indirection (get_billing_key); every key is charged directly - Remove balance_limit/balance_limit_reset enforcement, reset policies, and the periodic limit-reset background task - Remove child-key guards on refund/history endpoints - Remove child_key_cost setting and /v1/info child_key_cost_msats - Remove balance_limit fields from LightningInvoice model and invoice-creation API - Admin balances API returns plain sums (no parent/child split) Migration (e5a6b7c8d9f0): - Nulls parent_key_hash on children (they become standalone keys; parents keep 100% of their balance, so no funds are lost) - Drops parent_key_hash + balance_limit columns from api_keys and balance_limit columns from lightning_invoices - Verified: upgrade, downgrade, and fund preservation round-trip UI: - Remove child-key creator, child key panels, balance-limit inputs - Key options now offer validity date only - Temporary balances table renders all keys uniformly Tests: child-key suites removed; remaining suites converted to single-key semantics (441 integration + 1313 unit tests pass). Docs updated accordingly.
34 lines
1.1 KiB
TypeScript
34 lines
1.1 KiB
TypeScript
import { useQuery } from '@tanstack/react-query';
|
|
import type { WalletSnapshot } from '@/components/landing/key-info-details';
|
|
|
|
export function useWalletInfo(baseUrl: string, apiKey: string) {
|
|
return useQuery({
|
|
queryKey: ['walletInfo', baseUrl, apiKey],
|
|
queryFn: async (): Promise<WalletSnapshot> => {
|
|
const response = await fetch(`${baseUrl}/v1/balance/info`, {
|
|
headers: {
|
|
'Content-Type': 'application/json',
|
|
Authorization: `Bearer ${apiKey}`,
|
|
},
|
|
});
|
|
|
|
if (!response.ok) {
|
|
const errorText = await response.text();
|
|
throw new Error(errorText || 'Unable to load wallet info');
|
|
}
|
|
|
|
const payload = await response.json();
|
|
return {
|
|
apiKey: payload.api_key || apiKey,
|
|
balanceMsats: payload.balance ?? 0,
|
|
reservedMsats: payload.reserved ?? 0,
|
|
totalRequests: payload.total_requests,
|
|
totalSpent: payload.total_spent,
|
|
validityDate: payload.validity_date,
|
|
};
|
|
},
|
|
enabled: !!baseUrl && !!apiKey,
|
|
staleTime: 5000, // Consider data stale after 5 seconds
|
|
});
|
|
}
|