aboutsummaryrefslogtreecommitdiff
path: root/src/hooks/useS3Preupload.tsx
diff options
context:
space:
mode:
authoreug-vs <eug-vs@keemail.me>2020-08-14 02:45:20 +0300
committereug-vs <eug-vs@keemail.me>2020-08-14 02:48:11 +0300
commitfca54f49bb3541f726da1becffaa60197835ca68 (patch)
tree08dfa96410207f5621989c3cb0ea930624af1bee /src/hooks/useS3Preupload.tsx
parent88d3c411efbf5f6ac74fa67e38c154f1e53d4938 (diff)
downloadwhich-ui-fca54f49bb3541f726da1becffaa60197835ca68.tar.gz
refactor: resolve eslint errors
Diffstat (limited to 'src/hooks/useS3Preupload.tsx')
-rw-r--r--src/hooks/useS3Preupload.tsx39
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
+ };
};