import 'package:bloc/bloc.dart';
import 'package:proxibuy/presentation/offer/bloc/offer_event.dart';
import 'package:proxibuy/presentation/offer/bloc/offer_state.dart';

class OffersBloc extends Bloc<OffersEvent, OffersState> {
  OffersBloc() : super(OffersInitial()) {
    on<OffersReceivedFromMqtt>(_onOffersReceivedFromMqtt);
    on<ClearOffers>(_onClearOffers);
  }

  void _onOffersReceivedFromMqtt(
    OffersReceivedFromMqtt event,
    Emitter<OffersState> emit,
  ) {
    // همیشه حالت موفقیت را با لیست دریافتی منتشر کن (حتی اگر خالی باشد).
    // این کار تضمین می‌کند که صفحه از حالت لودینگ خارج می‌شود و رابط کاربری
    // آخرین وضعیت (وجود یا عدم وجود تخفیف) را نمایش می‌دهد.
    emit(OffersLoadSuccess(event.offers));
  }

  // برای زمانی که مثلا کاربر GPS را خاموش می‌کند
  void _onClearOffers(ClearOffers event, Emitter<OffersState> emit) {
    emit(OffersInitial());
  }
}