fix(accounts): учитывать baseCurrency хостера при отображении и синке баланса
Docker / build (push) Has been cancelled
Docker / build (push) Has been cancelled
API не всегда возвращает валюту (VDSina UserAPI); раньше подставлялся RUB вместо USD из настроек провайдера. Co-authored-by: Cursor <[email protected]>
This commit is contained in:
@@ -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,
|
||||
)
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
Reference in New Issue
Block a user