import 'package:flutter_riverpod/flutter_riverpod.dart'; import '../../core/api/api_client.dart'; /// Fetches the current user's accessible module list from /me/permissions. /// Returns a Set like {'tasks', 'letters', 'contracts'}. /// Admin always gets all modules from the server. final permissionsProvider = FutureProvider>((ref) async { final resp = await apiDio.get('/me/permissions'); final list = (resp.data as List).cast(); return list.toSet(); }); /// Convenience: synchronous check against cached permissions. /// Returns true if permissions haven't loaded yet (fail-open while loading). extension PermissionsCheck on AsyncValue> { bool canAccess(String module) { return when( data: (modules) => modules.contains(module), loading: () => true, // fail-open while loading error: (_, __) => true, // fail-open on error ); } }