From 09afd3dda0670fde6e69bbd0aefc183bff07945f Mon Sep 17 00:00:00 2001 From: otsmr Date: Fri, 20 Feb 2026 22:52:36 +0100 Subject: [PATCH] fix: allow plus plan to restore flames --- lib/src/services/subscription.service.dart | 16 ++++++++++++++-- .../views/components/max_flame_list_title.dart | 2 +- test/features/premium_features.dart | 17 +++++++++++++++++ 3 files changed, 32 insertions(+), 3 deletions(-) create mode 100644 test/features/premium_features.dart diff --git a/lib/src/services/subscription.service.dart b/lib/src/services/subscription.service.dart index c36797a..27b50cc 100644 --- a/lib/src/services/subscription.service.dart +++ b/lib/src/services/subscription.service.dart @@ -10,8 +10,20 @@ enum SubscriptionPlan { Plus, } -bool isAdditionalAccount(SubscriptionPlan plan) { - return plan == SubscriptionPlan.Free || plan == SubscriptionPlan.Plus; +enum PremiumFeatures { RestoreFlames } + +const Map> 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) { diff --git a/lib/src/views/components/max_flame_list_title.dart b/lib/src/views/components/max_flame_list_title.dart index adddb1f..6b4800e 100644 --- a/lib/src/views/components/max_flame_list_title.dart +++ b/lib/src/views/components/max_flame_list_title.dart @@ -46,7 +46,7 @@ class _MaxFlameListTitleState extends State { } Future _restoreFlames() async { - if (!isPayingUser(getCurrentPlan())) { + if (!isUserAllowed(getCurrentPlan(), PremiumFeatures.RestoreFlames)) { await context.push(Routes.settingsSubscription); return; } diff --git a/test/features/premium_features.dart b/test/features/premium_features.dart new file mode 100644 index 0000000..43dda71 --- /dev/null +++ b/test/features/premium_features.dart @@ -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), + ); + }); + }); +}