feat: Address Book enhancements - QR fix, Send integration, and Quick Actions#646
feat: Address Book enhancements - QR fix, Send integration, and Quick Actions#646
Conversation
…sing UI on mobile
- Add new send option card to select recipient from address book - Add selection mode to address book when navigated from send page - Show selection banner and enable contact selection - Display address selection dialog for contacts with multiple addresses - Navigate back to send page with selected address - Add translation keys for new feature
…essful send - Add 'Add to Address Book' button to SendSuccessPage when single recipient - Pass recipient address and count from send.vue to SendSuccessPage - Pre-fill address in add-record.vue when address query param present - Add translation key for AddToAddressBook
…ing sends - Add 'Add to Address Book' button to TransactionDetail page for outgoing transactions - Pass recipient address in query params when navigating from send to transaction detail - Show button only when recipient query param is present and transaction is outgoing - Remove Add to Address Book from SendSuccessPage (consolidation transactions don't need it) - Navigate to add-record page with pre-filled address when clicked
- Move canAddToAddressBook and recipientAddress from watch to computed section - Remove duplicate definitions that were causing Vue warning
- Add fetchTransactionDetails method to get raw transaction data with outputs - Extract recipient address from transaction outputs (non-change outputs) - Show Add to Address Book button for all outgoing transactions - Handle cases with single or multiple outputs by selecting largest non-change output - Cache fetched transaction details to avoid duplicate API calls
…tton - Add isChipnet parameter to getWatchtowerApiUrl call - Add debug logging to fetchTransactionDetails method - Add debug logging to canAddToAddressBook and extractedRecipientAddress - Also trigger fetchTransactionDetails in mounted hook as fallback
- API returns {valid: true, details: {outputs: [...]}} not {outputs: [...]}
- Update fetchTransactionDetails to extract outputs from data.details
- Update extractedRecipientAddress to check both data.details.outputs and data.outputs
… Actions - Replace scattered action buttons with unified Quick Actions section - Display three action buttons in a responsive grid layout - Each action has icon and concise label - Add hover effects and smooth transitions - Simplify memo display/edit sections to be more compact - Add translation keys for EditMemo and QuickActions - Professional styling with glassmorphic design elements
- Method was only checking .query.recipient - Now uses this.recipientAddress which handles both query params and extracted addresses - Add debug logging to help diagnose any remaining issues
… detail view - Quick Actions now collapsed by default with subtle toggle button - Click to expand and reveal Save Receipt, Add/Edit Memo, and Add Contact actions - Compact card design when expanded with subtle hover effects - Smooth slide transition for expand/collapse - Reduced visual weight with smaller icons and tighter spacing - Show less prominent when collapsed to reduce page clutter
- Move memo input section above Quick Actions section - Hide Quick Actions container when editing memo to reduce clutter - Show memo input prominently when adding/editing - Show Quick Actions again after memo is saved or cancelled - Clean up duplicate Quick Actions section from earlier refactoring
- Increase collapsed toggle text from 12px to 14px with medium font weight - Add padding and opacity adjustments for better visual presence - Replace text-caption class with custom quick-actions-title class (15px, font-weight 600) - Make Quick Actions header more prominent in expanded state
- Increase font-size from 12px to 14px - Add font-weight: 500 for better prominence - Increase padding slightly for better touch target - Increase opacity from 0.7 to 0.8
- Collapse Quick Actions section after successfully saving a memo - Collapse Quick Actions after canceling memo edit - Collapse Quick Actions after successfully deleting a memo - Keeps the interface clean after memo interactions
- Auto-translate new keys to all supported languages - New keys: AddToAddressBook, EditMemo, ErrorLoadingContact, NoAddressesFound, QuickActions, SelectFromAddressBook, SelectContactFromAddressBook, OpenAddressBook, SelectContactPrompt
PR Review: Address Book EnhancementsSummaryThis PR introduces well-scoped improvements to the address book functionality with QR scanner fixes, Send page integration, and a new Quick Actions UI. Overall, the implementation is solid with good attention to UX details. Code Review✅ Strengths1. QR Scanner Fix (commit 741de72)
2. Address Book Selection Flow
3. Quick Actions UI (TransactionDetail.vue)
4. Translation Coverage
5. Address Extraction Logic
|
| File | Changes | Assessment |
|---|---|---|
| TransactionDetail.vue | +455/-111 | Major refactoring for Quick Actions, well-structured |
| address-book/index.vue | +107/-9 | Clean selection mode implementation |
| send.vue | +43/-1 | Good integration point for address book selection |
| add-record.vue | +52/-1 | QR scanner positioning fix |
| RecordList.vue | +16/-3 | Selection mode support |
| i18n files (21) | +10-17 each | Complete translation coverage |
Final Verdict
LGTM (Looks Good To Me) - The PR is well-structured, solves real UX problems, and maintains code quality. The minor issues noted are not blockers:
- Debug logs could be cleaned up but don't affect functionality
- Missing loading state is an edge case
- The Quick Actions UI provides a significant UX improvement
Optional before merge: Remove debug console logs from TransactionDetail.vue to keep production code clean.
…tates - Remove all console.log debug statements from TransactionDetail.vue - Fix loadingTxDetails flag not being reset when returning early in fetchTransactionDetails - Add loadingRecordId state to address-book/index.vue to prevent double-clicks - Show loading spinner in RecordList when fetching record details - Disable record clicking while loading to prevent multiple requests
Code Review: Address Book EnhancementsThis PR delivers well-scoped improvements with clean implementation across four key features. ✅ StrengthsQR Scanner Fix - Properly moves scanner components outside Send Page Integration - Clean implementation with:
Recipient Address Extraction - Robust logic in TransactionDetail.vue:
Quick Actions UI - Well-architected with:
Translations - All 9 new keys properly added to all 21 language files:
|
…etails - Check for txid before setting loadingTxDetails to true - Prevents loading flag from being stuck in true state on early return - Ensures consistent state management
|
Based on the context provided, here's my review: PR Review: Address Book EnhancementsOverviewWell-structured PR with 4 key improvements. Good scope and implementation quality. Key Changes ReviewedQR Scanner Fix ✅
Send Page Integration ✅
Quick Actions UI ✅
Translations ✅
Issues Found1. Debug Console Logs (Non-blocking) 2. Loading State Edge Case (Minor) 3. No Loading Indicator (Minor) Verdict: APPROVEClean implementation with thoughtful UX details. The debug logs are the only real cleanup needed—functionality is solid. Previous reviewers (opencode-agent) also gave LGTM with similar minor notes. Ready to merge after removing debug logging. |



Summary
This PR enhances the address book functionality with QR scanner fixes, new "Select from Address Book" feature in the Send page, and the ability to save recipient addresses to the address book after transactions.
Changes
🔧 QR Scanner Fix
QrScannerandQRUploadercomponents outside#app-containerin address book pages📇 Send Page - Select from Address Book
💾 Save Recipient to Address Book
🎨 Quick Actions UI
📝 New Translation Keys
AddToAddressBook- Button labelEditMemo- Edit memo buttonQuickActions- Section headerSelectFromAddressBook- Send page option titleSelectContactFromAddressBook- Send page descriptionOpenAddressBook- Button labelSelectContactPrompt- Selection mode bannerNoAddressesFound- Error messageErrorLoadingContact- Error messageTesting
Files Changed
src/components/address-book/AddressesFormCard.vuesrc/components/address-book/EditRecordDialog.vuesrc/components/address-book/RecordList.vuesrc/components/send-page/SendSuccessPage.vuesrc/pages/apps/address-book/add-record.vuesrc/pages/apps/address-book/index.vuesrc/pages/transaction/send.vuesrc/pages/transactions/TransactionDetail.vuesrc/i18n/*/index.js(all language files)Checklist