Add account balance enquiry via GET /accounts/balance
The CBS API now exposes a balance endpoint, which it previously did not. Several comments in the codebase asserted that no such endpoint existed anywhere in the API; those are corrected here rather than left to mislead. Balance is fetched lazily, per account, from the Account Details card: - `accounts.balance` endpoint, `CbsAccountBalance` type, and a `getAccountBalance` query with `keepUnusedDataFor: 0` — a balance is the most perishable figure in the app and must not outlive its screen. - The call is triggered by the customer, not by render. Every call reaches the core banking system, and a balance should not appear over someone's shoulder just for opening a screen. - `supportsBalanceEnquiry` gates the control by account type only, with no status check: a dormant savings account cannot be debited but still has a balance. Deposits are excluded because the endpoint does not serve them. - `ACCOUNT_BALANCE_NOT_AVAILABLE` added to the error catalogue as a non-retryable refusal, so the card states it instead of inviting a tap that gets the identical answer. Also carries in-progress work already present in the tree: customer-facing account type labels (`accountTypeLabel`) applied across the account card, selector, mini statement, balance enquiry and MMID screens. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
2dcb10775c
commit
86f9647437
@@ -5,6 +5,7 @@ import Ionicons from '@react-native-vector-icons/ionicons';
|
||||
|
||||
import { Card, EmptyState, InfoBanner, Loader, ScreenShell } from '../../../components';
|
||||
import { useAccounts } from '../../home/hooks/useAccounts';
|
||||
import { accountTypeLabel } from '../../home/utils/accountRules';
|
||||
import { useTheme, fontFamily } from '../../../theme';
|
||||
import type { CbsAccount } from '../../../types/cbs';
|
||||
import type { ServicesStackParamList } from '../../../navigation/types';
|
||||
@@ -38,7 +39,7 @@ export default function BalanceEnquiryScreen(_props: Props) {
|
||||
</View>
|
||||
<View style={styles.accountCopy}>
|
||||
<Text style={[styles.accountType, { color: theme.colors.primary }]}>
|
||||
{`${account.accountType.toUpperCase()} ACCOUNT`}
|
||||
{accountTypeLabel(account.accountType).toUpperCase()}
|
||||
</Text>
|
||||
<Text style={[styles.accountNumber, { color: theme.colors.textPrimary }]}>
|
||||
{`XXXX ${account.accountNumber.slice(-4)}`}
|
||||
|
||||
Reference in New Issue
Block a user