MotorSignal-App/lib/services/entitlements/entitlement_providers.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);
});