import { Link, Navigate, useParams } from "react-router-dom"; import Form from "./Form"; import { useDelete, useRetrieve, useUpdate } from "../../hooks"; import TResource from "./type"; import { TError } from "../../utils/types"; interface UpdateProps { retrieved: TResource | null; retrieveLoading: boolean; retrieveError: TError; updateLoading: boolean; updateError: TError; deleteLoading: boolean; deleteError: TError; created: TResource | null; updated: TResource | null; deleted: TResource | null; del: (item: TResource) => any; update: (item: TResource, values: Partial) => any; reset: () => void; } const UpdateView = ({created, del, deleteError, deleteLoading, deleted, retrieveError, retrieveLoading, retrieved, update, updateError, updateLoading, updated, reset}: UpdateProps) => { if (deleted) { return ; } const item = updated ? updated : retrieved; const delWithConfirm = () => { if (retrieved && window.confirm("Are you sure you want to delete this item?")) { del(retrieved); } }; return (

Edit {{{ucf}}} {item && item["@id"]}

{created && (
{created["@id"]} created.
)} {updated && (
{updated["@id"]} updated.
)} {(retrieveLoading || updateLoading || deleteLoading) && (
Loading...
)} {retrieveError && (
)} {updateError && (
)} {deleteError && (
)} {item && (
{ reset(); update(item, values); }} error={updateError} reset={reset} initialValues={item} /> )} Back to list
); } const Update = () => { const { id } = useParams<{ id: string }>(); const {retrieved, loading: retrieveLoading, error: retrieveError} = useRetrieve(decodeURIComponent(id || "")); const {updated, update, reset, loading: updateLoading, error: updateError} = useUpdate(); const {deleted, loading: deleteLoading, error: deleteError, del} = useDelete(); return ( ); } export default Update;