c848003214
- 将录制状态中的events数组替换为sessionId,避免内存溢出问题 - 集成IndexedDB工具模块实现事件分块存储功能 - 修改开始录制逻辑以生成会话ID并初始化数据库会话 - 更新停止录制逻辑从数据库流式读取事件并删除会话数据 - 修复content:save-track-events消息类型的拼写错误 - 在RoutePersistence组件中添加路由恢复和保存的成功提示 - 重构popup应用CSS样式文件,移除冗余导航样式代码
46 lines
1.2 KiB
TypeScript
46 lines
1.2 KiB
TypeScript
import { useEffect, useRef } from 'react';
|
|
import { useLocation, useNavigate } from 'react-router-dom';
|
|
import { storage } from '@/utils/storage';
|
|
|
|
const RoutePersistence = () => {
|
|
const location = useLocation();
|
|
const navigate = useNavigate();
|
|
|
|
const isRestored = useRef(false);
|
|
|
|
useEffect(() => {
|
|
const restoreRoute = async () => {
|
|
if (isRestored.current) return;
|
|
|
|
try {
|
|
const lastRoute = await storage.get('app/lastRoute');
|
|
|
|
if (lastRoute && lastRoute !== '/' && location.pathname === '/') {
|
|
navigate(lastRoute, { replace: true });
|
|
console.log('跳转路由', lastRoute);
|
|
}
|
|
} catch (err) {
|
|
console.error('恢复路由失败', err);
|
|
} finally {
|
|
isRestored.current = true;
|
|
}
|
|
};
|
|
|
|
restoreRoute().then(() => console.info('恢复路由成功'));
|
|
}, [location, navigate]);
|
|
|
|
useEffect(() => {
|
|
const saveRoute = async () => {
|
|
if (!isRestored.current) return;
|
|
await storage.set('app/lastRoute', location.pathname);
|
|
console.log('保存路由', location.pathname);
|
|
};
|
|
|
|
saveRoute().then(() => console.info('保存路由成功'));
|
|
}, [location]);
|
|
|
|
return null;
|
|
};
|
|
|
|
export default RoutePersistence;
|