diff --git a/src/components/Recorder.tsx b/src/components/Recorder.tsx index ff2ad4f..2163a50 100644 --- a/src/components/Recorder.tsx +++ b/src/components/Recorder.tsx @@ -6,6 +6,10 @@ import { MicrophoneIcon, PauseIcon } from "@heroicons/react/24/outline"; import { ResumeIcon, TrashIcon } from "@radix-ui/react-icons"; import { StopIcon } from "@heroicons/react/24/solid"; import StopTime from "~/components/StopTime"; +import axios from "axios"; +import dayjs from "dayjs"; +import { useRouter } from "next/router"; +import { api } from "~/utils/api"; export default function Recorder() { const [steam, setStream] = useState(null); @@ -18,6 +22,10 @@ export default function Recorder() { null ); const [step, setStep] = useState<"pre" | "in" | "post">("pre"); + const router = useRouter(); + const [submitting, setSubmitting] = useState(false); + const apiUtils = api.useContext(); + const getSignedUrl = api.video.getUploadUrl.useMutation(); const handleRecording = async () => { const screenStream = await navigator.mediaDevices.getDisplayMedia({ @@ -101,10 +109,33 @@ export default function Recorder() { const handleSave = () => { if (blob) { - invokeSaveAsDialog(blob); + const dateString = + "Recording - " + dayjs().format("D MMM YYYY") + ".webm"; + invokeSaveAsDialog(blob, dateString); } }; + const handleUpload = async () => { + if (!blob) return; + const dateString = "Recording - " + dayjs().format("D MMM YYYY") + ".webm"; + setSubmitting(true); + const { signedUrl, id } = await getSignedUrl.mutateAsync({ + key: dateString, + }); + await axios + .put(signedUrl, blob.slice(), { + headers: { "Content-Type": "video/webm" }, + }) + .then(() => { + void router.push("share/" + id); + }) + .catch((err) => { + console.error(err); + }); + setSubmitting(false); + void apiUtils.video.getAll.invalidate(); + }; + return (
{step === "pre" ? ( @@ -213,7 +244,6 @@ export default function Recorder() { ) : null} {step === "post" ? (
- post recording {blob && (
) : null}
diff --git a/src/components/VideoUploadModal.tsx b/src/components/VideoUploadModal.tsx index 0257b43..8dc0450 100644 --- a/src/components/VideoUploadModal.tsx +++ b/src/components/VideoUploadModal.tsx @@ -63,18 +63,6 @@ export default function VideoUploadModal() { className="relative z-10" onClose={() => void closeModal} > - -
- -