import { BASIC_MODAL_KEY, MESSAGE_MODAL_KEY } from '../constants'

export interface ShowModalAction {
    type: '@@cosmo-ui/SHOW_MODAL',
    modalType: string,
    modalProps: any
}

export interface UpdateModalPropsAction {
    type: '@@cosmo-ui/UPDATE_MODAL_PROPS',
    modalProps: any
}

export interface HideModalAction {
    type: '@@cosmo-ui/HIDE_MODAL',
}

export const SHOW_MODAL = '@@cosmo-ui/SHOW_MODAL'
export const HIDE_MODAL = '@@cosmo-ui/HIDE_MODAL'
export const UPDATE_MODAL_PROPS = '@@cosmo-ui/UPDATE_MODAL_PROPS'

export type ModalAction = ShowModalAction | HideModalAction | UpdateModalPropsAction

export const showModal = (modalType: string, modalProps: any = null) =>
    ({ type: SHOW_MODAL, modalType, modalProps })

export const hideModal = () =>
    ({ type: HIDE_MODAL })

export const showBasicModal = (message: string) =>
    showModal(BASIC_MODAL_KEY, {message, backgroundActive: true})

export const showMessageModal = (message: string) => {
    const props = {
        message,
        backgroundActive: false,
    }
    return showModal(MESSAGE_MODAL_KEY, props)
}

export const showIconMessageModal = (message: string, icon: string) => {
    const props = {
        message,
        icon,
        backgroundActive: false,
    }
    return showModal(MESSAGE_MODAL_KEY, props)
}
