feat(App): update Finlytic Flutter app UI and blocs
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
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."));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
import 'package:equatable/equatable.dart';
|
||||
import '../models/admin_create_user_request_dto.dart';
|
||||
import '../models/admin_update_user_request_dto.dart';
|
||||
|
||||
abstract class AdminEvent extends Equatable {
|
||||
const AdminEvent();
|
||||
|
||||
@override
|
||||
List<Object?> get props => [];
|
||||
}
|
||||
|
||||
class FetchAdminUsers extends AdminEvent {}
|
||||
|
||||
class CreateAdminUser extends AdminEvent {
|
||||
final AdminCreateUserRequestDto dto;
|
||||
|
||||
const CreateAdminUser(this.dto);
|
||||
|
||||
@override
|
||||
List<Object?> get props => [dto];
|
||||
}
|
||||
|
||||
class UpdateAdminUser extends AdminEvent {
|
||||
final String id;
|
||||
final AdminUpdateUserRequestDto dto;
|
||||
|
||||
const UpdateAdminUser(this.id, this.dto);
|
||||
|
||||
@override
|
||||
List<Object?> get props => [id, dto];
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
import 'package:equatable/equatable.dart';
|
||||
import 'package:finlytic_app/features/admin/models/admin_user_model.dart';
|
||||
|
||||
abstract class AdminState extends Equatable {
|
||||
const AdminState();
|
||||
|
||||
@override
|
||||
List<Object?> get props => [];
|
||||
}
|
||||
|
||||
class AdminInitial extends AdminState {}
|
||||
|
||||
class AdminLoading extends AdminState {}
|
||||
|
||||
class AdminLoaded extends AdminState {
|
||||
final List<AdminUserModel> users;
|
||||
|
||||
const AdminLoaded(this.users);
|
||||
|
||||
@override
|
||||
List<Object?> get props => [users];
|
||||
}
|
||||
|
||||
class AdminError extends AdminState {
|
||||
final String message;
|
||||
|
||||
const AdminError(this.message);
|
||||
|
||||
@override
|
||||
List<Object?> get props => [message];
|
||||
}
|
||||
Reference in New Issue
Block a user