feat(profile): implement profile flow - #61
Merged
Merged
Conversation
* build(deps): add image_picker for profile avatar flow * feat(profile): add profile api contract * feat(profile): add profile repository layer * test(profile): add repository coverage * feat(profile): add profile presentation cubits * test(profile): add cubit coverage * feat(profile): add profile user section ui * docs(changelog): document profile user section * chore(deps): update file_picker to the latest version * fix(profile): map auth failures as request failures * fix(profile): harden user section interactions
* feat(profile): add statistics api contract * feat(profile): extend profile snapshot for statistics history * feat(profile): add statistics domain models and contracts * feat(profile): implement statistics repositories * test(profile): add statistics repository and mapper coverage * feat(profile): add statistics cubit and state * test(profile): add statistics cubit coverage * feat(profile): wire statistics bootstrap state * feat(profile): add profile statistics ui * test(profile): add profile page widget coverage * docs(changelog): document profile statistics section * refactor(profile): regroup statistics dto contracts * fix(profile): improve statistics frequency mapping and bootstrap flow * feat(profile): polish statistics widgets and layout * fix(ui): add compact option buttons and flexible profile overlays * test(profile): align statistics fixtures and coverage * test(profile): remove obsolete profile page widget coverage * docs: update CHANGELOG.md * fix(profile-stats): show stats error state on failed refresh * fix(profile): reuse cached trend stats on mode switc * test(profile): cover statistics cubit failure states
* feat(profile): extend profile bootstrap with phase snapshot * test(profile): add phase bootstrap repository coverage * feat(profile): add current phase summary to profile statistics flow * test(profile): add current phase summary coverage * feat(profile-ui): add current phase section UI * docs: update CHANGELOG.md * fix(profile-ui): polish ui and decline current phase rounded training count in russian * chore(profile): align phase dto nullability and cache cleanup
… reload sync (#55) * feat(profile): extend profile bootstrap with phase snapshot * test(profile): add phase bootstrap repository coverage * feat(profile): add current phase summary to profile statistics flow * test(profile): add current phase summary coverage * feat(profile-ui): add current phase section UI * docs: update CHANGELOG.md * fix(profile-ui): polish ui and decline current phase rounded training count in russian * feat(params): add profile params api contract * feat(params-domain): add profile parameters repository contract * feat(params-data): implement profile parameters repository * test(params-repo): add unit tests for repository (+ fixtures) * feat(params): add ProfileParametersCubit and state * test(params): add unit tests for ProfileParametersCubit * feat(params-ui): add profile parameters section UI * docs: update CHANGELOG.md * chore(profile): align phase dto nullability and cache cleanup * refactor(params-ui): polish ProfileParametersSectionWidget layout * test(params): add dio exception test for saving one param * refactor(profile): reload workouts only for plan-affecting parameter changes * refactor(profile): add typed request dto for parameters api * fix(profile): guard parameters flow against load-submit races * fix(profile): cache nullable parameters snapshot from profile bootstrap * fix(profile): handle equipment options safely in parameters form * docs: refine profile changelog wording
… and legal links (#56) * feat(auth): add authenticated sign-out session cleanup * test(auth): cover signOut cleanup flow * feat(profile): add delete profile api contract * feat(profile-data): implement delete profile repository action * refactor(auth): reuse token cleanup helper in signOut * test(profile-repo): add delete profile repository coverage * feat(profile): add DeleteProfileCubit * test(profile): add delete profile cubit coverage * feat(profile-ui): add profile bottom section actions and legal links * refactor(debug): simplify debug screen placeholder * docs: update CHANGELOG.md * fix(profile-ui): make profile bottom dialogs safer * refactor(router): reuse legal document redirect guard * fix(profile): keep bottom actions available in profile fallback state * fix(profile): make fallback state scrollable with bottom actions * fix(profile): uncomment code lines
commit f58581b Author: Ryan Delaney <145113692+CowboyGH@users.noreply.github.com> Date: Fri Apr 3 15:14:23 2026 +0700 feat(subscriptions): add authenticated subscriptions catalog, details, and payment flow (#58) * feat(subs-domain): add details and payment contracts * feat(subs-data): implement details lookup and payment command * test(subs-repo): add details and payment repository coverage * feat(subs): add details and payment cubits * test(subs): add details and payment cubit coverage * feat(subs-ui): add subscription details screen * feat(subs-ui): add payment dialog * feat(subs-ui): open details from catalog cards * fix(subs-ui): wire catalog details navigation context * docs: update CHANGELOG.md * feat(subs-data): fetch details by id and map subscriptions failures * feat(subs-ui): align subscription details screen with mockups * feat(subs-payment): polish payment dialog and validators * fix(subs-ui): update card preview number on input * fix(subs-ui): update card preview number on input * fix(subs-payment): reject non-digit cvv values * fix(subs-ui): guard catalog navigation and card accessibility * fix(subs-data): localize subscription not found mapping * fix(subs-payment): sanitize payment failure mapping * fix(subs-ui): obscure CVV field input for security commit 749b4a9 Author: Ryan Delaney <145113692+CowboyGH@users.noreply.github.com> Date: Thu Apr 2 13:42:02 2026 +0700 feat(subscriptions): add authenticated subscriptions catalog and profile entrypoint (#57) * feat(subscriptions): add subscriptions api contract * feat(subscriptions-domain): add subscriptions repository contract * feat(subscriptions-data): implement subscriptions repository * test(subscriptions-repo): add subscriptions repository coverage * feat(subscriptions): add subscriptions cubit and state * test(subscriptions): add subscriptions cubit coverage * refactor(subscriptions-domain): extend catalog item model * feat(subscriptions-ui): add subscriptions catalog screen * feat(profile-ui): add subscriptions entry button to profile * docs: update CHANGELOG.md * refactor(images): reuse shared backend image url normalizer * fix(subscriptions): keep only active plans in catalog
* feat(subs-domain): add cancel subscription contracts * feat(subs-data): implement cancel subscription command * test(subs-repo): add cancel subscription repository coverage * feat(profile-sub): add cancel subscription cubit and state * test(profile-sub): add cancel subscription cubit coverage * feat(profile-sub): add profile subscription cubit and state * test(profile-sub): add profile subscription cubit coverage * feat(uikit): add sectionTitle text token * feat(profile-ui): add cancel subscription dialog flow * feat(profile): add refresh cubit for updating profile page after sub cancel * docs: update CHANGELOG.md * fix(profile): delegate profile refresh callback to ProfileRefreshCubit * fix(subs-ui): delete unused bloc provider * chore(sub-tests): change verify check in ProfileSubscriptionCubit test
* feat(cards-domain): add saved cards contracts * feat(cards-data): implement cards repository and api client * test(cards-repo): add saved cards repository coverage * feat(profile): add cards cubits for profile section * test(profile): add cards cubit coverage * feat(profile-ui): add saved cards section * test(cards): add save-card validator coverage * docs: update CHANGELOG.md * feat(profile-cards): polish ui to match the layout * fix(profile-cards): preserve the caret position when reformatting the card number * fix(profile-cards): allow normal mixed-case cardholder input * fix(cards-domain): change CardsFailureMapper checks * fix(profile-cards-ui): disable delete while a set-default request is running * fix(profile-cards-ui): add an accessible label to this icon-only delete control
|
Important Review skippedToo many files! This PR contains 184 files, which is 34 over the limit of 150. ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Run ID: ⛔ Files ignored due to path filters (10)
📒 Files selected for processing (184)
You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
🚀 Summary
Implemented the authenticated profile flow end-to-end.
🧪 Verification
flutter analyzeflutter test test/features/subscriptionsflutter test test/features/cardsflutter test test/features/profile