From abd0a03cd0c3d295820e7e7f751be7f12987e2cf Mon Sep 17 00:00:00 2001 From: MarconLP <13001502+MarconLP@users.noreply.github.com> Date: Sun, 23 Apr 2023 15:16:30 +0200 Subject: [PATCH] add recorder events --- src/components/Recorder.tsx | 20 +++++++++++++++++++- src/components/VideoRecordModal.tsx | 4 ++++ src/components/VideoUploadModal.tsx | 8 ++++++++ 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/src/components/Recorder.tsx b/src/components/Recorder.tsx index 40bec3b..15e1718 100644 --- a/src/components/Recorder.tsx +++ b/src/components/Recorder.tsx @@ -15,6 +15,7 @@ import { TRPCClientError } from "@trpc/client"; import { useAtom } from "jotai/index"; import paywallAtom from "~/atoms/paywallAtom"; import recordVideoModalOpen from "~/atoms/recordVideoModalOpen"; +import { usePostHog } from "posthog-js/react"; interface Props { closeModal: () => void; @@ -45,6 +46,7 @@ export default function Recorder({ closeModal, step, setStep }: Props) { const [duration, setDuration] = useState(0); const [, setPaywallOpen] = useAtom(paywallAtom); const videoRef = useRef(null); + const posthog = usePostHog(); const handleRecording = async () => { const screenStream = await navigator.mediaDevices.getDisplayMedia({ @@ -80,6 +82,8 @@ export default function Recorder({ closeModal, step, setStep }: Props) { recorderRef.current.startRecording(); setStep("in"); + + posthog?.capture("recorder: start video recording"); }; const handleStop = () => { @@ -98,6 +102,8 @@ export default function Recorder({ closeModal, step, setStep }: Props) { }); setStep("post"); + + posthog?.capture("recorder: video recording finished"); }; const handleDelete = () => { @@ -109,6 +115,8 @@ export default function Recorder({ closeModal, step, setStep }: Props) { closeModal(); setStep("pre"); + + posthog?.capture("recorder: video deleted"); }; const handlePause = () => { @@ -119,6 +127,7 @@ export default function Recorder({ closeModal, step, setStep }: Props) { } else { recorderRef.current.pauseRecording(); } + posthog?.capture("recorder: recording paused/resumed", { pause }); setPause(!pause); } }; @@ -146,6 +155,8 @@ export default function Recorder({ closeModal, step, setStep }: Props) { "Recording - " + dayjs().format("D MMM YYYY") + ".webm"; invokeSaveAsDialog(blob, dateString); } + + posthog?.capture("recorder: video downloaded"); }; const generateThumbnail = async (video: HTMLVideoElement) => { @@ -187,6 +198,7 @@ export default function Recorder({ closeModal, step, setStep }: Props) { .then(() => { void router.push("share/" + id); setRecordOpen(false); + posthog?.capture("recorder: video uploaded"); }) .catch((err) => { console.error(err); @@ -197,6 +209,7 @@ export default function Recorder({ closeModal, step, setStep }: Props) { err.message === "Sorry, you have reached the maximum video upload limit on our free tier. Please upgrade to upload more." ) { + posthog?.capture("recorder: video upload paywall hit"); setPaywallOpen(true); } } else { @@ -325,6 +338,8 @@ export default function Recorder({ closeModal, step, setStep }: Props) {