Conversation
Implements infinite scroll pagination for menu list, menu item list, and linkable items dropdown with page size of 20. Shows loading spinner when fetching more items. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Fix pagination not triggering after second page by properly tracking state changes in LaunchedEffect keys - Remove inaccurate menu item count from menu list - Remove unused fetchAllMenuItems function - Move Edit Items button to end of menu card, centered vertically - Fix detekt warnings: swallowed exceptions, unused imports, complexity - Extract MenuItemListContent and sibling helper functions Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The ExposedDropdownMenu doesn't support LazyColumn (SubcomposeLayout intrinsic measurement issue), causing crashes when opening the dropdown. This replaces it with a ModalBottomSheet which properly supports pagination with LazyColumn. Also restores PAGE_SIZE to 20 (was 5 for testing). Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This resource was left over after removing the menu item count feature. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Extract duplicate type selection label logic to helper function - Simplify parseErrorMessage by consolidating redundant cases - Consolidate findPreviousSiblingIndex/findNextSiblingIndex into single function Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Prevents race conditions when multiple pagination requests occur in rapid succession. Each pagination function now uses a mutex to ensure atomic read-check-update operations, preventing duplicate items or incorrect pagination state. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Ensure canLoadMore remains true when pagination fails, allowing users to retry after transient errors (network issues, timeouts, etc.). Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Prevents stale data from overwriting state when user rapidly switches between menu item types. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Support all 22 protocols from wp_allowed_protocols(): http, https, ftp, ftps, mailto, news, irc, irc6, ircs, gopher, nntp, feed, telnet, mms, rtsp, sms, svn, tel, fax, xmpp, webcal, urn. Also adds support for anchor links (#section) and protocol-relative URLs (//). Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Derive offset from UI state instead of cache variables to avoid race conditions between initial load and pagination - Set canLoadMore=true on initial load errors to allow retry Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Pre-compute parent-to-children mapping to reduce child lookup from O(n) to O(1) per item, improving overall complexity from O(n²) to O(n log n). Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Use when expression to reduce return statements from 4 to 2. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Use async/await to fetch menus and locations concurrently, reducing initial load time. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Generated by 🚫 Danger |
|
|
|
|
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## trunk #22562 +/- ##
==========================================
- Coverage 38.28% 38.28% -0.01%
==========================================
Files 2237 2237
Lines 111473 111476 +3
Branches 15579 15579
==========================================
Hits 42680 42680
- Misses 65252 65255 +3
Partials 3541 3541 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
…-Android into issue/menus-parallel-requests Conflicts: WordPress/src/main/java/org/wordpress/android/ui/navmenus/NavMenusViewModel.kt
|
Claude finished @nbradbury's task in 49s —— View job Code Review Complete ✓
SummaryThe change successfully parallelizes the Review Feedback✅ What's Good
📝 Observations
🎯 VerificationThe change is focused and minimal (+8/-4 lines), which is ideal for this type of optimization. The implementation correctly handles:
ConclusionThis is a clean, well-implemented performance optimization. The parallel request pattern is used correctly, and the change achieves its stated goal without introducing any issues. ✅ |
|





Description
As part of CMM-1166, the fetchMenus and fetchMenuLocations requests now run in parallel using async/await. This should reduce initial load time since both requests happen simultaneously instead of sequentially.
Testing instructions