From 26a89c58dd338fad86b4d6d2e575ab268bd93c49 Mon Sep 17 00:00:00 2001 From: Padreug Date: Sun, 17 May 2026 15:44:23 +0200 Subject: [PATCH] feat(libra/balance): show fiat balances alongside sats Co-Authored-By: Claude Opus 4.7 (1M context) --- src/accounting-app/views/BalancePage.vue | 15 +++++++++++++++ src/modules/expenses/services/ExpensesAPI.ts | 6 +++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/accounting-app/views/BalancePage.vue b/src/accounting-app/views/BalancePage.vue index 2bb7ec3..0a27bf0 100644 --- a/src/accounting-app/views/BalancePage.vue +++ b/src/accounting-app/views/BalancePage.vue @@ -17,9 +17,14 @@ const expensesAPI = injectService(SERVICE_TOKENS.EXPENSES_API) const balance = ref(null) const balanceCurrency = ref('sats') +const fiatBalances = ref>({}) const pendingTransactions = ref([]) const isLoading = ref(true) +const fiatBalanceEntries = computed(() => + Object.entries(fiatBalances.value).filter(([, amount]) => Math.abs(amount) > 0.005) +) + const walletKey = computed(() => user.value?.wallets?.[0]?.inkey) const budgetsEnabled = computed(() => import.meta.env.VITE_LIBRA_BUDGETS_ENABLED === 'true') @@ -55,6 +60,7 @@ async function loadData() { balance.value = balanceData.balance balanceCurrency.value = balanceData.currency || 'sats' + fiatBalances.value = balanceData.fiat_balances || {} // Filter for pending transactions (flag = '!') pendingTransactions.value = txData.entries.filter(tx => tx.flag === '!') @@ -112,6 +118,15 @@ function formatFiat(amount: number, currency: string): string { {{ balanceCurrency }} +
+ + {{ formatFiat(Math.abs(amount), currency) }} + +

{{ libraOwesUser ? t('libra.balance.owedToYou') : t('libra.balance.youOwe') }}

diff --git a/src/modules/expenses/services/ExpensesAPI.ts b/src/modules/expenses/services/ExpensesAPI.ts index 3508910..8cfee1a 100644 --- a/src/modules/expenses/services/ExpensesAPI.ts +++ b/src/modules/expenses/services/ExpensesAPI.ts @@ -245,7 +245,11 @@ export class ExpensesAPI extends BaseService { /** * Get user's balance with libra */ - async getUserBalance(walletKey: string): Promise<{ balance: number; currency: string }> { + async getUserBalance(walletKey: string): Promise<{ + balance: number + currency: string + fiat_balances?: Record + }> { try { const response = await fetch(`${this.baseUrl}/libra/api/v1/balance`, { method: 'GET',