import 'package:flutter_bloc/flutter_bloc.dart';

import '../../../domain/repositories/grocery_repository.dart';
import 'scanner_state.dart';

class ScannerCubit extends Cubit<ScannerState> {
  final GroceryRepository _repository;

  ScannerCubit({required GroceryRepository repository})
      : _repository = repository,
        super(const ScannerState());

  Future<void> scanBarcode(String barcode) async {
    emit(state.copyWith(isLoading: true, errorMessage: null));

    final item = await _repository.lookupBarcode(barcode);

    if (item != null) {
      _repository.addToHistory(item);
      emit(state.copyWith(isLoading: false, item: item));
    } else {
      emit(state.copyWith(
        isLoading: false,
        errorMessage: 'Product not found',
      ));
    }
  }

  void reset() {
    emit(const ScannerState());
  }
}