import 'package:equatable/equatable.dart';
import 'package:syncrow_app/features/devices/model/smart_door_model.dart';
import 'package:syncrow_app/features/devices/model/temporary_password_model.dart';

class SmartDoorState extends Equatable {
  const SmartDoorState();

  @override
  List<Object> get props => [];
}

class InitialState extends SmartDoorState {}

class LoadingInitialState extends SmartDoorState {}

class UpdateState extends SmartDoorState {
  final SmartDoorModel smartDoorModel;
  const UpdateState({required this.smartDoorModel});

  @override
  List<Object> get props => [smartDoorModel];
}

class LoadingNewSate extends SmartDoorState {
  final SmartDoorModel smartDoorModel;
  const LoadingNewSate({required this.smartDoorModel});

  @override
  List<Object> get props => [smartDoorModel];
}

class FailedState extends SmartDoorState {
  final String errorMessage;

  const FailedState({required this.errorMessage});

  @override
  List<Object> get props => [errorMessage];
}

class GeneratePasswordState extends SmartDoorState {
}

class TimeSelectedState extends SmartDoorState {}

class IsRepeatState extends SmartDoorState {
  final bool repeat;
  const IsRepeatState({required this.repeat});

  @override
  List<Object> get props => [repeat];

}

class IsStartEndState extends SmartDoorState {
  final bool isStartEndTime;
  const IsStartEndState({required this.isStartEndTime});

  @override
  List<Object> get props => [isStartEndTime];
}

class ChangeStartTimeState extends SmartDoorState {}

class ChangeEndTimeState extends SmartDoorState {}

class ChangeTimeState extends SmartDoorState {}

class SaveState extends SmartDoorState {}

class LoadingSaveState extends SmartDoorState {}

class GeneratePasswordOneTimestate extends SmartDoorState {
  final bool generated;
  const GeneratePasswordOneTimestate({required this.generated});
  List<Object> get props => [generated];
}

class TemporaryPasswordsLoadedState extends SmartDoorState {
  final List<TemporaryPassword> temporaryPassword;
  const TemporaryPasswordsLoadedState({required this.temporaryPassword});
}
