/// 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 manifest = chrome.runtime.getManifest(); const rrwebPlayerVersion = manifest.version_name || manifest.version; const linkEl = document.createElement('link'); linkEl.href = `https://cdn.jsdelivr.net/npm/rrweb-player@${rrwebPlayerVersion}/dist/style.min.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 () => { // eslint-disable-next-line playerRef.current?.pause(); }; }, [sessionId]); return ( <> Sessions {sessionName}
); }