Skip to content

Develop - #186

Merged
Johnny-Dang merged 6 commits into
mainfrom
develop
Aug 8, 2026
Merged

Develop#186
Johnny-Dang merged 6 commits into
mainfrom
develop

Conversation

@Johnny-Dang

@Johnny-Dang Johnny-Dang commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

Summary by CodeRabbit

  • New Features

    • Subscription plans and pricing are now loaded dynamically for Casual, Gym, and Office features.
    • Plan cards distinguish free, paid, unavailable, and loading states.
    • Android app icons now use the updated project logo with a white background.
    • App version updated to 1.0.0+12.
  • Bug Fixes

    • Casual feature pricing now displays correctly, including formatted VND amounts.
    • Subscription actions remain unavailable until plan information is synchronized.

MingoUwU and others added 6 commits August 8, 2026 14:19
Use API-provided plan data to show real prices and labels in the UI. Added SubscriptionPlan.belongsToFeatureGroup for robust plan matching, wired plan lookup into UpgradePlanScreen and CasualHubScreen (with injectable repository), and updated UI to show loading/price states instead of default zeros. Tests updated to assert displayed prices and to inject a fake repository.
…uild

- Remove iOS, Linux, macOS, Web, Windows platform folders
- Remove unused google_maps_flutter dependency (app uses flutter_map)
- Remove dead code: responsive_grid.dart, adaptive_scaffold.dart
- Remove default widget_test.dart and package-lock.json
- Update build.gradle.kts and AndroidManifest.xml to remove Google Maps config
- Update flutter_launcher_icons to remove iOS config

Co-authored-by: Cursor <cursoragent@cursor.com>
…ionStatusBanner with child widget in main.dart
@vercel

vercel Bot commented Aug 8, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
menu-green-system Ready Ready Preview Aug 8, 2026 1:39pm

@Johnny-Dang
Johnny-Dang merged commit cde2728 into main Aug 8, 2026
6 of 7 checks passed
@coderabbitai

coderabbitai Bot commented Aug 8, 2026

Copy link
Copy Markdown

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 5d194fd4-d251-4007-8b06-807cebd9bd98

📥 Commits

Reviewing files that changed from the base of the PR and between aeb8699 and 97fe108.

