diff --git a/packages/components/src/api/upload/UploadVideo.ts b/packages/components/src/api/upload/UploadVideo.ts new file mode 100644 index 0000000000..36ee999234 --- /dev/null +++ b/packages/components/src/api/upload/UploadVideo.ts @@ -0,0 +1,60 @@ +import { ApiConfig } from "../ApiConfig"; + +export interface UploadVideoRequest { + uuid_idempotency_token: string, + source?: string, // eg. "device", "file" + file: any, +} + +export interface UploadVideoSuccessResponse { + success: boolean, + upload_token: string, +} + +export interface UploadVideoErrorResponse { + success: boolean, +} + +type UploadVideoResponse = UploadVideoSuccessResponse | UploadVideoErrorResponse; + +export function UploadVideoIsOk(response: UploadVideoResponse): response is UploadVideoSuccessResponse { + return response?.success === true; +} + +export function UploadVideoIsError(response: UploadVideoResponse): response is UploadVideoErrorResponse { + return response?.success === false; +} + +export async function UploadVideo(request: UploadVideoRequest) : Promise +{ + const endpoint = new ApiConfig().uploadVideo(); + + const formData = new FormData(); + + formData.append('uuid_idempotency_token', request.uuid_idempotency_token); + formData.append('file', request.file); + + if (request.source !== undefined) { + formData.append('source', request.source); + } + + return fetch(endpoint, { + method: 'POST', + credentials: 'include', + headers: { + 'Accept': 'application/json', + }, + body: formData, + }) + .then(res => res.json()) + .then(res => { + if (res && 'success' in res) { + return res; + } else { + return { success : false }; + } + }) + .catch(e => { + return { success : false }; + }); +} diff --git a/packages/fakeyou.com/src/v2/view/pages/video_mocap/components/uploadFieldVideo/UploadFieldVideo.tsx b/packages/fakeyou.com/src/v2/view/pages/video_mocap/components/VideoInput/VideoInput.tsx similarity index 85% rename from packages/fakeyou.com/src/v2/view/pages/video_mocap/components/uploadFieldVideo/UploadFieldVideo.tsx rename to packages/fakeyou.com/src/v2/view/pages/video_mocap/components/VideoInput/VideoInput.tsx index 31d1e2789c..7fb07a1270 100644 --- a/packages/fakeyou.com/src/v2/view/pages/video_mocap/components/uploadFieldVideo/UploadFieldVideo.tsx +++ b/packages/fakeyou.com/src/v2/view/pages/video_mocap/components/VideoInput/VideoInput.tsx @@ -1,11 +1,11 @@ -import React, { useState } from "react"; -import { a, useSpring } from '@react-spring/web'; +import React from "react"; +import { useSpring } from '@react-spring/web'; import { FileDetails, FileWrapper, FileLabel } from "components/common"; -import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faFileVideo, faVideo } from "@fortawesome/pro-solid-svg-icons"; import "./style.scss"; interface Props { + //blob, clear, file, inputProps comes from file blob?: string, clear?: (file?: any) => void, file?: any, @@ -32,8 +32,7 @@ export default function UploadFieldVideo({ working = false, ...rest }: Props) { - const [loaded,loadedSet] = useState(); - const onLoad = () => loadedSet(1); + const style = useSpring({ config: { mass: 1, tension: 120, friction: 14 }, onRest @@ -46,14 +45,17 @@ export default function UploadFieldVideo({ { file ? <>