diff options
author | Eugene Sokolov <eug-vs@keemail.me> | 2020-08-22 14:56:07 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-08-22 14:56:07 +0300 |
commit | 89f038c7a0ccf6de94516cba8499a0bc69f8dae1 (patch) | |
tree | 5e6dbd7ae5a9d0ce1b79921b2b44986bb13f1874 /src/containers/PollCreation/useS3Preupload.ts | |
parent | a42667af463b8c33a38b935b96d39582b543790b (diff) | |
parent | 93319d38e904535ce33a7868b3c1e0a2a4f33d65 (diff) | |
download | which-ui-89f038c7a0ccf6de94516cba8499a0bc69f8dae1.tar.gz |
Merge pull request #93 from which-ecosystem/avatar-uploads
Avatar uploads
Diffstat (limited to 'src/containers/PollCreation/useS3Preupload.ts')
-rw-r--r-- | src/containers/PollCreation/useS3Preupload.ts | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/containers/PollCreation/useS3Preupload.ts b/src/containers/PollCreation/useS3Preupload.ts new file mode 100644 index 0000000..0e2a8c4 --- /dev/null +++ b/src/containers/PollCreation/useS3Preupload.ts @@ -0,0 +1,29 @@ +import { useState, useCallback } from 'react'; +import uploadFileToS3 from '../../utils/uploadFileToS3'; + +interface Hook { + file: File | string | undefined; + setFile: (value: File | string | undefined) => void; + resolve: () => Promise<string>; + progress: number; +} + +export default (): Hook => { + const [file, setFile] = useState<File | string>(); + const [progress, setProgress] = useState<number>(0); + + const resolve = useCallback(async (quality?: number): Promise<string> => { + // Indicate start + setProgress(0.01); + + if (file instanceof File) return uploadFileToS3(file, quality, setProgress); + return file || ''; + }, [file]); + + return { + file, + setFile, + resolve, + progress + }; +}; |