diff --git a/src/components/admin/resources/form.tsx b/src/components/admin/resources/form.tsx index 539adbf..c32b3b0 100644 --- a/src/components/admin/resources/form.tsx +++ b/src/components/admin/resources/form.tsx @@ -53,22 +53,30 @@ export type ResourceUpdateInput = RouterInputs["auditoryResource"]["update"]; * * File needs to be path relative to resource_logos/ */ -const SelectImageInput = ({ file }: { file?: string }) => { - const { getValues } = useFormContext(); +const SelectImageInput = ({ + file, + setIconFile, +}: { + file?: string; + setIconFile: (file: File) => void; +}) => { + const [previewImg, setPreviewImg] = useState( + `/resource_logos/${file ?? ""}` + ); - const onChange = async (event: ChangeEvent) => { - const data = new FormData(); + const onChange = (event: ChangeEvent) => { if (!event.target.files || !event.target.files[0]) { return; } - const resourceId = getValues("id"); - data.append("photo", event.target.files[0]); + const file = event.target.files[0]; + const reader = new FileReader(); + reader.onloadend = () => { + setPreviewImg(reader.result as string); + }; + reader.readAsDataURL(file); - await fetch(`/api/resources/photo/${resourceId}`, { - method: "POST", - body: data, - }); + setIconFile(file); }; return ( @@ -79,7 +87,7 @@ const SelectImageInput = ({ file }: { file?: string }) => { > {`resource { { - onChange(event).catch(() => { - throw new Error( - "Unexpected error occured when selecting new file." - ); - }); - }} + onChange={onChange} accept="image/*" id="resource-image-file" type="file" @@ -333,8 +335,10 @@ const PaymentTypeOption = ({ */ function ResourceSummarySubForm({ resource, + setIconFile, }: { resource?: ResourceUpdateInput; + setIconFile: (file: File) => void; }) { const { register } = useFormContext(); @@ -342,7 +346,7 @@ function ResourceSummarySubForm({
- +

@@ -462,10 +466,12 @@ const ResourceDescriptionSubForm = () => { }; const ResourceForm = ({ + setIconFile, methods, resource, error, }: { + setIconFile: (file: File) => void; resource?: ResourceUpdateInput; methods: UseFormReturn; error?: string; @@ -487,7 +493,10 @@ const ResourceForm = ({ General

- +
diff --git a/src/pages/resources/[id]/edit.tsx b/src/pages/resources/[id]/edit.tsx index e4fa6fd..ab1855b 100644 --- a/src/pages/resources/[id]/edit.tsx +++ b/src/pages/resources/[id]/edit.tsx @@ -46,6 +46,7 @@ const EditResourcePage = ( props: InferGetServerSidePropsType ) => { const { resource } = props; + const [updateIconFile, setIconFile] = useState(undefined); const [serverError, setServerError] = useState(undefined); const formMethods = useForm({ defaultValues: resource as ResourceUpdateInput, @@ -59,6 +60,18 @@ const EditResourcePage = ( }); const onSubmit: SubmitHandler = (data) => { + if (updateIconFile) { + console.log("we need to update the file!"); + } + + // const data = new FormData(); + // data.append("photo", event.target.files[0]); + + // await fetch(`/api/resources/photo/${resourceId}`, { + // method: "POST", + // body: data, + // }); + mutate(data); }; @@ -102,6 +115,7 @@ const EditResourcePage = ( >