Files
fksar/docs/thijooree/09-activities.md
T
2026-06-13 21:30:12 +05:00

71 lines
2.6 KiB
Markdown

# Activities
The activities screen shows a local log of completed transfers initiated within the app, along with receipt viewing and sharing.
---
## Fragment — `ActivitiesFragment`
Displays a chronological `RecyclerView` of locally stored transfer records. These records are written by the app at transfer completion time — they are not fetched from bank APIs.
A search bar at the top filters loaded entries by recipient label / account / remarks (`ActivitiesFragment.kt:52-58`).
### Storage
Backed by `util/ReceiptStore` — a single encrypted JSON file at `filesDir/activities.json` (via `CacheEncryption`). Each entry is a `TransferReceiptData` plus a `savedAt` timestamp.
Only successful transfers are saved. The save call is guarded by `ok && receipt != null` (`TransferFragment.kt:1201`), so there is no "Failed" status — failures stay as a toast / dialog and never persist.
---
## Activity List
Each row shows:
- Bank logo
- Recipient name and account number
- Transfer amount (hidden as `••••` when hide-amounts is active)
- Date and time
Tapping a row opens `TransferReceiptFragment` for that record.
---
## Transfer Receipt — `TransferReceiptFragment`
A full-screen receipt view shown immediately after a successful transfer and accessible later from the activities list.
### Receipt Fields
Schema: `TransferReceiptData` in `ui/home/TransferReceiptData.kt`.
| Field | Source |
|---|---|
| `bank` | `"MIB"` / `"BML"` / `"FAHIPAY"` |
| `amount` / `currency` | Entered + source-account currency |
| `fromLabel` / `fromColorHex` / `fromProfileImageHash` | Captured source account display |
| `toLabel` / `toAccount` / `toBank` | Resolved recipient |
| `remarks` | Free text the user entered |
| `mibReferenceNo` / `mibTransactionDate` | Populated for MIB transfers |
| `bmlFromName` / `bmlReference` / `bmlTimestamp` / `bmlMessage` | Populated for BML transfers |
### Actions
- **Share** — `captureReceiptBitmap()` uses `PixelCopy` over the receipt card, writes a PNG to `cacheDir/receipts/`, exposes it via `FileProvider`, and fires `ACTION_SEND`
- **Save to Gallery** — same capture, then writes to `MediaStore.Images` (`Pictures/`) on API 29+ or directly to `Environment.DIRECTORY_PICTURES` on older releases
`PixelCopy` reads from the window surface, so both actions fail while `FLAG_SECURE` is active. There is no off-screen rendering fallback.
---
## Empty State
If no local transfer records exist, an empty-state illustration is shown with a prompt to make a transfer.
---
 
---
[← Contacts](08-contacts.md)     **Next →** [OTP Screen](10-otp-screen.md)