From 146ff9251c421f1982e90e07d36027c4d5d3342a Mon Sep 17 00:00:00 2001 From: Kima Date: Sun, 3 Mar 2024 21:06:08 +0100 Subject: [PATCH] rfplus thingies --- .../goal_planner/goal_planner_screen.dart | 12 +++- lib/ui/mobile/premium/upsell.dart | 57 ++++++++++--------- .../settings/submenu/calendar_sync.dart | 9 +++ 3 files changed, 51 insertions(+), 27 deletions(-) diff --git a/lib/ui/mobile/goal_planner/goal_planner_screen.dart b/lib/ui/mobile/goal_planner/goal_planner_screen.dart index 91a0606..4554d0e 100644 --- a/lib/ui/mobile/goal_planner/goal_planner_screen.dart +++ b/lib/ui/mobile/goal_planner/goal_planner_screen.dart @@ -10,6 +10,8 @@ import 'package:refilc_kreta_api/providers/grade_provider.dart'; import 'package:refilc_mobile_ui/common/average_display.dart'; import 'package:refilc_mobile_ui/common/round_border_icon.dart'; import 'package:refilc_mobile_ui/pages/grades/calculator/grade_calculator_provider.dart'; +import 'package:refilc_plus/models/premium_scopes.dart'; +import 'package:refilc_plus/providers/premium_provider.dart'; import 'package:refilc_plus/ui/mobile/goal_planner/goal_input.dart'; import 'package:refilc_plus/ui/mobile/goal_planner/goal_planner.dart'; import 'package:refilc_plus/ui/mobile/goal_planner/goal_planner_screen.i18n.dart'; @@ -27,7 +29,7 @@ enum PlanResult { class GoalPlannerScreen extends StatefulWidget { final GradeSubject subject; - const GoalPlannerScreen({Key? key, required this.subject}) : super(key: key); + const GoalPlannerScreen({super.key, required this.subject}); @override State createState() => _GoalPlannerScreenState(); @@ -136,6 +138,14 @@ class _GoalPlannerScreenState extends State { otherPlans = List.from(plans); + // only save 2 items if not plus member + if (!Provider.of(context) + .hasScope(PremiumScopes.unlimitedGoalPlanner)) { + if (otherPlans.length > 2) { + otherPlans.removeRange(2, otherPlans.length - 1); + } + } + return PlanResult.available; } diff --git a/lib/ui/mobile/premium/upsell.dart b/lib/ui/mobile/premium/upsell.dart index 2c203ab..df68a00 100644 --- a/lib/ui/mobile/premium/upsell.dart +++ b/lib/ui/mobile/premium/upsell.dart @@ -23,6 +23,7 @@ enum PremiumFeature { fontChange, // sponge goalPlanner, // sponge gradeRarities, + calendarSync, } enum PremiumFeatureLevel { @@ -30,6 +31,9 @@ enum PremiumFeatureLevel { cap, ink, sponge, + // new new new + basic, + gold, } const Map _featureLevels = { @@ -42,18 +46,18 @@ const Map _featureLevels = { PremiumFeature.weeklytimetable: PremiumFeatureLevel.old, PremiumFeature.widget: PremiumFeatureLevel.old, // new things - PremiumFeature.moreAccounts: PremiumFeatureLevel.cap, - PremiumFeature.betaReleases: PremiumFeatureLevel.cap, - PremiumFeature.welcomeMessage: PremiumFeatureLevel.cap, - PremiumFeature.selfNotes: PremiumFeatureLevel.cap, - PremiumFeature.gradeCalculation: PremiumFeatureLevel.ink, - PremiumFeature.liveActivity: PremiumFeatureLevel.ink, - PremiumFeature.timetableNotes: PremiumFeatureLevel.ink, - PremiumFeature.iconChange: PremiumFeatureLevel.sponge, - PremiumFeature.fontChange: PremiumFeatureLevel.sponge, - PremiumFeature.goalPlanner: PremiumFeatureLevel.sponge, - - PremiumFeature.gradeRarities: PremiumFeatureLevel.old, + PremiumFeature.moreAccounts: PremiumFeatureLevel.basic, + PremiumFeature.betaReleases: PremiumFeatureLevel.basic, + PremiumFeature.welcomeMessage: PremiumFeatureLevel.basic, + PremiumFeature.selfNotes: PremiumFeatureLevel.basic, + PremiumFeature.gradeCalculation: PremiumFeatureLevel.basic, + PremiumFeature.liveActivity: PremiumFeatureLevel.gold, + PremiumFeature.timetableNotes: PremiumFeatureLevel.gold, + PremiumFeature.iconChange: PremiumFeatureLevel.gold, + PremiumFeature.fontChange: PremiumFeatureLevel.gold, + PremiumFeature.goalPlanner: PremiumFeatureLevel.gold, + PremiumFeature.gradeRarities: PremiumFeatureLevel.basic, + PremiumFeature.calendarSync: PremiumFeatureLevel.gold, }; const Map _featureAssets = { @@ -82,6 +86,7 @@ const Map _featureAssets = { PremiumFeature.gradeRarities: "assets/images/premium_banner/grade_rarities.png", + PremiumFeature.calendarSync: "assets/images/premium_banner/calendar_sync.png", }; const Map _featureTitles = { @@ -107,8 +112,8 @@ const Map _featureTitles = { PremiumFeature.iconChange: "Ez aztán különleges!", PremiumFeature.fontChange: "Woah! Micsoda gyönyörű betűk!", PremiumFeature.goalPlanner: "Még több javaslat kell?", - PremiumFeature.gradeRarities: "Nem epikus, hanem ultraszuper?", + PremiumFeature.calendarSync: "Még a naptáradba is kell?!", }; const Map _featureDescriptions = { @@ -132,25 +137,25 @@ const Map _featureDescriptions = { PremiumFeature.moreAccounts: "Minden támogatási szinttel egyre magasabb a limit.", PremiumFeature.betaReleases: - "Támogass Kupak szinten, hogy előre megkapd a béta frissítéseket.", + "Fizess elő reFilc+-ra, hogy előre megkapd a béta frissítéseket.", PremiumFeature.welcomeMessage: - "Az egyedi üdvözléshez elég csupán a Kupak szint!", + "Az egyedi üdvözléshez elég csupán a legalsó szint!", PremiumFeature.selfNotes: - "Támogass Kupak szinten, és jegyezd fel minden fontos dolgod.", + "Támogass minket, és jegyezd fel minden fontos dolgod.", PremiumFeature.gradeCalculation: - "Tinta szinttől egyszerűbb kiszámolnod a tervezett átlagod.", + "reFilc+-al egyszerűbb kiszámolnod a tervezett átlagod.", PremiumFeature.liveActivity: - "Tinta szintű támogatással átszínezhetsz bármilyenre.", + "Gold szintű támogatással átszínezhetsz bármilyenre.", PremiumFeature.timetableNotes: - "Nincs több ilyen kérdés, ha Tinta szinten támogatsz.", + "Nincs több ilyen kérdés, ha Gold szinten támogatsz.", PremiumFeature.iconChange: - "Támogass Szivacs szinten az alkalmazás ikonjának megváltoztatásához.", + "Fizess elő Gold szintre az alkalmazás ikonjának megváltoztatásához.", PremiumFeature.fontChange: - "Szivacs szintű támogatással megváltoztathatod a betűtípust is.", + "Gold szintű támogatással megváltoztathatod a betűtípust is.", PremiumFeature.goalPlanner: - "Támogass Szivacs szinten és használd ki a cél kitűzés minden funkcióját!", - - PremiumFeature.gradeRarities: "A reFilc+ Tinta szintjével ez is elérhető!", + "Támogass Gold szinten és használd ki a cél kitűzés minden funkcióját!", + PremiumFeature.gradeRarities: "A reFilc+ alap szintjével ez is elérhető!", + PremiumFeature.calendarSync: "Szinkronizáld az órarended reFilc+ Gold-al!", }; class PremiumLockedFeatureUpsell extends StatelessWidget { @@ -170,8 +175,8 @@ class PremiumLockedFeatureUpsell extends StatelessWidget { ? FilcIcons.tinta : FilcIcons.tinta; Color _getColor(BuildContext context) => - _featureLevels[feature] == PremiumFeatureLevel.cap - ? const Color(0xffC8A708) + _featureLevels[feature] == PremiumFeatureLevel.gold + ? const Color(0xFFC89B08) : Theme.of(context).brightness == Brightness.light ? const Color(0xff691A9B) : const Color(0xffA66FC8); diff --git a/lib/ui/mobile/settings/submenu/calendar_sync.dart b/lib/ui/mobile/settings/submenu/calendar_sync.dart index 4bd057e..73f011b 100644 --- a/lib/ui/mobile/settings/submenu/calendar_sync.dart +++ b/lib/ui/mobile/settings/submenu/calendar_sync.dart @@ -15,6 +15,9 @@ import 'package:flutter_feather_icons/flutter_feather_icons.dart'; import 'package:provider/provider.dart'; import 'package:refilc_mobile_ui/common/widgets/custom_segmented_control.dart'; import 'package:refilc_mobile_ui/screens/settings/settings_screen.i18n.dart'; +import 'package:refilc_plus/models/premium_scopes.dart'; +import 'package:refilc_plus/providers/premium_provider.dart'; +import 'package:refilc_plus/ui/mobile/premium/upsell.dart'; class MenuCalendarSync extends StatelessWidget { const MenuCalendarSync({ @@ -29,6 +32,12 @@ class MenuCalendarSync extends StatelessWidget { Widget build(BuildContext context) { return PanelButton( onPressed: () async { + if (!Provider.of(context, listen: false) + .hasScope(PremiumScopes.calendarSync)) { + return PremiumLockedFeatureUpsell.show( + context: context, feature: PremiumFeature.calendarSync); + } + Navigator.of(context, rootNavigator: true).push(CupertinoPageRoute( builder: (context) => const CalendarSyncScreen())); },