Files

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."));
}
}
}