@open-tender/utils
Version:
A library of utils for use with Open Tender applications that utilize our cloud-based Order API.
40 lines (39 loc) • 1.53 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.useCurbside = void 0;
const react_1 = require("react");
const utils_1 = require("../utils");
const useCurbside = (orderId, fulfillment, loading, error, update, settings, showAllFields = false) => {
const [data, setData] = (0, react_1.useState)({});
const [submitting, setSubmitting] = (0, react_1.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;
(0, react_1.useEffect)(() => {
if (loading === 'idle')
setSubmitting(false);
}, [loading]);
(0, react_1.useEffect)(() => {
if (!(0, utils_1.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
};
};
exports.useCurbside = useCurbside;