student-plus/lib/ui/mobile/plus/upsell.dart
2025-02-16 17:19:31 +01:00

132 lines
3.9 KiB
Dart

import 'package:flutter_svg/svg.dart';
import 'package:flutter/material.dart';
enum PremiumFeature {
// old things
gradestats,
customcolors,
profile,
iconpack,
subjectrename,
weeklytimetable,
widget,
// new things
moreAccounts, // cap, (ink, sponge)
betaReleases, // cap
welcomeMessage, // cap
selfNotes, // cap
gradeCalculation, // ink
liveActivity, // ink
timetableNotes, // ink
iconChange, // sponge
fontChange, // sponge
goalPlanner, // sponge
gradeRarities,
calendarSync,
gradeExporting, // basic
}
enum PremiumFeatureLevel {
old,
cap,
ink,
sponge,
// new new new
basic,
gold,
}
const Map<PremiumFeature, PremiumFeatureLevel> _featureLevels = {
// old things
PremiumFeature.gradestats: PremiumFeatureLevel.old,
PremiumFeature.customcolors: PremiumFeatureLevel.old,
PremiumFeature.profile: PremiumFeatureLevel.old,
PremiumFeature.iconpack: PremiumFeatureLevel.old,
PremiumFeature.subjectrename: PremiumFeatureLevel.old,
PremiumFeature.weeklytimetable: PremiumFeatureLevel.old,
PremiumFeature.widget: PremiumFeatureLevel.old,
// new things
PremiumFeature.moreAccounts: PremiumFeatureLevel.old,
PremiumFeature.betaReleases: PremiumFeatureLevel.old,
PremiumFeature.welcomeMessage: PremiumFeatureLevel.old,
PremiumFeature.selfNotes: PremiumFeatureLevel.old,
PremiumFeature.gradeCalculation: PremiumFeatureLevel.old,
PremiumFeature.liveActivity: PremiumFeatureLevel.old,
PremiumFeature.timetableNotes: PremiumFeatureLevel.old,
PremiumFeature.iconChange: PremiumFeatureLevel.old,
PremiumFeature.fontChange: PremiumFeatureLevel.old,
PremiumFeature.goalPlanner: PremiumFeatureLevel.old,
PremiumFeature.gradeRarities: PremiumFeatureLevel.old,
PremiumFeature.calendarSync: PremiumFeatureLevel.old,
PremiumFeature.gradeExporting: PremiumFeatureLevel.old,
};
const Map<PremiumFeature, String> _featureTitles = {
// old shit
PremiumFeature.gradestats: "",
PremiumFeature.customcolors: "",
PremiumFeature.profile: "",
PremiumFeature.iconpack: "",
PremiumFeature.subjectrename: "",
PremiumFeature.weeklytimetable: "",
PremiumFeature.widget: "",
// new shit
PremiumFeature.moreAccounts: "",
PremiumFeature.betaReleases: "",
PremiumFeature.welcomeMessage: "",
PremiumFeature.selfNotes: "",
PremiumFeature.gradeCalculation: "",
PremiumFeature.liveActivity: "",
PremiumFeature.timetableNotes: "",
PremiumFeature.iconChange: "",
PremiumFeature.fontChange: "",
PremiumFeature.goalPlanner: "",
PremiumFeature.gradeRarities: "",
PremiumFeature.calendarSync: "",
PremiumFeature.gradeExporting: "",
};
const Map<PremiumFeature, String> _featureDescriptions = {
// old
PremiumFeature.gradestats: "",
PremiumFeature.customcolors: "",
PremiumFeature.profile: "",
PremiumFeature.iconpack: "",
PremiumFeature.subjectrename: "",
PremiumFeature.weeklytimetable: "",
PremiumFeature.widget: "",
PremiumFeature.moreAccounts: "",
PremiumFeature.betaReleases: "",
PremiumFeature.welcomeMessage: "",
PremiumFeature.selfNotes: "",
PremiumFeature.gradeCalculation: "",
PremiumFeature.liveActivity: "",
PremiumFeature.timetableNotes: "",
PremiumFeature.iconChange: "",
PremiumFeature.fontChange: "",
PremiumFeature.goalPlanner: "",
PremiumFeature.gradeRarities: "",
PremiumFeature.calendarSync: "",
PremiumFeature.gradeExporting: "",
};
class PlusLockedFeaturePopup extends StatelessWidget {
const PlusLockedFeaturePopup({super.key, required this.feature});
static void show() {
}
final PremiumFeature feature;
PremiumFeatureLevel? _getFeatureLevel() => _featureLevels[feature];
@override
Widget build(BuildContext context) {
final bool isGold = _getFeatureLevel() == PremiumFeatureLevel.gold;
return SizedBox.shrink();
}
}