import { OkaydFormConfig, OkaydFormStep } from "../types"

// TODO: Write tests for this. - @gfargo
export const getStep = (
  stepIndex: number,
  config: OkaydFormConfig,
): OkaydFormStep => config?.steps[stepIndex]

export const getStepId = (stepIndex: number, config: OkaydFormConfig): string =>
  getStep(stepIndex, config)?.stepId || undefined

export const getStepIndex = (
  stepId: string,
  config: OkaydFormConfig,
): number => {
  const stepIndex = config?.steps?.findIndex(step => step.stepId === stepId)
  return stepIndex >= 0 ? stepIndex : undefined
}

export const getStepType = (
  stepIndex: number,
  config: OkaydFormConfig,
): string => getStep(stepIndex, config)?.stepType || undefined

export const extractFieldIds = (step: OkaydFormStep): string[] =>
  (step.stepType === `form` &&
    step?.content?.fields?.map(field => field.fieldId)) ||
  []