bug fixes
This commit is contained in:
@@ -34,6 +34,7 @@ class MapBloc extends Bloc<ScooterEvent, ScooterState> {
|
||||
final LogoutUseCase logoutUseCase;
|
||||
final SplashBloc splashBloc;
|
||||
StreamSubscription<ClientNotification>? _notificationSubscription;
|
||||
Timer? _ordersTimer;
|
||||
|
||||
Future<List<Zone>>? _zonesFuture;
|
||||
|
||||
@@ -58,6 +59,7 @@ class MapBloc extends Bloc<ScooterEvent, ScooterState> {
|
||||
on<FocusOnScooter>(_onFocusOnScooter);
|
||||
on<ClearMapPlacemarks>(_onClearMapPlacemarks);
|
||||
on<ClearMapFocus>(_onClearMapFocus);
|
||||
on<FetchActiveOrders>(_onFetchActiveOrders);
|
||||
}
|
||||
|
||||
Future<List<Zone>> _getZones() async {
|
||||
@@ -344,4 +346,50 @@ class MapBloc extends Bloc<ScooterEvent, ScooterState> {
|
||||
selectedScooterForFocus: null,
|
||||
));
|
||||
}
|
||||
|
||||
void _startOrdersTimer() {
|
||||
_ordersTimer?.cancel();
|
||||
// Опрашиваем раз в 15 секунд, если есть активные поездки
|
||||
_ordersTimer = Timer.periodic(const Duration(seconds: 15), (_) {
|
||||
add(FetchActiveOrders());
|
||||
});
|
||||
}
|
||||
|
||||
void _stopOrdersTimer() {
|
||||
_ordersTimer?.cancel();
|
||||
_ordersTimer = null;
|
||||
}
|
||||
|
||||
Future<void> _onFetchActiveOrders(
|
||||
FetchActiveOrders event,
|
||||
Emitter<ScooterState> emit,
|
||||
) async {
|
||||
try {
|
||||
final result = await getClientOrdersUsecase();
|
||||
if (result is Success<List<ScooterOrder>>) {
|
||||
final activeOrders = result.data ?? [];
|
||||
final count = activeOrders.length;
|
||||
|
||||
// Управляем таймером в зависимости от наличия активных поездок
|
||||
if (count > 0 && (_ordersTimer == null || !_ordersTimer!.isActive)) {
|
||||
_startOrdersTimer();
|
||||
} else if (count == 0) {
|
||||
_stopOrdersTimer();
|
||||
}
|
||||
|
||||
emit(state.copyWith(
|
||||
activeRidesCount: count,
|
||||
reservedScooters: activeOrders.map((e) => e.scooter).toList(),
|
||||
));
|
||||
}
|
||||
} catch (e) {
|
||||
print("Error fetching active orders: $e");
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> close() {
|
||||
_stopOrdersTimer();
|
||||
return super.close();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user