fix: normalize finance page metadata
This commit is contained in:
@@ -8,6 +8,23 @@ export interface PageResult<T> {
|
||||
pages: number
|
||||
}
|
||||
|
||||
interface PageResultWire<T> extends Omit<PageResult<T>, 'total' | 'page' | 'size' | 'pages'> {
|
||||
total: number | string
|
||||
page: number | string
|
||||
size: number | string
|
||||
pages: number | string
|
||||
}
|
||||
|
||||
function normalizePageResult<T>(result: PageResultWire<T>): PageResult<T> {
|
||||
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<FinanceAccount>({ method: 'GET', url: '/client/finance/v1/account' })
|
||||
}
|
||||
|
||||
export function getAccountLedger(page: number, size: number) {
|
||||
return apiRequest<PageResult<AccountLedgerEntry>>({
|
||||
export async function getAccountLedger(page: number, size: number) {
|
||||
const result = await apiRequest<PageResultWire<AccountLedgerEntry>>({
|
||||
method: 'GET',
|
||||
url: '/client/finance/v1/account/ledger',
|
||||
params: { page, size },
|
||||
})
|
||||
return normalizePageResult(result)
|
||||
}
|
||||
|
||||
export function getRechargeRequests(page: number, size: number) {
|
||||
return apiRequest<PageResult<RechargeRequest>>({
|
||||
export async function getRechargeRequests(page: number, size: number) {
|
||||
const result = await apiRequest<PageResultWire<RechargeRequest>>({
|
||||
method: 'GET',
|
||||
url: '/client/finance/v1/recharge-requests',
|
||||
params: { page, size },
|
||||
})
|
||||
return normalizePageResult(result)
|
||||
}
|
||||
|
||||
export function getRechargeChannels() {
|
||||
|
||||
@@ -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, /<el-pagination (?:v-model:current-page|:current-page)=/)
|
||||
assert.match(apiSource, /function normalizePageResult<[\s\S]*total: Number\(result\.total\)/)
|
||||
assert.match(apiSource, /page: Number\(result\.page\)/)
|
||||
assert.doesNotMatch(viewSource, /requestId|ledgerId|customerId|tenantId/)
|
||||
})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user