132 lines
3.9 KiB
Dart
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();
|
|
}
|
|
}
|