feat(iap): remove_ads purchase/restore service + adsRemoved notifier
This commit is contained in:
@@ -0,0 +1,17 @@
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
|
||||
import 'providers.dart';
|
||||
|
||||
/// Whether the player owns the remove-ads entitlement. Seeded from the save
|
||||
/// repository; [grant] flips it on (after a successful purchase/restore) and
|
||||
/// persists.
|
||||
class AdsRemovedNotifier extends Notifier<bool> {
|
||||
@override
|
||||
bool build() => ref.read(saveRepositoryProvider).adsRemoved;
|
||||
|
||||
Future<void> grant() async {
|
||||
if (state) return;
|
||||
await ref.read(saveRepositoryProvider).setAdsRemoved(true);
|
||||
state = true;
|
||||
}
|
||||
}
|
||||
@@ -6,6 +6,7 @@ import '../data/streak.dart';
|
||||
import '../game/models/season.dart';
|
||||
import '../services/analytics_service.dart';
|
||||
import '../services/audio_service.dart';
|
||||
import 'ads_notifier.dart';
|
||||
import 'endless_best_notifier.dart';
|
||||
import 'game_session_notifier.dart';
|
||||
import 'progress_notifier.dart';
|
||||
@@ -71,6 +72,9 @@ final endlessBestProvider = NotifierProvider<EndlessBestNotifier, int>(
|
||||
EndlessBestNotifier.new,
|
||||
);
|
||||
|
||||
final adsRemovedProvider =
|
||||
NotifierProvider<AdsRemovedNotifier, bool>(AdsRemovedNotifier.new);
|
||||
|
||||
final analyticsProvider = Provider<AnalyticsService>(
|
||||
(ref) => AnalyticsService(DebugAnalyticsBackend()),
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user