From d8b85ba1b4976ae1fe6484bc9fe05a9f185b0716 Mon Sep 17 00:00:00 2001 From: Kima Date: Sat, 6 Jan 2024 23:27:56 +0100 Subject: [PATCH] did a lot in refilc+ --- .../lib/pages/grades/average_selector.dart | 28 +++++------ .../lib/pages/grades/grade_subject_view.dart | 18 +++---- .../lib/pages/grades/grades_page.dart | 11 +++++ .../components/active_sponsor_card.dart | 23 +++++---- .../lib/premium/premium_button.dart | 2 +- .../settings/modify_subject_names.dart | 30 ++++++------ .../lib/screens/settings/settings_screen.dart | 49 +++++++++++++------ .../lib/screens/settings/theme_screen.dart | 29 +++++------ .../lib/screens/settings/user/nickname.dart | 18 +++---- .../screens/settings/user/profile_pic.dart | 12 ++--- 10 files changed, 126 insertions(+), 94 deletions(-) diff --git a/filcnaplo_mobile_ui/lib/pages/grades/average_selector.dart b/filcnaplo_mobile_ui/lib/pages/grades/average_selector.dart index 1c3127c..ff7a6c6 100644 --- a/filcnaplo_mobile_ui/lib/pages/grades/average_selector.dart +++ b/filcnaplo_mobile_ui/lib/pages/grades/average_selector.dart @@ -1,12 +1,12 @@ import 'package:filcnaplo/theme/colors/colors.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'; +// 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'; import 'package:flutter/material.dart'; import 'package:dropdown_button2/dropdown_button2.dart'; import 'package:filcnaplo_mobile_ui/pages/grades/grades_page.i18n.dart'; import 'package:flutter_feather_icons/flutter_feather_icons.dart'; -import 'package:provider/provider.dart'; +// import 'package:provider/provider.dart'; final Map avgDropItems = { 0: "annual_average", @@ -47,17 +47,17 @@ class AverageSelectorState extends State { return DropdownButton2( items: dropdownItems, onChanged: (int? value) { - if (Provider.of(context, listen: false) - .hasScope(PremiumScopes.gradeStats)) { - if (widget.onChanged != null) { - setState(() { - widget.onChanged!(value); - }); - } - } else { - PremiumLockedFeatureUpsell.show( - context: context, feature: PremiumFeature.gradestats); + // if (Provider.of(context, listen: false) + // .hasScope(PremiumScopes.gradeStats)) { + if (widget.onChanged != null) { + setState(() { + widget.onChanged!(value); + }); } + // } else { + // PremiumLockedFeatureUpsell.show( + // context: context, feature: PremiumFeature.gradestats); + // } }, value: widget.value, iconSize: 14, diff --git a/filcnaplo_mobile_ui/lib/pages/grades/grade_subject_view.dart b/filcnaplo_mobile_ui/lib/pages/grades/grade_subject_view.dart index 085eeb6..48ea489 100755 --- a/filcnaplo_mobile_ui/lib/pages/grades/grade_subject_view.dart +++ b/filcnaplo_mobile_ui/lib/pages/grades/grade_subject_view.dart @@ -26,10 +26,10 @@ import 'package:filcnaplo_mobile_ui/pages/grades/grades_count.dart'; import 'package:filcnaplo_mobile_ui/pages/grades/graph.dart'; import 'package:filcnaplo_mobile_ui/pages/grades/subject_grades_container.dart'; import 'package:refilc_plus/ui/mobile/goal_planner/goal_planner_screen.dart'; -import 'package:refilc_plus/models/premium_scopes.dart'; -import 'package:refilc_plus/providers/premium_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_state_screen.dart'; -import 'package:refilc_plus/ui/mobile/premium/upsell.dart'; +// import 'package:refilc_plus/ui/mobile/premium/upsell.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_expandable_fab/flutter_expandable_fab.dart'; @@ -246,12 +246,12 @@ class _GradeSubjectViewState extends State { heroTag: "btn_goal_planner", backgroundColor: Theme.of(context).colorScheme.secondary, onPressed: () { - if (!Provider.of(context, listen: false) - .hasScope(PremiumScopes.goalPlanner)) { - PremiumLockedFeatureUpsell.show( - context: context, feature: PremiumFeature.goalplanner); - return; - } + // if (!Provider.of(context, listen: false) + // .hasScope(PremiumScopes.goalPlanner)) { + // PremiumLockedFeatureUpsell.show( + // context: context, feature: PremiumFeature.goalplanner); + // return; + // } // ScaffoldMessenger.of(context).showSnackBar( // const SnackBar(content: Text("Hamarosan..."))); diff --git a/filcnaplo_mobile_ui/lib/pages/grades/grades_page.dart b/filcnaplo_mobile_ui/lib/pages/grades/grades_page.dart index ef872a1..b5decc7 100755 --- a/filcnaplo_mobile_ui/lib/pages/grades/grades_page.dart +++ b/filcnaplo_mobile_ui/lib/pages/grades/grades_page.dart @@ -32,11 +32,13 @@ import 'package:filcnaplo_mobile_ui/pages/grades/fail_warning.dart'; import 'package:filcnaplo_mobile_ui/pages/grades/grades_count.dart'; import 'package:filcnaplo_mobile_ui/pages/grades/graph.dart'; import 'package:filcnaplo_mobile_ui/pages/grades/grade_subject_view.dart'; +import 'package:refilc_plus/models/premium_scopes.dart'; import 'package:refilc_plus/providers/premium_provider.dart'; import 'package:flutter/material.dart'; import 'package:flutter_feather_icons/flutter_feather_icons.dart'; import 'package:provider/provider.dart'; import 'package:filcnaplo/helpers/average_helper.dart'; +import 'package:refilc_plus/ui/mobile/premium/upsell.dart'; import 'average_selector.dart'; import 'package:refilc_plus/ui/mobile/premium/premium_inline.dart'; import 'calculator/grade_calculator.dart'; @@ -499,6 +501,15 @@ class GradesPageState extends State { child: IconButton( splashRadius: 24.0, onPressed: () { + if (!Provider.of(context, + listen: false) + .hasScope(PremiumScopes.totalGradeCalculator)) { + PremiumLockedFeatureUpsell.show( + context: context, + feature: PremiumFeature.gradeCalculation); + return; + } + // SoonAlert.show(context: context); gradeCalcTotal(context); }, diff --git a/filcnaplo_mobile_ui/lib/premium/components/active_sponsor_card.dart b/filcnaplo_mobile_ui/lib/premium/components/active_sponsor_card.dart index 8f32ef5..1fc0998 100755 --- a/filcnaplo_mobile_ui/lib/premium/components/active_sponsor_card.dart +++ b/filcnaplo_mobile_ui/lib/premium/components/active_sponsor_card.dart @@ -11,18 +11,17 @@ class ActiveSponsorCard extends StatelessWidget { const ActiveSponsorCard({super.key}); static PremiumFeatureLevel? estimateLevel(List scopes) { - if (scopes.contains(PremiumScopes.all)) { + if (scopes.contains(PremiumScopes.all) || + scopes.contains(PremiumScopes.tierSponge)) { + return PremiumFeatureLevel.sponge; + } + if (scopes.contains(PremiumScopes.tierInk)) { return PremiumFeatureLevel.ink; } - if (scopes.contains(PremiumScopes.timetableWidget) || - scopes.contains(PremiumScopes.goalPlanner)) { - return PremiumFeatureLevel.ink; - } - if (scopes.contains(PremiumScopes.customColors) || - scopes.contains(PremiumScopes.nickname)) { + if (scopes.contains(PremiumScopes.tierCap)) { return PremiumFeatureLevel.cap; } - return null; + return PremiumFeatureLevel.old; } IconData _levelIcon(PremiumFeatureLevel level) { @@ -31,10 +30,10 @@ class ActiveSponsorCard extends StatelessWidget { return FilcIcons.kupak; case PremiumFeatureLevel.ink: return FilcIcons.tinta; - case PremiumFeatureLevel.old: - return FilcIcons.kupak; case PremiumFeatureLevel.sponge: return FilcIcons.kupak; + case PremiumFeatureLevel.old: + return FilcIcons.kupak; } } @@ -56,10 +55,10 @@ class ActiveSponsorCard extends StatelessWidget { case PremiumFeatureLevel.ink: glow = Colors.purple; break; - case PremiumFeatureLevel.old: + case PremiumFeatureLevel.sponge: glow = Colors.red; break; - case PremiumFeatureLevel.sponge: + case PremiumFeatureLevel.old: glow = Colors.red; break; } diff --git a/filcnaplo_mobile_ui/lib/premium/premium_button.dart b/filcnaplo_mobile_ui/lib/premium/premium_button.dart index 88a0e61..9a10196 100755 --- a/filcnaplo_mobile_ui/lib/premium/premium_button.dart +++ b/filcnaplo_mobile_ui/lib/premium/premium_button.dart @@ -105,7 +105,7 @@ class _PremiumButtonState extends State Icon(FilcIcons.premium, color: Colors.white), SizedBox(width: 12.0), Text( - "reFilc Premium", + "reFilc+", style: TextStyle( color: Colors.white, fontWeight: FontWeight.bold, diff --git a/filcnaplo_mobile_ui/lib/screens/settings/modify_subject_names.dart b/filcnaplo_mobile_ui/lib/screens/settings/modify_subject_names.dart index b600325..a62a419 100644 --- a/filcnaplo_mobile_ui/lib/screens/settings/modify_subject_names.dart +++ b/filcnaplo_mobile_ui/lib/screens/settings/modify_subject_names.dart @@ -13,9 +13,9 @@ import 'package:filcnaplo_kreta_api/providers/grade_provider.dart'; import 'package:filcnaplo_kreta_api/providers/timetable_provider.dart'; import 'package:filcnaplo_mobile_ui/common/panel/panel.dart'; import 'package:filcnaplo_mobile_ui/common/panel/panel_button.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'; +// 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'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_feather_icons/flutter_feather_icons.dart'; @@ -33,12 +33,12 @@ class MenuRenamedSubjects extends StatelessWidget { return PanelButton( padding: const EdgeInsets.only(left: 14.0), onPressed: () { - if (!Provider.of(context, listen: false) - .hasScope(PremiumScopes.renameSubjects)) { - PremiumLockedFeatureUpsell.show( - context: context, feature: PremiumFeature.subjectrename); - return; - } + // if (!Provider.of(context, listen: false) + // .hasScope(PremiumScopes.renameSubjects)) { + // PremiumLockedFeatureUpsell.show( + // context: context, feature: PremiumFeature.subjectrename); + // return; + // } Navigator.of(context, rootNavigator: true).push( CupertinoPageRoute(builder: (context) => const ModifySubjectNames()), @@ -58,12 +58,12 @@ class MenuRenamedSubjects extends StatelessWidget { trailingDivider: true, trailing: Switch( onChanged: (v) async { - if (!Provider.of(context, listen: false) - .hasScope(PremiumScopes.renameSubjects)) { - PremiumLockedFeatureUpsell.show( - context: context, feature: PremiumFeature.subjectrename); - return; - } + // if (!Provider.of(context, listen: false) + // .hasScope(PremiumScopes.renameSubjects)) { + // PremiumLockedFeatureUpsell.show( + // context: context, feature: PremiumFeature.subjectrename); + // return; + // } settings.update(renamedSubjectsEnabled: v); await Provider.of(context, listen: false) diff --git a/filcnaplo_mobile_ui/lib/screens/settings/settings_screen.dart b/filcnaplo_mobile_ui/lib/screens/settings/settings_screen.dart index 2ff8bef..61d3910 100755 --- a/filcnaplo_mobile_ui/lib/screens/settings/settings_screen.dart +++ b/filcnaplo_mobile_ui/lib/screens/settings/settings_screen.dart @@ -37,7 +37,9 @@ import 'package:filcnaplo_mobile_ui/screens/settings/modify_subject_names.dart'; import 'package:filcnaplo_mobile_ui/screens/settings/notifications_screen.dart'; import 'package:filcnaplo_mobile_ui/screens/settings/privacy_view.dart'; import 'package:filcnaplo_mobile_ui/screens/settings/settings_helper.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'; import 'package:refilc_plus/ui/mobile/settings/app_icon_screen.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/foundation.dart'; @@ -436,6 +438,15 @@ class SettingsScreenState extends State // account settings PanelButton( onPressed: () { + if (!Provider.of(context, + listen: false) + .hasScope(PremiumScopes.maxTwoAccounts)) { + PremiumLockedFeatureUpsell.show( + context: context, + feature: PremiumFeature.moreAccounts); + return; + } + Navigator.of(context) .pushNamed("login_back") .then((value) { @@ -837,6 +848,15 @@ class SettingsScreenState extends State if (defaultTargetPlatform == TargetPlatform.iOS) PanelButton( onPressed: () { + if (!Provider.of(context, + listen: false) + .hasScope(PremiumScopes.liveActivityColor)) { + PremiumLockedFeatureUpsell.show( + context: context, + feature: PremiumFeature.liveActivity); + return; + } + SettingsHelper.liveActivityColor(context); setState(() {}); }, @@ -1131,20 +1151,21 @@ class SettingsScreenState extends State Provider.of(context, listen: false) .accessToken!)), ), - // if (Provider.of(context, listen: false) - // .hasPremium) - PanelButton( - leading: const Icon(FeatherIcons.key), - title: const Text("Remove Premium"), - onPressed: () { - Provider.of(context, listen: false) - .activate(removePremium: true); - settings.update( - accentColor: AccentColor.filc, store: true); - Provider.of(context, listen: false) - .changeTheme(settings.theme); - }, - ), + if (Provider.of(context, listen: false) + .hasPremium) + PanelButton( + leading: const Icon(FeatherIcons.key), + title: const Text("Remove Premium"), + onPressed: () { + Provider.of(context, listen: false) + .activate(removePremium: true); + settings.update( + accentColor: AccentColor.filc, store: true); + Provider.of(context, + listen: false) + .changeTheme(settings.theme); + }, + ), ], ), ), diff --git a/filcnaplo_mobile_ui/lib/screens/settings/theme_screen.dart b/filcnaplo_mobile_ui/lib/screens/settings/theme_screen.dart index 9c6875f..7d5e5ff 100644 --- a/filcnaplo_mobile_ui/lib/screens/settings/theme_screen.dart +++ b/filcnaplo_mobile_ui/lib/screens/settings/theme_screen.dart @@ -15,11 +15,11 @@ import 'package:filcnaplo_mobile_ui/common/filter_bar.dart'; import 'package:filcnaplo_mobile_ui/common/panel/panel.dart'; import 'package:filcnaplo_mobile_ui/common/widgets/grade/new_grades.dart'; import 'package:filcnaplo_mobile_ui/common/widgets/homework/homework_tile.dart'; -import 'package:refilc_plus/models/premium_scopes.dart'; -import 'package:refilc_plus/providers/premium_provider.dart'; +// import 'package:refilc_plus/models/premium_scopes.dart'; +// import 'package:refilc_plus/providers/premium_provider.dart'; import 'package:filcnaplo_kreta_api/providers/share_provider.dart'; import 'package:filcnaplo/ui/flutter_colorpicker/colorpicker.dart'; -import 'package:refilc_plus/ui/mobile/premium/upsell.dart'; +// import 'package:refilc_plus/ui/mobile/premium/upsell.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_feather_icons/flutter_feather_icons.dart'; @@ -205,8 +205,9 @@ class _PremiumCustomAccentColorSettingState @override Widget build(BuildContext context) { - bool hasAccess = Provider.of(context) - .hasScope(PremiumScopes.customColors); + // bool hasAccess = Provider.of(context) + // .hasScope(PremiumScopes.customColors); + bool hasAccess = true; bool isBackgroundDifferent = Theme.of(context).colorScheme.background != AppColors.of(context).background; @@ -723,16 +724,16 @@ class _PremiumCustomAccentColorSettingState // "colorpicker_icon".i18n)), ], onTap: (index) { - if (!hasAccess) { - index = 0; - _colorsTabController.animateTo(0, - duration: Duration.zero); + // if (!hasAccess) { + // index = 0; + // _colorsTabController.animateTo(0, + // duration: Duration.zero); - PremiumLockedFeatureUpsell.show( - context: context, - feature: PremiumFeature - .customcolors); - } + // PremiumLockedFeatureUpsell.show( + // context: context, + // feature: PremiumFeature + // .customcolors); + // } switch (index) { case 0: diff --git a/filcnaplo_mobile_ui/lib/screens/settings/user/nickname.dart b/filcnaplo_mobile_ui/lib/screens/settings/user/nickname.dart index f3fa20b..c5b95c2 100644 --- a/filcnaplo_mobile_ui/lib/screens/settings/user/nickname.dart +++ b/filcnaplo_mobile_ui/lib/screens/settings/user/nickname.dart @@ -2,9 +2,9 @@ import 'package:filcnaplo/api/providers/database_provider.dart'; import 'package:filcnaplo/api/providers/user_provider.dart'; import 'package:filcnaplo/models/user.dart'; import 'package:filcnaplo_mobile_ui/common/bottom_sheet_menu/bottom_sheet_menu_item.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'; +// 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'; import 'package:flutter/material.dart'; import 'package:flutter_feather_icons/flutter_feather_icons.dart'; import 'package:filcnaplo_mobile_ui/screens/settings/settings_screen.i18n.dart'; @@ -20,12 +20,12 @@ class UserMenuNickname extends StatelessWidget { Widget build(BuildContext context) { return BottomSheetMenuItem( onPressed: () { - if (!Provider.of(context, listen: false) - .hasScope(PremiumScopes.nickname)) { - PremiumLockedFeatureUpsell.show( - context: context, feature: PremiumFeature.profile); - return; - } + // if (!Provider.of(context, listen: false) + // .hasScope(PremiumScopes.nickname)) { + // PremiumLockedFeatureUpsell.show( + // context: context, feature: PremiumFeature.profile); + // return; + // } showDialog( context: context, builder: (context) => UserNicknameEditor(u)); }, diff --git a/filcnaplo_mobile_ui/lib/screens/settings/user/profile_pic.dart b/filcnaplo_mobile_ui/lib/screens/settings/user/profile_pic.dart index cfb57bc..6ad9f3a 100644 --- a/filcnaplo_mobile_ui/lib/screens/settings/user/profile_pic.dart +++ b/filcnaplo_mobile_ui/lib/screens/settings/user/profile_pic.dart @@ -8,8 +8,8 @@ import 'package:filcnaplo/api/providers/database_provider.dart'; import 'package:filcnaplo/api/providers/user_provider.dart'; import 'package:filcnaplo/models/user.dart'; import 'package:filcnaplo_mobile_ui/common/bottom_sheet_menu/bottom_sheet_menu_item.dart'; -import 'package:refilc_plus/models/premium_scopes.dart'; -import 'package:refilc_plus/providers/premium_provider.dart'; +// import 'package:refilc_plus/models/premium_scopes.dart'; +// import 'package:refilc_plus/providers/premium_provider.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_feather_icons/flutter_feather_icons.dart'; @@ -26,10 +26,10 @@ class UserMenuProfilePic extends StatelessWidget { @override Widget build(BuildContext context) { - if (!Provider.of(context) - .hasScope(PremiumScopes.nickname)) { - return const SizedBox(); - } + // if (!Provider.of(context) + // .hasScope(PremiumScopes.nickname)) { + // return const SizedBox(); + // } return BottomSheetMenuItem( onPressed: () {