diff --git a/src/modules/finance/api/account.ts b/src/modules/finance/api/account.ts index 1928d09..703036f 100644 --- a/src/modules/finance/api/account.ts +++ b/src/modules/finance/api/account.ts @@ -8,6 +8,23 @@ export interface PageResult { pages: number } +interface PageResultWire extends Omit, 'total' | 'page' | 'size' | 'pages'> { + total: number | string + page: number | string + size: number | string + pages: number | string +} + +function normalizePageResult(result: PageResultWire): PageResult { + return { + ...result, + total: Number(result.total), + page: Number(result.page), + size: Number(result.size), + pages: Number(result.pages), + } +} + export interface FinanceAccount { currencyCode: 'CNY' actualBalance: string @@ -71,20 +88,22 @@ export function getFinanceAccount() { return apiRequest({ method: 'GET', url: '/client/finance/v1/account' }) } -export function getAccountLedger(page: number, size: number) { - return apiRequest>({ +export async function getAccountLedger(page: number, size: number) { + const result = await apiRequest>({ method: 'GET', url: '/client/finance/v1/account/ledger', params: { page, size }, }) + return normalizePageResult(result) } -export function getRechargeRequests(page: number, size: number) { - return apiRequest>({ +export async function getRechargeRequests(page: number, size: number) { + const result = await apiRequest>({ method: 'GET', url: '/client/finance/v1/recharge-requests', params: { page, size }, }) + return normalizePageResult(result) } export function getRechargeChannels() { diff --git a/src/modules/finance/views/FinanceAccountView.test.mjs b/src/modules/finance/views/FinanceAccountView.test.mjs index 3c0d176..db18376 100644 --- a/src/modules/finance/views/FinanceAccountView.test.mjs +++ b/src/modules/finance/views/FinanceAccountView.test.mjs @@ -42,6 +42,8 @@ test('renders server balances, ledger and recharge states without internal ident assert.match(viewSource, /:default-current-page="ledgerPage"/) assert.match(viewSource, /:default-current-page="rechargePage"/) assert.doesNotMatch(viewSource, /