This commit is contained in:
@@ -8,6 +8,14 @@ The activities screen shows a local log of completed transfers initiated within
|
||||
|
||||
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
|
||||
@@ -17,7 +25,6 @@ Each row shows:
|
||||
- Recipient name and account number
|
||||
- Transfer amount (hidden as `••••` when hide-amounts is active)
|
||||
- Date and time
|
||||
- Status badge (Completed / Failed)
|
||||
|
||||
Tapping a row opens `TransferReceiptFragment` for that record.
|
||||
|
||||
@@ -29,26 +36,24 @@ A full-screen receipt view shown immediately after a successful transfer and acc
|
||||
|
||||
### Receipt Fields
|
||||
|
||||
| Field | Notes |
|
||||
Schema: `TransferReceiptData` in `ui/home/TransferReceiptData.kt`.
|
||||
|
||||
| Field | Source |
|
||||
|---|---|
|
||||
| Bank | Source bank logo and name |
|
||||
| From account | Sender account number |
|
||||
| To account | Recipient account number |
|
||||
| Recipient name | As resolved at transfer time |
|
||||
| Amount | Formatted with currency |
|
||||
| Remarks | Transfer purpose text |
|
||||
| Reference number | Bank-issued transaction reference |
|
||||
| Date and time | Transfer timestamp |
|
||||
| Status | Completed / Failed |
|
||||
| `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** — generates a text or image summary of the receipt and opens the system share sheet
|
||||
- **Save to Gallery** — renders the receipt as a bitmap and saves it to the device's Pictures folder (requires `WRITE_EXTERNAL_STORAGE` on API < 29, or `MediaStore` on API 29+)
|
||||
- **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
|
||||
|
||||
### Screenshot Note
|
||||
|
||||
If `FLAG_SECURE` is active (user has enabled the screenshots restriction), the Save to Gallery action uses an off-screen rendering path that bypasses the restriction for the explicit save action only.
|
||||
`PixelCopy` reads from the window surface, so both actions fail while `FLAG_SECURE` is active. There is no off-screen rendering fallback.
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user