feat: complete MVP administration tools

This commit is contained in:
selfrelease
2026-07-18 19:47:20 +08:00
parent d0a2f4f923
commit b311be6aa6
14 changed files with 615 additions and 8 deletions
@@ -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';
}
}
}