From f6ecbc8faf411d29f775d342e322fa2143972241 Mon Sep 17 00:00:00 2001 From: padreug Date: Fri, 7 Nov 2025 21:51:10 +0100 Subject: [PATCH] Fetches and sets default currency for expenses Ensures the expense form defaults to the LNbits instance's configured currency. This change retrieves the default currency from the LNbits API and sets it as the initial value in the expense form. If no default is configured, it falls back to the first available currency or EUR. --- .../expenses/components/AddExpense.vue | 14 ++++++++++-- src/modules/expenses/services/ExpensesAPI.ts | 22 +++++++++++++++++++ 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/src/modules/expenses/components/AddExpense.vue b/src/modules/expenses/components/AddExpense.vue index 48e0950..bcabb71 100644 --- a/src/modules/expenses/components/AddExpense.vue +++ b/src/modules/expenses/components/AddExpense.vue @@ -274,7 +274,7 @@ const form = useForm({ initialValues: { description: '', amount: 0, - currency: 'EUR', + currency: '', // Will be set dynamically from LNbits default currency reference: '', isEquity: false } @@ -284,14 +284,24 @@ const { resetForm, meta } = form const isFormValid = computed(() => meta.value.valid) /** - * Fetch available currencies on component mount + * Fetch available currencies and default currency on component mount */ onMounted(async () => { try { loadingCurrencies.value = true + + // Fetch available currencies const currencies = await expensesAPI.getCurrencies() availableCurrencies.value = currencies console.log('[AddExpense] Loaded currencies:', currencies) + + // Fetch default currency + const defaultCurrency = await expensesAPI.getDefaultCurrency() + + // Set default currency: use configured default, or first available currency, or 'EUR' as final fallback + const initialCurrency = defaultCurrency || currencies[0] || 'EUR' + form.setFieldValue('currency', initialCurrency) + console.log('[AddExpense] Default currency set to:', initialCurrency) } catch (error) { console.error('[AddExpense] Failed to load currencies:', error) toast.error('Failed to load currencies', { description: 'Please check your connection and try again' }) diff --git a/src/modules/expenses/services/ExpensesAPI.ts b/src/modules/expenses/services/ExpensesAPI.ts index 4342c43..08fcd6e 100644 --- a/src/modules/expenses/services/ExpensesAPI.ts +++ b/src/modules/expenses/services/ExpensesAPI.ts @@ -228,4 +228,26 @@ export class ExpensesAPI extends BaseService { throw error } } + + /** + * Get default currency from LNbits instance + */ + async getDefaultCurrency(): Promise { + try { + const response = await fetch(`${this.baseUrl}/api/v1/default-currency`, { + method: 'GET', + signal: AbortSignal.timeout(this.config?.apiConfig?.timeout || 30000) + }) + + if (!response.ok) { + throw new Error(`Failed to fetch default currency: ${response.statusText}`) + } + + const data = await response.json() + return data.default_currency + } catch (error) { + console.error('[ExpensesAPI] Error fetching default currency:', error) + throw error + } + } }