feat(ads): ref-constructed ad/consent/iap providers, single ownership source
This commit is contained in:
@@ -4,8 +4,11 @@ import '../data/content_repository.dart';
|
|||||||
import '../data/save_repository.dart';
|
import '../data/save_repository.dart';
|
||||||
import '../data/streak.dart';
|
import '../data/streak.dart';
|
||||||
import '../game/models/season.dart';
|
import '../game/models/season.dart';
|
||||||
|
import '../services/ad_service.dart';
|
||||||
import '../services/analytics_service.dart';
|
import '../services/analytics_service.dart';
|
||||||
import '../services/audio_service.dart';
|
import '../services/audio_service.dart';
|
||||||
|
import '../services/consent_service.dart';
|
||||||
|
import '../services/iap_service.dart';
|
||||||
import 'ads_notifier.dart';
|
import 'ads_notifier.dart';
|
||||||
import 'endless_best_notifier.dart';
|
import 'endless_best_notifier.dart';
|
||||||
import 'game_session_notifier.dart';
|
import 'game_session_notifier.dart';
|
||||||
@@ -75,6 +78,30 @@ final endlessBestProvider = NotifierProvider<EndlessBestNotifier, int>(
|
|||||||
final adsRemovedProvider =
|
final adsRemovedProvider =
|
||||||
NotifierProvider<AdsRemovedNotifier, bool>(AdsRemovedNotifier.new);
|
NotifierProvider<AdsRemovedNotifier, bool>(AdsRemovedNotifier.new);
|
||||||
|
|
||||||
|
/// Reads ownership live from [adsRemovedProvider]; a mid-session purchase
|
||||||
|
/// takes effect on the next ad decision without re-wiring.
|
||||||
|
final adServiceProvider = Provider<AdService>((ref) {
|
||||||
|
final service = AdService(adsRemoved: () => ref.read(adsRemovedProvider));
|
||||||
|
ref.onDispose(service.dispose);
|
||||||
|
return service;
|
||||||
|
});
|
||||||
|
|
||||||
|
final consentServiceProvider = Provider<ConsentService>(
|
||||||
|
(ref) => ConsentService(ref.read(adServiceProvider)),
|
||||||
|
);
|
||||||
|
|
||||||
|
/// A verified remove_ads purchase/restore grants the entitlement through the
|
||||||
|
/// notifier (persists + flips state), which AdService and the banner observe.
|
||||||
|
final iapServiceProvider = Provider<IapService>((ref) {
|
||||||
|
final service = IapService(
|
||||||
|
onEntitlementGranted: () =>
|
||||||
|
ref.read(adsRemovedProvider.notifier).grant(),
|
||||||
|
);
|
||||||
|
ref.onDispose(service.dispose);
|
||||||
|
service.initialize();
|
||||||
|
return service;
|
||||||
|
});
|
||||||
|
|
||||||
final analyticsProvider = Provider<AnalyticsService>(
|
final analyticsProvider = Provider<AnalyticsService>(
|
||||||
(ref) => AnalyticsService(DebugAnalyticsBackend()),
|
(ref) => AnalyticsService(DebugAnalyticsBackend()),
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user