48 lines
1.3 KiB
Dart
48 lines
1.3 KiB
Dart
import 'dart:async';
|
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
|
|
|
import '../repositories/admin_repository.dart';
|
|
import 'admin_event.dart';
|
|
import 'admin_state.dart';
|
|
|
|
export 'admin_event.dart';
|
|
export 'admin_state.dart';
|
|
|
|
class AdminBloc extends Bloc<AdminEvent, AdminState> {
|
|
final AdminRepository repository;
|
|
|
|
AdminBloc({required this.repository}) : super(AdminInitial()) {
|
|
on<FetchAdminUsers>(_onFetchUsers);
|
|
on<CreateAdminUser>(_onCreateUser);
|
|
on<UpdateAdminUser>(_onUpdateUser);
|
|
}
|
|
|
|
Future<void> _onFetchUsers(FetchAdminUsers event, Emitter<AdminState> emit) async {
|
|
emit(AdminLoading());
|
|
try {
|
|
final users = await repository.fetchUsers();
|
|
emit(AdminLoaded(users));
|
|
} catch (e) {
|
|
emit(const AdminError("Fehler beim Laden der Admin-Nutzer."));
|
|
}
|
|
}
|
|
|
|
Future<void> _onCreateUser(CreateAdminUser event, Emitter<AdminState> emit) async {
|
|
try {
|
|
await repository.createUser(event.dto);
|
|
add(FetchAdminUsers());
|
|
} catch (e) {
|
|
emit(AdminError(e.toString()));
|
|
}
|
|
}
|
|
|
|
Future<void> _onUpdateUser(UpdateAdminUser event, Emitter<AdminState> emit) async {
|
|
try {
|
|
await repository.updateUser(event.id, event.dto);
|
|
add(FetchAdminUsers());
|
|
} catch (e) {
|
|
emit(const AdminError("Nutzer konnte nicht aktualisiert werden."));
|
|
}
|
|
}
|
|
}
|