⛔ Files ignored due to path filters (47)
  • frontend/android/app/src/main/res/drawable-hdpi/ic_launcher_foreground.png is excluded by !**/*.png
  • frontend/android/app/src/main/res/drawable-mdpi/ic_launcher_foreground.png is excluded by !**/*.png
  • frontend/android/app/src/main/res/drawable-xhdpi/ic_launcher_foreground.png is excluded by !**/*.png
  • frontend/android/app/src/main/res/drawable-xxhdpi/ic_launcher_foreground.png is excluded by !**/*.png
  • frontend/android/app/src/main/res/drawable-xxxhdpi/ic_launcher_foreground.png is excluded by !**/*.png
  • frontend/android/app/src/main/res/mipmap-hdpi/ic_launcher.png is excluded by !**/*.png
  • frontend/android/app/src/main/res/mipmap-mdpi/ic_launcher.png is excluded by !**/*.png
  • frontend/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png is excluded by !**/*.png
  • frontend/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png is excluded by !**/*.png
  • frontend/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png is excluded by !**/*.png
  • frontend/assets/images/logo.png is excluded by !**/*.png
  • frontend/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata is excluded by !**/*.xcworkspace/contents.xcworkspacedata
  • frontend/ios/Runner.xcworkspace/contents.xcworkspacedata is excluded by !**/*.xcworkspace/contents.xcworkspacedata
  • frontend/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png is excluded by !**/*.png
  • frontend/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png is excluded by !**/*.png
  • frontend/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png is excluded by !**/*.png
  • frontend/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png is excluded by !**/*.png
  • frontend/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png is excluded by !**/*.png
  • frontend/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png is excluded by !**/*.png
  • frontend/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png is excluded by !**/*.png
  • frontend/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png is excluded by !**/*.png
  • frontend/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png is excluded by !**/*.png
  • frontend/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png is excluded by !**/*.png
  • frontend/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png is excluded by !**/*.png
  • frontend/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png is excluded by !**/*.png
  • frontend/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png is excluded by !**/*.png
  • frontend/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png is excluded by !**/*.png
  • frontend/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png is excluded by !**/*.png
  • frontend/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png is excluded by !**/*.png
  • frontend/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png is excluded by !**/*.png
  • frontend/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png is excluded by !**/*.png
  • frontend/macos/Runner.xcworkspace/contents.xcworkspacedata is excluded by !**/*.xcworkspace/contents.xcworkspacedata
  • frontend/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png is excluded by !**/*.png
  • frontend/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png is excluded by !**/*.png
  • frontend/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png is excluded by !**/*.png
  • frontend/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png is excluded by !**/*.png
  • frontend/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png is excluded by !**/*.png
  • frontend/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png is excluded by !**/*.png
  • frontend/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png is excluded by !**/*.png
  • frontend/package-lock.json is excluded by !**/package-lock.json
  • frontend/pubspec.lock is excluded by !**/*.lock
  • frontend/web/favicon.png is excluded by !**/*.png
  • frontend/web/icons/Icon-192.png is excluded by !**/*.png
  • frontend/web/icons/Icon-512.png is excluded by !**/*.png
  • frontend/web/icons/Icon-maskable-192.png is excluded by !**/*.png
  • frontend/web/icons/Icon-maskable-512.png is excluded by !**/*.png
  • frontend/windows/runner/resources/app_icon.ico is excluded by !**/*.ico
📒 Files selected for processing (79)
  • frontend/android/app/build.gradle.kts
  • frontend/android/app/src/main/AndroidManifest.xml
  • frontend/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
  • frontend/android/app/src/main/res/values/colors.xml
  • frontend/ios/.gitignore
  • frontend/ios/Flutter/AppFrameworkInfo.plist
  • frontend/ios/Flutter/Debug.xcconfig
  • frontend/ios/Flutter/Release.xcconfig
  • frontend/ios/Runner.xcodeproj/project.pbxproj
  • frontend/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
  • frontend/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
  • frontend/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
  • frontend/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
  • frontend/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
  • frontend/ios/Runner/AppDelegate.swift
  • frontend/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
  • frontend/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json
  • frontend/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md
  • frontend/ios/Runner/Base.lproj/LaunchScreen.storyboard
  • frontend/ios/Runner/Base.lproj/Main.storyboard
  • frontend/ios/Runner/Info.plist
  • frontend/ios/Runner/Runner-Bridging-Header.h
  • frontend/ios/Runner/SceneDelegate.swift
  • frontend/ios/RunnerTests/RunnerTests.swift
  • frontend/lib/core/widgets/adaptive_scaffold.dart
  • frontend/lib/core/widgets/responsive_grid.dart
  • frontend/lib/features/casual/views/casual_hub_screen.dart
  • frontend/lib/features/subscription/models/subscription_models.dart
  • frontend/lib/features/subscription/views/upgrade_plan_screen.dart
  • frontend/lib/main.dart
  • frontend/linux/.gitignore
  • frontend/linux/CMakeLists.txt
  • frontend/linux/flutter/CMakeLists.txt
  • frontend/linux/flutter/generated_plugin_registrant.cc
  • frontend/linux/flutter/generated_plugin_registrant.h
  • frontend/linux/runner/CMakeLists.txt
  • frontend/linux/runner/main.cc
  • frontend/linux/runner/my_application.cc
  • frontend/linux/runner/my_application.h
  • frontend/macos/.gitignore
  • frontend/macos/Flutter/Flutter-Debug.xcconfig
  • frontend/macos/Flutter/Flutter-Release.xcconfig
  • frontend/macos/Flutter/GeneratedPluginRegistrant.swift
  • frontend/macos/Runner.xcodeproj/project.pbxproj
  • frontend/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
  • frontend/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
  • frontend/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
  • frontend/macos/Runner/AppDelegate.swift
  • frontend/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
  • frontend/macos/Runner/Base.lproj/MainMenu.xib
  • frontend/macos/Runner/Configs/AppInfo.xcconfig
  • frontend/macos/Runner/Configs/Debug.xcconfig
  • frontend/macos/Runner/Configs/Release.xcconfig
  • frontend/macos/Runner/Configs/Warnings.xcconfig
  • frontend/macos/Runner/DebugProfile.entitlements
  • frontend/macos/Runner/Info.plist
  • frontend/macos/Runner/MainFlutterWindow.swift
  • frontend/macos/Runner/Release.entitlements
  • frontend/macos/RunnerTests/RunnerTests.swift
  • frontend/pubspec.yaml
  • frontend/test/basic_subscription_default_test.dart
  • frontend/test/widget_test.dart
  • frontend/web/index.html
  • frontend/web/manifest.json
  • frontend/windows/.gitignore
  • frontend/windows/CMakeLists.txt
  • frontend/windows/flutter/CMakeLists.txt
  • frontend/windows/runner/CMakeLists.txt
  • frontend/windows/runner/Runner.rc
  • frontend/windows/runner/flutter_window.cpp
  • frontend/windows/runner/flutter_window.h
  • frontend/windows/runner/main.cpp
  • frontend/windows/runner/resource.h
  • frontend/windows/runner/runner.exe.manifest
  • frontend/windows/runner/utils.cpp
  • frontend/windows/runner/utils.h
  • frontend/windows/runner/win32_window.cpp
  • frontend/windows/runner/win32_window.h
  • log.txt

📝 Walkthrough

Walkthrough

The change updates subscription-plan pricing, Android launcher branding, Flutter platform configuration, and removes generated platform scaffolding. It also removes the Google Maps dependency and records a failed deployment with unsuccessful rollback.

Changes

Flutter subscription and application updates

Layer / File(s) Summary
Subscription plan synchronization and pricing
frontend/lib/features/subscription/..., frontend/lib/features/casual/..., frontend/test/basic_subscription_default_test.dart
Subscription screens now use API-provided plans, nullable prices, loading states, and feature-group matching. Tests cover Casual, Gym/PT, and Office pricing.
Android branding and dependency configuration
frontend/android/..., frontend/pubspec.yaml
Google Maps configuration is removed. Android launcher icons use the project logo with an inset foreground and white background. The build number increases to 1.0.0+12, and flutter_launcher_icons is added.
Flutter runtime and platform scaffolding cleanup
frontend/lib/main.dart, frontend/ios/..., frontend/linux/..., frontend/macos/..., frontend/windows/..., frontend/web/..., frontend/test/widget_test.dart
The connection-status wrapper and generated iOS, Linux, macOS, Windows, and web scaffolding are removed.

Deployment execution record

Layer / File(s) Summary
Deployment and rollback trace
log.txt
The deployment starts the application, fails health checks during migration because the campaigns relation already exists, and cannot roll back because no rollback image is available.

Estimated code review effort: 4 (Complex) | ~45 minutes

Possibly related PRs

Suggested reviewers: doawnlet

Sequence Diagram(s)

sequenceDiagram
  participant UpgradePlanScreen
  participant UserSubscriptionRepository
  participant SubscriptionPlan
  participant PricingCard
  UpgradePlanScreen->>UserSubscriptionRepository: fetch available plans
  UserSubscriptionRepository-->>UpgradePlanScreen: return API plans
  UpgradePlanScreen->>SubscriptionPlan: match each feature group
  SubscriptionPlan-->>UpgradePlanScreen: return plan or null
  UpgradePlanScreen->>PricingCard: render loading, free, or paid state
Loading
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch develop

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants