diff options
author | eug-vs <eug-vs@keemail.me> | 2020-08-14 02:45:20 +0300 |
---|---|---|
committer | eug-vs <eug-vs@keemail.me> | 2020-08-14 02:48:11 +0300 |
commit | fca54f49bb3541f726da1becffaa60197835ca68 (patch) | |
tree | 08dfa96410207f5621989c3cb0ea930624af1bee /src/hooks/useS3Preupload.tsx | |
parent | 88d3c411efbf5f6ac74fa67e38c154f1e53d4938 (diff) | |
download | which-ui-fca54f49bb3541f726da1becffaa60197835ca68.tar.gz |
refactor: resolve eslint errors
Diffstat (limited to 'src/hooks/useS3Preupload.tsx')
-rw-r--r-- | src/hooks/useS3Preupload.tsx | 39 |
1 files changed, 26 insertions, 13 deletions
diff --git a/src/hooks/useS3Preupload.tsx b/src/hooks/useS3Preupload.tsx index 64db942..3c98e9a 100644 --- a/src/hooks/useS3Preupload.tsx +++ b/src/hooks/useS3Preupload.tsx @@ -1,19 +1,28 @@ import { useState, useCallback, useMemo } from 'react'; -import { get } from '../requests'; import axios from 'axios'; +import { get } from '../requests'; + + +interface ProgressEvent { + loaded: number; + total: number; +} +interface Hook { + setValue: (value: File | string | undefined) => void; + isReady: boolean; + resolve: () => Promise<string>; + progress: number; +} -export default () => { +export default (): Hook => { const [url, setUrl] = useState<string>(); const [file, setFile] = useState<File>(); const [progress, setProgress] = useState<number>(0); const isReady = useMemo(() => Boolean(file || url), [file, url]); - - console.log({ file, url }) - - const setValue = useCallback((value: File | string | undefined): void => { + const setValue: Hook['setValue'] = useCallback(value => { if (value instanceof File) { setFile(value); setUrl(undefined); @@ -23,7 +32,7 @@ export default () => { } }, [setUrl, setFile]); - const handleUploadProgress = useCallback((progressEvent: any) => { + const handleUploadProgress = useCallback((progressEvent: ProgressEvent): void => { setProgress(Math.round((progressEvent.loaded * 100) / progressEvent.total)); }, [setProgress]); @@ -38,14 +47,18 @@ export default () => { .then(response => response.data) .then(uploadUrl => axios.put(uploadUrl, file, config)) .then(response => { - const { config: { url } } = response; - return url ? url.slice(0, url.indexOf('?')) : ''; + const uri = response.config.url; + return uri ? uri.slice(0, uri.indexOf('?')) : ''; }); - } else { - setProgress(100); - return url || ''; } + setProgress(100); + return url || ''; }, [file, handleUploadProgress, url]); - return { setValue, isReady, resolve, progress }; + return { + setValue, + isReady, + resolve, + progress + }; }; |