feat: complete MVP administration tools
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
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, Map<String, Object?>>(
|
||||
AdminController.new,
|
||||
);
|
||||
|
||||
class AdminController extends AsyncNotifier<Map<String, Object?>> {
|
||||
@override
|
||||
Future<Map<String, Object?>> build() =>
|
||||
ref.read(adminRepositoryProvider).dashboard();
|
||||
Future<String?> createDepartment(String code, String name) async {
|
||||
try {
|
||||
await ref.read(adminRepositoryProvider).createDepartment(code, name);
|
||||
ref.invalidateSelf();
|
||||
return null;
|
||||
} catch (e) {
|
||||
return '$e';
|
||||
}
|
||||
}
|
||||
|
||||
Future<String?> replaceRoles(String id, Set<String> roles) async {
|
||||
try {
|
||||
await ref.read(adminRepositoryProvider).replaceRoles(id, roles);
|
||||
ref.invalidateSelf();
|
||||
return null;
|
||||
} catch (e) {
|
||||
return '$e';
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user