2.3 KiB
Account History
Displays the transaction history for a single account. Opened by tapping an account row in the accounts list.
Fragment — AccountHistoryFragment
Receives the selected BankAccount via AccountHistoryFragment.newInstance(account).
Data Loading
On open, the fragment calls the appropriate bank API to fetch the first page of transactions:
| Bank | API |
|---|---|
| MIB | MIB transaction history endpoint (Blowfish-encrypted) |
| BML | BML transaction history endpoint (OAuth Bearer) |
| Fahipay | Fahipay wallet transaction list |
Results are mapped to a common display model and shown in a RecyclerView.
Infinite Scroll
The list supports infinite scroll (pagination) with a page size of 10. When the user scrolls near the bottom of the loaded items, the next page is automatically fetched and appended. A loading spinner appears at the bottom while a page is in flight.
Page state (current page, total pages) is tracked in the fragment's ViewModel. If the last page has been reached the spinner is hidden and no further requests are made.
For MIB accounts a per-account encrypted disk cache (util/mibapi/TransactionCache) seeds the first page from local storage, so reopening an account history is instant while the live fetch refreshes in the background.
Search / Filter
A search bar at the top of the screen filters the loaded transaction list by:
- Description / narrative text
- Amount string
Filtering is performed locally on already-loaded pages — it does not trigger a new API call. Clearing the search bar restores the full list.
Transaction Rows
Each row shows:
- Transaction date and time
- Description / merchant name
- Debit or credit indicator
- Amount (hidden as
••••when hide-amounts is active) - Running balance (where available from the bank API)
Image Loading
Some MIB transaction entries include merchant logo URLs. These are loaded asynchronously into the row's image view with a generic fallback icon. Images are cached in memory for the session.
Empty State
If no transactions exist (new account or API returned empty list) an empty-state message is shown.
← Accounts Next → Transfer History