From 22c4d29db57f638a8a376b761cc5cd4d033864b6 Mon Sep 17 00:00:00 2001 From: Alex van Andel Date: Sat, 16 Oct 2021 11:42:28 +0100 Subject: [PATCH] Chore: Resolves TS errors related to FileReader/ImageUploader (#965) * Resolves TS errors related to FileReader/ImageUploader * Also tackle cropImage errors Co-authored-by: Bailey Pumfleet --- components/ImageUploader.tsx | 35 +++++++++++++++++++++-------------- components/Slider.tsx | 19 +++++++++++++------ lib/cropImage.ts | 5 +++-- lib/hooks/useFileReader.ts | 19 +++++++------------ 4 files changed, 44 insertions(+), 34 deletions(-) diff --git a/components/ImageUploader.tsx b/components/ImageUploader.tsx index 7dccb69e..aa6d89ad 100644 --- a/components/ImageUploader.tsx +++ b/components/ImageUploader.tsx @@ -1,4 +1,4 @@ -import { useCallback, useEffect, useState } from "react"; +import { FormEvent, useCallback, useEffect, useState } from "react"; import Cropper from "react-easy-crop"; import { Area, getCroppedImg } from "@lib/cropImage"; @@ -17,6 +17,10 @@ type ImageUploaderProps = { target: string; }; +interface FileEvent extends FormEvent { + target: EventTarget & T; +} + // This is separate to prevent loading the component until file upload function CropContainer({ onCropComplete, @@ -29,13 +33,13 @@ function CropContainer({ const [crop, setCrop] = useState({ x: 0, y: 0 }); const [zoom, setZoom] = useState(1); - const handleZoomSliderChange = ([value]) => { + const handleZoomSliderChange = (value: number) => { value < 1 ? setZoom(1) : setZoom(value); }; return ( -
-
+
+
{ + const onInputFile = (e: FileEvent) => { + if (!e.target.files?.length) { + return; + } setFile(e.target.files[0]); }; @@ -110,33 +117,33 @@ export default function ImageUploader({
-
+
-
-
+
{!result && ( -
+
{!imageSrc && ( -

+

{t("no_target", { target })}

)} - {imageSrc && {target}} + {imageSrc && {target}}
)} - {result && } -