aboutsummaryrefslogtreecommitdiff
path: root/src/containers/PollCreation/useS3Preupload.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/containers/PollCreation/useS3Preupload.ts')
-rw-r--r--src/containers/PollCreation/useS3Preupload.ts29
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
+ };
+};