Files
testing-tool/utils/useRecorder.tsx
T

41 lines
940 B
TypeScript

import * as rrweb from 'rrweb';
import { listenerHandler } from '@rrweb/types';
import { getRecordConsolePlugin } from '@rrweb/rrweb-plugin-console-record';
export const createRecorder = () => {
let stopFn: listenerHandler | null = null;
const startRecord = async (msg: string) => {
try {
const handler = rrweb.record({
emit(event) {
chrome.runtime.sendMessage({
type: msg,
payload: event,
});
},
plugins: [getRecordConsolePlugin()],
});
stopFn = handler || null;
console.log('[content] rrweb started');
return true;
} catch (error) {
console.error('Failed to start recording:', error);
return false;
}
};
const stopRecord = () => {
if (stopFn) {
stopFn();
stopFn = null;
console.log('[content] rrweb stopped');
}
return false;
};
return { startRecord, stopRecord };
};