import { IGenericSelect } from '../../../../generic/types/select';
import { ISlackSelectConversations } from '../../../types';
import { transformConfirm } from '../confirm';
import { transformTextObject } from '../helpers/transform-text-object';

export const transformConversationsSelect = ({ 
  type,
  placeholder,
  action_id,
  initial_conversation,
  default_to_current_conversation,
  confirm,
  response_url_enabled,
  filter
  }: ISlackSelectConversations): IGenericSelect => {
  const res: IGenericSelect = {
    type: 'select',
    props: {
      value: initial_conversation,
      placeholder: transformTextObject(placeholder).value,
      variableName: action_id,
      slack: {
        type
      }
    }
  };

  if (placeholder) {
    res.props.slack.placeholder_type = placeholder.type;
    res.props.slack.placeholder_emoji = placeholder.emoji;
    res.props.slack.placeholder_verbatim = placeholder.verbatim;
  }

  if (default_to_current_conversation) {
    res.props.slack.default_to_current_conversation = default_to_current_conversation;
  }

  if (confirm) {
    res.props.slack.confirm = transformConfirm(confirm);
  }

  if (response_url_enabled) {
    res.props.slack.response_url_enabled = response_url_enabled;
  }

  if (filter) {
    res.props.slack.filter = filter;
  }
  
  return res;
};