import { CircularProgress } from '@mui/material' import _get from 'lodash/get' import _identity from 'lodash/identity' import React, { useEffect, useState } from 'react' import { getCustomFields } from '../../api' import { getDataWithCustomFields, getFieldsKeys, getQueryVariable, } from '../../utils' import { getAddOnDataWithCustomFields } from '../../utils/customFields' const withCustomFields = (Children: any) => (props: any) => { const { data = [], ticketHoldersFields = { id: 1, fields: [], }, skipCustomFields = true, onGetCustomFieldsError = _identity, onGetCustomFieldsSuccess = _identity, ...args } = props const [lodaing, setLoading] = useState(!skipCustomFields) const [customFieldsData, setCustomFieldsData] = useState({} as any) const [customFieldsOrderKeys, setCustomFieldsOrderKeys] = useState([] as any) const [customFieldsTicketHolderKeys, setCustomFieldsTicketHolderKeys] = useState([] as any) const [customFieldsAddOnKeys, setCustomFieldsAddOnKeys] = useState([] as any) const getFields = async () => { try { const eventId = getQueryVariable('event_id') || getQueryVariable("eventId") || '' const customFields = await getCustomFields(eventId) const orderFieldsKeys = getFieldsKeys(_get(customFields, 'orderFields', [])) const ticketHoldersFieldsKeys = getFieldsKeys(_get(customFields, 'ticketsFields', [])) const addOnFieldsKeys = getFieldsKeys(_get(customFields, 'addOnFields', [])) setCustomFieldsTicketHolderKeys(ticketHoldersFieldsKeys) setCustomFieldsOrderKeys(orderFieldsKeys) setCustomFieldsData(customFields) setCustomFieldsAddOnKeys(addOnFieldsKeys) onGetCustomFieldsSuccess(customFields) } catch (e) { onGetCustomFieldsError(e) } finally { setLoading(false) } } useEffect(() => { if (!skipCustomFields) { getFields() } }, []) const { dataWithCustomFields, ticketHoldersWithCustomFields, } = getDataWithCustomFields(data, ticketHoldersFields, customFieldsData) const { addOnDataWithCustomFields } = getAddOnDataWithCustomFields(customFieldsData) if (lodaing) { return } return ( ) } export { withCustomFields }