diff --git a/packages/components/src/api/media_files/UploadMedia.ts b/packages/components/src/api/media_files/UploadMedia.ts new file mode 100644 index 0000000000..580ff28928 --- /dev/null +++ b/packages/components/src/api/media_files/UploadMedia.ts @@ -0,0 +1,17 @@ +import MakeMultipartRequest from "../MakeMultipartRequest"; + +export interface UploadMediaRequest { + uuid_idempotency_token?: string, + file: any, + source: string + // dataset_token: string, +} + +export interface UploadMediaResponse { + media_file_token: string, + success: boolean +} + +export const UploadMedia = (request: UploadMediaRequest) => { + return MakeMultipartRequest("/v1/media_files/upload",request); +} \ No newline at end of file diff --git a/packages/fakeyou.com/src/v2/view/pages/dev_upload/DevUpload.tsx b/packages/fakeyou.com/src/v2/view/pages/dev_upload/DevUpload.tsx index 8a74c78b1a..ee7197177e 100644 --- a/packages/fakeyou.com/src/v2/view/pages/dev_upload/DevUpload.tsx +++ b/packages/fakeyou.com/src/v2/view/pages/dev_upload/DevUpload.tsx @@ -2,65 +2,38 @@ import Panel from "components/common/Panel"; import Container from "components/common/Container"; import PageHeader from "components/layout/PageHeader"; import React, { useState } from "react"; -import { Button, Input } from "components/common"; +import { Button } from "components/common"; import { faUpload } from "@fortawesome/pro-solid-svg-icons"; -import { - UploadMediaFile, - UploadMediaFileRequest, -} from "@storyteller/components/src/api/media_files/UploadMediaFile"; +import { UploadMedia, UploadMediaResponse } from "@storyteller/components/src/api/media_files/UploadMedia"; import { v4 as uuidv4 } from "uuid"; +import { Link } from 'react-router-dom'; interface DevUploadProps {} export default function DevUpload(props: DevUploadProps) { - const [selectedFile, setSelectedFile] = useState(null); + const [file, fileSet] = useState(null); + const [tokens,tokensSet] = useState([]); const handleFileChange = (event: any) => { - setSelectedFile(event.target.files[0]); + fileSet(event.target.files[0]); }; - const makeRequest = async (): Promise => { - if (!selectedFile) { - return null; - } - const fileReader = new FileReader(); - fileReader.readAsArrayBuffer(selectedFile); - - return new Promise(resolve => { - fileReader.onload = () => { - const result = fileReader.result; - if (result instanceof ArrayBuffer) { - resolve({ - uuid_idempotency_token: uuidv4(), - file_name: selectedFile.name, - file_bytes: result, - media_source: "file", - }); - } - }; + const handleUpload = () => { + if (file) UploadMedia({ + uuid_idempotency_token: uuidv4(), + file, + source: "file", + }) // if there an audio file it uploads here + .then((res: UploadMediaResponse) => { + if ("media_file_token" in res) { + console.log("📁 upload response:", res); + tokensSet([res.media_file_token, ...tokens]); + fileSet(null); + } }); - }; - - const handleUpload = async () => { - if (!selectedFile) { - alert("Please select a file to upload"); - return; - } - - const request = await makeRequest(); - if (request) { - UploadMediaFile(request) - .then(res => { - if (res) { - console.log(res); - } - }) - .catch(error => { - console.error("Upload failed:", error); - }); - } - }; + else console.log("🥺 no file"); + } return ( @@ -71,7 +44,6 @@ export default function DevUpload(props: DevUploadProps) {
-
+

Your uploads

+ { + tokens.map((token: string, key: number) => + { token }) + }