import { setIn } from 'lodash-redux-immutability';

import { setOneUntimedCondition } from '@/app/(root)/create/v2/actions/currentModeSetters';
import {
  ConditionTypes,
  CreateFormState,
  CreateModes,
} from '@/app/(root)/create/v2/types';
import { Clip } from '@/state/clipStore';

const sampleClip = (clip: Clip) => (state: CreateFormState) => {
  state = setIn(
    state,
    ['global', 'mode'],
    [CreateModes.CUSTOM, CreateModes.CHAT].includes(state.global.mode)
      ? state.global.mode
      : CreateModes.CUSTOM
  );

  // Clear any existing extend condition when adding sample
  state = setIn(state, ['global', 'timedCondition'], null);
  state = setIn(state, ['global', 'untimedConditions'], {});

  // Sample now uses an array of clipIds
  state = setOneUntimedCondition(ConditionTypes.SAMPLE, { clipIds: [clip.id] })(
    state
  );

  return state;
};

export default sampleClip;
