fix: introducing laziness in Transaction Group Details data collection#2430
fix: introducing laziness in Transaction Group Details data collection#2430
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #2430 +/- ##
=======================================
Coverage 99.94% 99.94%
=======================================
Files 180 180
Lines 7017 7017
Branches 1420 1416 -4
=======================================
Hits 7013 7013
Misses 4 4 🚀 New features to boost your workflow:
|
ed3b11a to
f7f4c62
Compare
f7f4c62 to
4bb9fcc
Compare
There was a problem hiding this comment.
Pull request overview
This PR refactors the Transaction Group Details page to reduce UI lag/flicker by moving row-level signing logic into dedicated components and deferring expensive “can sign?” computation until rows are visible.
Changes:
- Introduces
TransactionGroupRowandSignGroupItemButtonto split responsibilities fromTransactionGroupDetails. - Adds
useRevealed()composable to lazily start per-row signing-state computation when a row enters the viewport. - Changes “Sign All” enablement logic to depend on whether at least one signable item exists, instead of tracking signability for every item.
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 8 comments.
| File | Description |
|---|---|
| front-end/src/renderer/pages/TransactionGroupDetails/TransactionGroupDetails.vue | Delegates row rendering, adds “first signable item” tracking for Sign All, and updates state after a row signs. |
| front-end/src/renderer/pages/TransactionGroupDetails/TransactionGroupRow.vue | New row component that lazily computes canSign when revealed and emits row events upward. |
| front-end/src/renderer/pages/TransactionGroupDetails/SignGroupItemButton.vue | New sign button component that signs a transaction and re-fetches updated transaction data. |
| front-end/src/renderer/composables/useRevealed.ts | New composable wrapping an IntersectionObserver to trigger callbacks when an element becomes visible. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
front-end/src/renderer/pages/TransactionGroupDetails/TransactionGroupRow.vue
Show resolved
Hide resolved
front-end/src/renderer/pages/TransactionGroupDetails/TransactionGroupRow.vue
Outdated
Show resolved
Hide resolved
front-end/src/renderer/pages/TransactionGroupDetails/TransactionGroupDetails.vue
Outdated
Show resolved
Hide resolved
front-end/src/renderer/pages/TransactionGroupDetails/TransactionGroupDetails.vue
Outdated
Show resolved
Hide resolved
front-end/src/renderer/pages/TransactionGroupDetails/SignGroupItemButton.vue
Show resolved
Hide resolved
front-end/src/renderer/pages/TransactionGroupDetails/TransactionGroupRow.vue
Show resolved
Hide resolved
front-end/src/renderer/pages/TransactionGroupDetails/TransactionGroupDetails.vue
Outdated
Show resolved
Hide resolved
Signed-off-by: Eric Le Ponner <eric.leponner@icloud.com>
Signed-off-by: Eric Le Ponner <eric.leponner@icloud.com>
Signed-off-by: Eric Le Ponner <eric.leponner@icloud.com>
Signed-off-by: Eric Le Ponner <eric.leponner@icloud.com>
Signed-off-by: Eric Le Ponner <eric.leponner@icloud.com>
Signed-off-by: Eric Le Ponner <eric.leponner@icloud.com>
Signed-off-by: Eric Le Ponner <eric.leponner@icloud.com>
eaa3d27 to
e913e81
Compare
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 5 out of 5 changed files in this pull request and generated 8 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
front-end/src/renderer/pages/TransactionGroupDetails/TransactionGroupDetails.vue
Outdated
Show resolved
Hide resolved
front-end/src/renderer/pages/TransactionGroupDetails/TransactionGroupDetails.vue
Show resolved
Hide resolved
front-end/src/renderer/pages/TransactionGroupDetails/TransactionGroupDetails.vue
Outdated
Show resolved
Hide resolved
front-end/src/renderer/pages/TransactionGroupDetails/TransactionGroupRow.vue
Outdated
Show resolved
Hide resolved
front-end/src/renderer/pages/TransactionGroupDetails/SignGroupItemButton.vue
Outdated
Show resolved
Hide resolved
# Conflicts: # front-end/src/renderer/pages/TransactionGroupDetails/TransactionGroupDetails.vue
Signed-off-by: Eric Le Ponner <eric.leponner@icloud.com>
…upItemAfterSign(). Signed-off-by: Eric Le Ponner <eric.leponner@icloud.com>
Signed-off-by: Eric Le Ponner <eric.leponner@icloud.com>
jbair06
left a comment
There was a problem hiding this comment.
LGTM - manual testing shows a huge improvement in responsiveness - near instant.
Description:
Changes below:
TransactionGroupDetailsto newTransactionGroupRowandSignGroupItemButtonto divide complexitySignbutton state : computation starts only when row becomes visibleSign Allstate computation (it checks that at least one group item is signable ; that's enough)GET /transactions/approve/<transactionId>untilApprovalfeature is fully backedWith those changes:
Signbutton flickering is fully removedSign Allbutton flickering is substantially reduced (but still visible when notification arrives and triggers a full page refresh)Related issue(s):
Fixes #2410
Notes for reviewer:
Checklist