import { useRef, useEffect, useState } from 'react'; import { useParams } from 'react-router-dom'; import Replayer from 'rrweb-player'; import { Box, Breadcrumb, BreadcrumbItem, BreadcrumbLink, Center, } from '@chakra-ui/react'; import { getEvents, getSession } from '~/utils/storage'; export default function Player() { const playerElRef = useRef(null); const playerRef = useRef(null); const { sessionId } = useParams(); const [sessionName, setSessionName] = useState(''); useEffect(() => { if (!sessionId) return; getSession(sessionId) .then((session) => { setSessionName(session.name); }) .catch((err) => { console.error(err); }); getEvents(sessionId) .then((events) => { if (!playerElRef.current) return; const linkEl = document.createElement('link'); linkEl.href = 'https://cdn.jsdelivr.net/npm/rrweb-player@latest/dist/style.css'; linkEl.rel = 'stylesheet'; document.head.appendChild(linkEl); playerRef.current = new Replayer({ target: playerElRef.current as HTMLElement, props: { events, autoPlay: true, }, }); }) .catch((err) => { console.error(err); }); return () => { playerRef.current?.pause(); }; }, [sessionId]); return ( <> Sessions {sessionName}
); }