Add Deck browsing feature with controller, UI, routing, and format helpers - #44
Add Deck browsing feature with controller, UI, routing, and format helpers#44ercmine wants to merge 1 commit into
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 684ff1536e
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| state = state.copyWith( | ||
| isLoadingInitial: true, | ||
| plans: const [], | ||
| nextCursor: null, | ||
| errorMessage: null, | ||
| ); |
There was a problem hiding this comment.
Clear swipe history when starting a refresh
This refresh path resets plans and pagination state but keeps undoStack/shownPlanIds from the prior deck session. In the common flow where a user swipes through cards, taps Retry, and then uses Undo, undo() can reinsert stale cards from the previous batch into the newly fetched deck, and position tracking continues from old history. A refresh should reset swipe history to avoid mixing old and new decks.
Useful? React with 👍 / 👎.
| nextCursor: response.nextCursor, | ||
| hasMore: response.nextCursor != null, | ||
| lastBatchMix: response.mix, | ||
| usedFallback: response.plans.isEmpty || fallbackCount >= (response.plans.length ~/ 2), |
There was a problem hiding this comment.
Fix fallback threshold for small or odd batch sizes
The fallback flag uses fallbackCount >= (response.plans.length ~/ 2), which rounds the denominator down. That makes single-item batches always report fallback active (length == 1 gives threshold 0) and marks some odd-sized batches as fallback even when under 50%. This causes incorrect fallback messaging and telemetry interpretation for normal responses.
Useful? React with 👍 / 👎.
Motivation
Description
deck_state.dart), controller (deck_controller.dart) with telemetry, location and repository integration, and a new route at/sessions/:id/deckwired intorouter.dartandsession_page.dart.deck_page.dartand a set of widgets for cards and details (deck_card.dart,deck_card_skeleton.dart,deck_actions_bar.dart,card_details_sheet.dart, and several small badges/pills), and hooked link launching into existinglinkLauncherProviderusage.deckControllerProviderinproviders/app_providers.dart, added format helpers incore/format/formatters.dart, and updatedpubspec.yamlto includeflutter_card_swiper,cached_network_image, andcollectiondependencies.Testing
flutter analyzeto ensure static analysis and imports are correct and it completed successfully.flutter testand unit/widget tests completed successfully (no failing tests).Codex Task