import 'package:aioa_mobile/core/auth/authenticated_http_client.dart'; import 'package:aioa_mobile/core/config/runtime_config.dart'; import 'package:aioa_mobile/features/admin/data/admin_repository.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; final adminRepositoryProvider = Provider( (ref) => AdminRepository( client: ref.watch(authenticatedHttpClientProvider), baseUrl: RuntimeConfig.apiBaseUrl, ), ); final currentPermissionsProvider = FutureProvider( (ref) => ref.watch(adminRepositoryProvider).permissions(), ); final adminDashboardProvider = AsyncNotifierProvider>( AdminController.new, ); class AdminController extends AsyncNotifier> { @override Future> build() => ref.read(adminRepositoryProvider).dashboard(); Future createDepartment(String code, String name) async { try { await ref.read(adminRepositoryProvider).createDepartment(code, name); ref.invalidateSelf(); return null; } catch (e) { return '$e'; } } Future replaceRoles(String id, Set roles) async { try { await ref.read(adminRepositoryProvider).replaceRoles(id, roles); ref.invalidateSelf(); return null; } catch (e) { return '$e'; } } }