UNPKG

@open-tender/utils

Version:

A library of utils for use with Open Tender applications that utilize our cloud-based Order API.

36 lines (35 loc) 1.34 kB
import { useState, useEffect } from 'react'; import { isEmpty } from '../utils'; export const useCurbside = (orderId, fulfillment, loading, error, update, settings, showAllFields = false) => { const [data, setData] = useState({}); const [submitting, setSubmitting] = useState(false); const errors = error || {}; const empty = Object.values(fulfillment).every(i => !i); const fields = !empty && !showAllFields ? settings === null || settings === void 0 ? void 0 : settings.fields.filter(i => i.name.startsWith('arrival')) : settings === null || settings === void 0 ? void 0 : settings.fields; useEffect(() => { if (loading === 'idle') setSubmitting(false); }, [loading]); useEffect(() => { if (!isEmpty(fulfillment)) setData(fulfillment); }, [fulfillment]); const handleChange = (name, value) => { setData(Object.assign(Object.assign({}, data), { [name]: value })); }; const handleSubmit = (evt) => { evt === null || evt === void 0 ? void 0 : evt.preventDefault(); setSubmitting(true); update(orderId, Object.assign(Object.assign({}, data), { has_arrived: true })); }; return { fields, data, errors, submitting, handleChange, handleSubmit }; };