// ignore_for_file: must_be_immutable

part of 'key_bloc.dart';

enum KeyStatus {
  unknown,
  searchforKeys,
  scanning,
  openClosestReader,
  openClosestReaderSuccess,
  openClosestReaderError,
  scanningError,
  validKeys,
  searchForKeysError,
  setRootOpeningTriggerError,
  removeRootOpeningTriggerError
}

class KeyState extends Equatable {
  KeyState._({
    this.status = KeyStatus.unknown,
    key,
    error,
  });

  KeyState.unknown() : this._(status: KeyStatus.unknown);

  KeyState.searchForKeys() : this._(status: KeyStatus.searchforKeys);
  KeyState.validKeys(List<MobileKeysKey?> keys)
      : this._(status: KeyStatus.validKeys, key: keys);

  KeyState.scanning() : this._(status: KeyStatus.scanning);

  KeyState.openClosestReader() : this._(status: KeyStatus.openClosestReader);

  KeyState.openClosestReaderSuccess()
      : this._(status: KeyStatus.openClosestReaderSuccess);

  KeyState.openClosestReaderError(String error)
      : this._(status: KeyStatus.openClosestReaderError, error: error);

  KeyState.searchForKeysError(String error)
      : this._(status: KeyStatus.searchForKeysError, error: error);

  KeyState.scanningError(String error)
      : this._(status: KeyStatus.scanningError, error: error);

  KeyState.setRootOpeningTriggerError(String error)
      : this._(status: KeyStatus.setRootOpeningTriggerError, error: error);

  KeyState.removeRootOpeningTriggerError(String error)
      : this._(status: KeyStatus.removeRootOpeningTriggerError, error: error);

  KeyStatus status;
  MobileKeysKey? key;
  String? error;

  @override
  List<Object?> get props => [status, key, error];
}