currentEntitlements function

  1. @Riverpod(keepAlive: true)
Future<Entitlement> currentEntitlements(
  1. Ref<Object?> ref
)

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();
}