25 lines
1.0 KiB
Dart
25 lines
1.0 KiB
Dart
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
|
import 'entitlement_state.dart';
|
|
import 'entitlement_storage.dart';
|
|
import 'feature_access_service.dart';
|
|
|
|
/// Provider for the physical entitlement storage contract.
|
|
/// Can be overridden in tests with [InMemoryEntitlementStorage].
|
|
final entitlementStorageProvider = Provider<EntitlementStorage>((ref) {
|
|
return const SecureEntitlementStorage();
|
|
});
|
|
|
|
/// Authoritative entitlement state provider.
|
|
/// Defaults to [EntitlementState.free] until the billing coordinator or cache loader runs.
|
|
/// In Stage 4B-2, this will be wired to the billing lifecycle coordinator.
|
|
final entitlementProvider = StateProvider<EntitlementState>((ref) {
|
|
return const EntitlementState.free();
|
|
});
|
|
|
|
/// Centralized provider for checking feature accessibility.
|
|
/// Consumers watch this provider and call [FeatureAccessService.canAccess].
|
|
final featureAccessProvider = Provider<FeatureAccessService>((ref) {
|
|
final state = ref.watch(entitlementProvider);
|
|
return FeatureAccessService(state);
|
|
});
|