fix to prod
This commit is contained in:
73
lib/presentation/viewmodel/fine_list_bloc.dart
Normal file
73
lib/presentation/viewmodel/fine_list_bloc.dart
Normal file
@@ -0,0 +1,73 @@
|
||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||
import '../../core/result.dart'; // Убедитесь, что импортирован!
|
||||
import '../../domain/entities/fine.dart';
|
||||
import '../../domain/usecase/get_fines_usecase.dart';
|
||||
import '../event/fine_list_event.dart';
|
||||
import '../state/fine_list_state.dart';
|
||||
|
||||
class FineListBloc extends Bloc<FineListEvent, FineListState> {
|
||||
final GetFinesUsecase getFinesUsecase;
|
||||
|
||||
FineListBloc(this.getFinesUsecase) : super(const FineListState()) {
|
||||
on<FetchFinesRequested>(_onFetchFines);
|
||||
on<RefreshFinesRequested>(_onRefreshFines);
|
||||
}
|
||||
|
||||
Future<void> _onFetchFines(
|
||||
FetchFinesRequested event,
|
||||
Emitter<FineListState> emit,
|
||||
) async {
|
||||
emit(state.copyWith(status: FineListStatus.loading));
|
||||
try {
|
||||
final result = await getFinesUsecase(); // Возвращает Result<List<Fine>>
|
||||
|
||||
// Распаковываем Result
|
||||
if (result is Success<List<Fine>>) {
|
||||
final fines = result.data ?? []; // List<Fine>
|
||||
emit(state.copyWith(
|
||||
status: fines.isEmpty ? FineListStatus.empty : FineListStatus.success,
|
||||
fines: fines,
|
||||
));
|
||||
} else if (result is Failure<List<Fine>>) {
|
||||
emit(state.copyWith(
|
||||
status: FineListStatus.failure,
|
||||
errorMessage: result.failure.toString(), // или конкретное сообщение
|
||||
));
|
||||
}
|
||||
} catch (e) {
|
||||
emit(state.copyWith(
|
||||
status: FineListStatus.failure,
|
||||
errorMessage: e.toString(),
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _onRefreshFines(
|
||||
RefreshFinesRequested event,
|
||||
Emitter<FineListState> emit,
|
||||
) async {
|
||||
emit(state.copyWith(status: FineListStatus.loading));
|
||||
try {
|
||||
final result = await getFinesUsecase(); // Возвращает Result<List<Fine>>
|
||||
|
||||
// Распаковываем Result
|
||||
if (result is Success<List<Fine>>) {
|
||||
final fines = result.data ?? []; // List<Fine>
|
||||
emit(state.copyWith(
|
||||
status: fines.isEmpty ? FineListStatus.empty : FineListStatus.success,
|
||||
fines: fines,
|
||||
));
|
||||
} else if (result is Failure<List<Fine>>) {
|
||||
emit(state.copyWith(
|
||||
status: FineListStatus.failure,
|
||||
errorMessage: result.failure.toString(), // или конкретное сообщение
|
||||
));
|
||||
}
|
||||
} catch (e) {
|
||||
emit(state.copyWith(
|
||||
status: FineListStatus.failure,
|
||||
errorMessage: e.toString(),
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,6 @@
|
||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||
import '../../core/result.dart';import '../../domain/entities/fine.dart';
|
||||
|
||||
import '../../domain/usecase/get_fine_details_usecase.dart';
|
||||
import '../../domain/usecase/pay_fine_usecase.dart';
|
||||
import '../event/fine_payment_event.dart';
|
||||
@@ -19,13 +21,37 @@ class FinePaymentBloc extends Bloc<FinePaymentEvent, FinePaymentState> {
|
||||
}
|
||||
|
||||
Future<void> _onFetchFineDetails(
|
||||
FetchFineDetails event,
|
||||
Emitter<FinePaymentState> emit,
|
||||
) async {
|
||||
FetchFineDetails event,
|
||||
Emitter<FinePaymentState> emit,
|
||||
) async {
|
||||
emit(state.copyWith(status: FinePaymentStatus.loading));
|
||||
try {
|
||||
final fine = await getFineDetailsUsecase(event.fineId);
|
||||
// emit(state.copyWith(status: FinePaymentStatus.initial, fine: fine));
|
||||
final result = await getFineDetailsUsecase(event.fineId); // Возвращает Result<Fine>
|
||||
|
||||
// Распаковываем Result
|
||||
if (result is Success<Fine>) {
|
||||
final fine = result.data; // Fine?
|
||||
if (fine != null) {
|
||||
emit(state.copyWith(
|
||||
status: FinePaymentStatus.initial,
|
||||
fine: fine,
|
||||
));
|
||||
} else {
|
||||
emit(
|
||||
state.copyWith(
|
||||
status: FinePaymentStatus.failure,
|
||||
errorMessage: "Не удалось получить данные о штрафе",
|
||||
),
|
||||
);
|
||||
}
|
||||
} else if (result is Failure<Fine>) {
|
||||
emit(
|
||||
state.copyWith(
|
||||
status: FinePaymentStatus.failure,
|
||||
errorMessage: result.failure.toString(), // или конкретное сообщение
|
||||
),
|
||||
);
|
||||
}
|
||||
} catch (e) {
|
||||
emit(
|
||||
state.copyWith(
|
||||
|
||||
Reference in New Issue
Block a user