fix to prod

This commit is contained in:
2026-08-14 13:47:11 +03:00
parent f53fea576e
commit 80a95ece5b
27 changed files with 872 additions and 221 deletions

View 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(),
));
}
}
}

View File

@@ -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(