rfplus thingies
This commit is contained in:
parent
332b954029
commit
146ff9251c
@ -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<GoalPlannerScreen> createState() => _GoalPlannerScreenState();
|
||||
@ -136,6 +138,14 @@ class _GoalPlannerScreenState extends State<GoalPlannerScreen> {
|
||||
|
||||
otherPlans = List.from(plans);
|
||||
|
||||
// only save 2 items if not plus member
|
||||
if (!Provider.of<PremiumProvider>(context)
|
||||
.hasScope(PremiumScopes.unlimitedGoalPlanner)) {
|
||||
if (otherPlans.length > 2) {
|
||||
otherPlans.removeRange(2, otherPlans.length - 1);
|
||||
}
|
||||
}
|
||||
|
||||
return PlanResult.available;
|
||||
}
|
||||
|
||||
|
@ -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<PremiumFeature, PremiumFeatureLevel> _featureLevels = {
|
||||
@ -42,18 +46,18 @@ const Map<PremiumFeature, PremiumFeatureLevel> _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<PremiumFeature, String> _featureAssets = {
|
||||
@ -82,6 +86,7 @@ const Map<PremiumFeature, String> _featureAssets = {
|
||||
|
||||
PremiumFeature.gradeRarities:
|
||||
"assets/images/premium_banner/grade_rarities.png",
|
||||
PremiumFeature.calendarSync: "assets/images/premium_banner/calendar_sync.png",
|
||||
};
|
||||
|
||||
const Map<PremiumFeature, String> _featureTitles = {
|
||||
@ -107,8 +112,8 @@ const Map<PremiumFeature, String> _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<PremiumFeature, String> _featureDescriptions = {
|
||||
@ -132,25 +137,25 @@ const Map<PremiumFeature, String> _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);
|
||||
|
@ -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<PremiumProvider>(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()));
|
||||
},
|
||||
|
Loading…
x
Reference in New Issue
Block a user