import { action, extendObservable, makeObservable, observable } from 'mobx';

export default class Steps {
  constructor({ steps = {} }) {
    makeObservable(this, {
      currentStep: observable,
      accordionStep: observable,
      onCompleteSteps: observable,
      completedStep: observable,
      next: action,
      prev: action,
      setStep: action,
      close: action,
      reset: action,
    });

    extendObservable(this, steps);
  }

  currentStep = 1;
  accordionStep = 1;
  onCompleteSteps = false;
  completedStep = 0;

  next() {
    this.currentStep += 1;
  }

  prev() {
    if (this.currentStep > 1) {
      this.currentStep -= 1;
    }
  }

  setStep(newStep: number) {
    this.currentStep = newStep;
  }

  setAccordionStep(newStep: number) {
    this.accordionStep = newStep;
  }

  setCompletedStep(step: number) {
    this.completedStep = step;
  }

  close() {
    this.onCompleteSteps = true;
  }

  reset() {
    this.currentStep = 1;
    this.accordionStep = 1;
    this.completedStep = 0;
    this.onCompleteSteps = false;
  }
}
