/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: MIT-0 */ import { FunctionComponent, useCallback, useState } from 'react' import { OrderData, EMPTY_ORDER_DATA } from '../../../models' import { Button, Checkbox, ColumnLayout, Form, FormField, FormSection, Inline, Input, Stack } from 'aws-northstar' import { useHistory, useParams } from 'react-router-dom' import { v4 as uuid } from 'uuid' import { appvars } from '../../../config' import { useOrderContext } from '../../../contexts/OrderQueryContext' import { dayjsutc } from '../../../utils/dayjs' import { useImmer } from 'use-immer' import { Draft } from 'immer' export const Editor: FunctionComponent = () => { const history = useHistory() const { orderId } = useParams<{ orderId: string }>() const [{ items: orderItems, isLoading }, { updateItem, createItem }] = useOrderContext() const editMode = !(orderId === 'new' || orderId === undefined) const [orderData, updateOrderData] = useImmer(() => { if (editMode && orderItems != null) { const sel = orderItems.find((x) => x.Id === orderId) if (sel != null) { return sel } } return { ...EMPTY_ORDER_DATA, Id: uuid(), } }) const [formError, setFormError] = useState() const onSubmit = useCallback( async (event: React.FormEvent) => { event.preventDefault() if (orderData == null) { throw new Error('OrderData is null') } try { if (editMode) { updateItem(orderData, true) } else { await createItem(orderData) } history.push(`/${appvars.URL.ORDER}/${orderData.Id}`) } catch (err) { setFormError(`Error while ${editMode ? 'updating' : 'saving new'} order object: ${err}`) } }, [orderData, history, updateItem, createItem, setFormError, editMode], ) if (orderData == null) { return null } return (
} > { updateOrderData((draft: Draft) => { draft.orderNo = e }) }} /> { updateOrderData((draft: Draft) => { draft.deliveryCode = e }) }} /> { updateOrderData((draft: Draft) => { draft.deliveryName = e }) }} /> { updateOrderData((draft: Draft) => { draft.sumWeight = parseFloat(e) }) }} />
) }