currentEntitlements function
- @Riverpod(keepAlive: true)
The current user's entitlements. Loaded on first access and cached until invalidated (on sign-in/out, purchase completion, or admin grant change).
Watches authStateProvider so signing out clears the cache and signing in fetches fresh state.
Implementation
@Riverpod(keepAlive: true)
Future<Entitlement> currentEntitlements(Ref ref) async {
// Re-run when the Supabase auth state changes.
ref.watch(authStateProvider);
final client = Supabase.instance.client;
if (client.auth.currentUser == null) {
return Entitlement.none();
}
final ds = ref.watch(entitlementDatasourceProvider);
final model = await ds.getCurrentEntitlements();
return model?.toEntity() ?? Entitlement.none();
}