did a lot in refilc+

This commit is contained in:
Kima 2024-01-06 23:27:56 +01:00
parent 23673a34d8
commit d8b85ba1b4
10 changed files with 126 additions and 94 deletions

View File

@ -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<int, String> avgDropItems = {
0: "annual_average",
@ -47,17 +47,17 @@ class AverageSelectorState extends State<AverageSelector> {
return DropdownButton2<int>(
items: dropdownItems,
onChanged: (int? value) {
if (Provider.of<PremiumProvider>(context, listen: false)
.hasScope(PremiumScopes.gradeStats)) {
// if (Provider.of<PremiumProvider>(context, listen: false)
// .hasScope(PremiumScopes.gradeStats)) {
if (widget.onChanged != null) {
setState(() {
widget.onChanged!(value);
});
}
} else {
PremiumLockedFeatureUpsell.show(
context: context, feature: PremiumFeature.gradestats);
}
// } else {
// PremiumLockedFeatureUpsell.show(
// context: context, feature: PremiumFeature.gradestats);
// }
},
value: widget.value,
iconSize: 14,

View File

@ -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<GradeSubjectView> {
heroTag: "btn_goal_planner",
backgroundColor: Theme.of(context).colorScheme.secondary,
onPressed: () {
if (!Provider.of<PremiumProvider>(context, listen: false)
.hasScope(PremiumScopes.goalPlanner)) {
PremiumLockedFeatureUpsell.show(
context: context, feature: PremiumFeature.goalplanner);
return;
}
// if (!Provider.of<PremiumProvider>(context, listen: false)
// .hasScope(PremiumScopes.goalPlanner)) {
// PremiumLockedFeatureUpsell.show(
// context: context, feature: PremiumFeature.goalplanner);
// return;
// }
// ScaffoldMessenger.of(context).showSnackBar(
// const SnackBar(content: Text("Hamarosan...")));

View File

@ -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<GradesPage> {
child: IconButton(
splashRadius: 24.0,
onPressed: () {
if (!Provider.of<PremiumProvider>(context,
listen: false)
.hasScope(PremiumScopes.totalGradeCalculator)) {
PremiumLockedFeatureUpsell.show(
context: context,
feature: PremiumFeature.gradeCalculation);
return;
}
// SoonAlert.show(context: context);
gradeCalcTotal(context);
},

View File

@ -11,18 +11,17 @@ class ActiveSponsorCard extends StatelessWidget {
const ActiveSponsorCard({super.key});
static PremiumFeatureLevel? estimateLevel(List<String> 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;
}

View File

@ -105,7 +105,7 @@ class _PremiumButtonState extends State<PremiumButton>
Icon(FilcIcons.premium, color: Colors.white),
SizedBox(width: 12.0),
Text(
"reFilc Premium",
"reFilc+",
style: TextStyle(
color: Colors.white,
fontWeight: FontWeight.bold,

View File

@ -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<PremiumProvider>(context, listen: false)
.hasScope(PremiumScopes.renameSubjects)) {
PremiumLockedFeatureUpsell.show(
context: context, feature: PremiumFeature.subjectrename);
return;
}
// if (!Provider.of<PremiumProvider>(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<PremiumProvider>(context, listen: false)
.hasScope(PremiumScopes.renameSubjects)) {
PremiumLockedFeatureUpsell.show(
context: context, feature: PremiumFeature.subjectrename);
return;
}
// if (!Provider.of<PremiumProvider>(context, listen: false)
// .hasScope(PremiumScopes.renameSubjects)) {
// PremiumLockedFeatureUpsell.show(
// context: context, feature: PremiumFeature.subjectrename);
// return;
// }
settings.update(renamedSubjectsEnabled: v);
await Provider.of<GradeProvider>(context, listen: false)

View File

@ -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<SettingsScreen>
// account settings
PanelButton(
onPressed: () {
if (!Provider.of<PremiumProvider>(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<SettingsScreen>
if (defaultTargetPlatform == TargetPlatform.iOS)
PanelButton(
onPressed: () {
if (!Provider.of<PremiumProvider>(context,
listen: false)
.hasScope(PremiumScopes.liveActivityColor)) {
PremiumLockedFeatureUpsell.show(
context: context,
feature: PremiumFeature.liveActivity);
return;
}
SettingsHelper.liveActivityColor(context);
setState(() {});
},
@ -1131,8 +1151,8 @@ class SettingsScreenState extends State<SettingsScreen>
Provider.of<KretaClient>(context, listen: false)
.accessToken!)),
),
// if (Provider.of<PremiumProvider>(context, listen: false)
// .hasPremium)
if (Provider.of<PremiumProvider>(context, listen: false)
.hasPremium)
PanelButton(
leading: const Icon(FeatherIcons.key),
title: const Text("Remove Premium"),
@ -1141,7 +1161,8 @@ class SettingsScreenState extends State<SettingsScreen>
.activate(removePremium: true);
settings.update(
accentColor: AccentColor.filc, store: true);
Provider.of<ThemeModeObserver>(context, listen: false)
Provider.of<ThemeModeObserver>(context,
listen: false)
.changeTheme(settings.theme);
},
),

View File

@ -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<PremiumProvider>(context)
.hasScope(PremiumScopes.customColors);
// bool hasAccess = Provider.of<PremiumProvider>(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:

View File

@ -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<PremiumProvider>(context, listen: false)
.hasScope(PremiumScopes.nickname)) {
PremiumLockedFeatureUpsell.show(
context: context, feature: PremiumFeature.profile);
return;
}
// if (!Provider.of<PremiumProvider>(context, listen: false)
// .hasScope(PremiumScopes.nickname)) {
// PremiumLockedFeatureUpsell.show(
// context: context, feature: PremiumFeature.profile);
// return;
// }
showDialog(
context: context, builder: (context) => UserNicknameEditor(u));
},

View File

@ -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<PremiumProvider>(context)
.hasScope(PremiumScopes.nickname)) {
return const SizedBox();
}
// if (!Provider.of<PremiumProvider>(context)
// .hasScope(PremiumScopes.nickname)) {
// return const SizedBox();
// }
return BottomSheetMenuItem(
onPressed: () {