fix: allow plus plan to restore flames

This commit is contained in:
otsmr 2026-02-20 22:52:36 +01:00
parent f8242b003d
commit 09afd3dda0
3 changed files with 32 additions and 3 deletions

View file

@ -10,8 +10,20 @@ enum SubscriptionPlan {
Plus,
}
bool isAdditionalAccount(SubscriptionPlan plan) {
return plan == SubscriptionPlan.Free || plan == SubscriptionPlan.Plus;
enum PremiumFeatures { RestoreFlames }
const Map<PremiumFeatures, List<SubscriptionPlan>> planPermissions = {
PremiumFeatures.RestoreFlames: [
SubscriptionPlan.Family,
SubscriptionPlan.Plus,
SubscriptionPlan.Tester,
SubscriptionPlan.Pro,
],
};
bool isUserAllowed(SubscriptionPlan plan, PremiumFeatures feature) {
final allowedPlans = planPermissions[feature] ?? [];
return allowedPlans.contains(plan);
}
bool isPayingUser(SubscriptionPlan plan) {

View file

@ -46,7 +46,7 @@ class _MaxFlameListTitleState extends State<MaxFlameListTitle> {
}
Future<void> _restoreFlames() async {
if (!isPayingUser(getCurrentPlan())) {
if (!isUserAllowed(getCurrentPlan(), PremiumFeatures.RestoreFlames)) {
await context.push(Routes.settingsSubscription);
return;
}

View file

@ -0,0 +1,17 @@
import 'package:flutter_test/flutter_test.dart';
import 'package:twonly/src/services/subscription.service.dart';
void main() {
group('testing subscription permissions', () {
test('test if restore flames is allowed', () {
expect(
true,
isUserAllowed(SubscriptionPlan.Plus, PremiumFeatures.RestoreFlames),
);
expect(
false,
isUserAllowed(SubscriptionPlan.Free, PremiumFeatures.RestoreFlames),
);
});
});
}