fix(accounts): учитывать baseCurrency хостера при отображении и синке баланса
Docker / build (push) Has been cancelled

API не всегда возвращает валюту (VDSina UserAPI); раньше подставлялся RUB вместо USD из настроек провайдера.

Co-authored-by: Cursor <[email protected]>
This commit is contained in:
Denozordec
2026-06-29 02:18:40 +07:00
co-authored by Cursor
parent f2c4c7a412
commit 87ab13e9f6
13 changed files with 80 additions and 19 deletions
@@ -1,3 +1,5 @@
import { resolveProviderCurrency } from './currency.js'
/** Баланс API аккаунта (camelCase из API и snake_case в типах). */
export function accountBalanceApi(account: {
balance_api?: number | null
@@ -16,3 +18,26 @@ export function accountBalanceCurrency(account: {
}): string {
return account.balance_currency ?? account.balanceCurrency ?? account.currency ?? 'RUB'
}
/** Валюта баланса с учётом baseCurrency хостера (как effectiveVpsTariffCurrency для тарифов). */
export function effectiveAccountBalanceCurrency(
account: {
balance_currency?: string
balanceCurrency?: string
currency?: string
},
provider?: { baseCurrency?: string | null } | null,
): string {
const provRaw = (provider?.baseCurrency ?? '').trim()
if (provRaw) return provRaw
return accountBalanceCurrency(account)
}
export function syncFallbackCurrency(
account: { currency?: string | null; providerBaseCurrency?: string | null },
): string {
return resolveProviderCurrency(
{ baseCurrency: account.providerBaseCurrency },
account.currency,
)
}
+12
View File
@@ -0,0 +1,12 @@
/** Валюта хостера: настройки провайдера → аккаунт → fallback. */
export function resolveProviderCurrency(
provider?: { baseCurrency?: string | null } | null,
accountCurrency?: string | null,
fallback = 'RUB',
): string {
const fromProvider = (provider?.baseCurrency ?? '').trim()
if (fromProvider) return fromProvider
const fromAccount = (accountCurrency ?? '').trim()
if (fromAccount) return fromAccount
return fallback
}