112 lines
3.5 KiB
Markdown
112 lines
3.5 KiB
Markdown
# Element X ADA - Phase 4 Build Result
|
|
|
|
**Date:** 2026-03-28
|
|
**Branch:** `phase1-dev`
|
|
**Commit:** `1dbc4c92c4`
|
|
**Build Status:** ✅ SUCCESS
|
|
|
|
---
|
|
|
|
## Features Implemented
|
|
|
|
### 1. Wallet Setup Flow ✅
|
|
|
|
Created a complete wallet setup flow accessible from `WalletPanelNode.onSetupWallet()`:
|
|
|
|
**New Files:**
|
|
- `features/wallet/impl/.../setup/WalletSetupState.kt` — State data class and events
|
|
- `features/wallet/impl/.../setup/WalletSetupPresenter.kt` — Business logic, wallet generation
|
|
- `features/wallet/impl/.../setup/WalletSetupView.kt` — Compose UI with 5 screens
|
|
- `features/wallet/impl/.../setup/WalletSetupNode.kt` — Appyx navigation node
|
|
|
|
**State Machine:**
|
|
```
|
|
WELCOME → GENERATING → SHOW_ADDRESS → BACKUP_PROMPT → COMPLETE
|
|
```
|
|
|
|
**Features:**
|
|
- "Create New Wallet" calls `CardanoKeyStorage.generateWallet()`
|
|
- "Import Existing Wallet" shows placeholder message (out of scope for alpha)
|
|
- Shows generated Cardano address
|
|
- Displays 24-word mnemonic in 3-column grid
|
|
- FLAG_SECURE enabled when displaying mnemonic (prevents screenshots)
|
|
- "I have written down my recovery phrase" checkbox required
|
|
- Reinitializes wallet manager on completion
|
|
|
|
**SSSS Decision:** Skipped for alpha. Wallet backup is local-only. Added TODO comment for Phase 5 Matrix SSSS integration.
|
|
|
|
### 2. Payment Event Wiring ✅
|
|
|
|
After successful transaction confirmation, the payment event is now sent to the Matrix room timeline:
|
|
|
|
**Modified Files:**
|
|
- `PaymentProgressPresenter.kt` — Added `paymentEventSender`, `roomId`, event sending logic
|
|
- `PaymentProgressNode.kt` — Added `roomId` to `Inputs`
|
|
- `PaymentFlowNode.kt` — Added `roomId` to `NavTarget.Progress`, passthrough logic
|
|
- `MessagesFlowNode.kt` — Added `NavTarget.WalletSetup` and resolve case
|
|
|
|
**Flow:**
|
|
1. Tx builds and signs
|
|
2. Tx submits to Koios
|
|
3. `PaymentStatusPoller` confirms transaction
|
|
4. `SubmissionState.Confirmed` triggers `sendPaymentEvent()`
|
|
5. Payment card appears in room timeline
|
|
|
|
**Error Handling:** Event send failure is non-fatal (tx already succeeded).
|
|
|
|
---
|
|
|
|
## Files Changed
|
|
|
|
| File | Change |
|
|
|------|--------|
|
|
| `setup/WalletSetupState.kt` | New |
|
|
| `setup/WalletSetupPresenter.kt` | New |
|
|
| `setup/WalletSetupView.kt` | New |
|
|
| `setup/WalletSetupNode.kt` | New |
|
|
| `MessagesFlowNode.kt` | Modified — NavTarget.WalletSetup |
|
|
| `PaymentFlowNode.kt` | Modified — roomId passthrough |
|
|
| `PaymentProgressNode.kt` | Modified — roomId in Inputs |
|
|
| `PaymentProgressPresenter.kt` | Modified — event sending |
|
|
|
|
**Total:** 4 new files, 4 modified files, 646 lines added
|
|
|
|
---
|
|
|
|
## Build Output
|
|
|
|
```
|
|
BUILD SUCCESSFUL in 1m 28s
|
|
3819 actionable tasks: 20 executed, 3799 up-to-date
|
|
```
|
|
|
|
Only warnings (deprecation notices, not errors).
|
|
|
|
---
|
|
|
|
## Testing Checklist
|
|
|
|
### Wallet Setup
|
|
- [ ] Open wallet panel with no wallet → "Set Up Wallet" button visible
|
|
- [ ] Click "Set Up Wallet" → navigates to setup screen
|
|
- [ ] Click "Create New Wallet" → spinner → address shown
|
|
- [ ] "Continue to Backup" → 24-word mnemonic displayed
|
|
- [ ] FLAG_SECURE active (screenshots blocked)
|
|
- [ ] Checkbox enables "Complete Setup"
|
|
- [ ] Done → returns to wallet panel with wallet initialized
|
|
|
|
### Payment Event
|
|
- [ ] `/pay 10 addr_test1...` → confirmation → progress
|
|
- [ ] After confirmation → payment card appears in timeline
|
|
- [ ] Card shows tx hash, amount, network
|
|
- [ ] "View on Explorer" opens Cardanoscan
|
|
|
|
---
|
|
|
|
## Next Steps (Phase 5)
|
|
|
|
1. SSSS backup integration when Matrix SDK exposes `setAccountData`
|
|
2. Import existing wallet flow
|
|
3. QR code address sharing
|
|
4. Transaction history tab
|
|
5. Multi-asset support (tokens, NFTs)
|