fix: 前端 HIGH/MEDIUM — timer 清理 + 历史持久化 + Error Boundary + console 移除
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import React, { createContext, useContext, useReducer, type ReactNode } from 'react';
|
||||
import type { QrState, QrAction } from '../types';
|
||||
import React, { createContext, useContext, useReducer, useEffect, type ReactNode } from 'react';
|
||||
import { Store } from '@tauri-apps/plugin-store';
|
||||
import type { QrState, QrAction, HistoryEntry } from '../types';
|
||||
|
||||
const initialState: QrState = {
|
||||
mode: 'text',
|
||||
@@ -42,6 +43,18 @@ const QrContext = createContext<{
|
||||
|
||||
export function QrProvider({ children }: { children: ReactNode }) {
|
||||
const [state, dispatch] = useReducer(qrReducer, initialState);
|
||||
|
||||
// 启动时从 store 加载持久化的历史记录
|
||||
useEffect(() => {
|
||||
(async () => {
|
||||
try {
|
||||
const store = await Store.load('history.json');
|
||||
const history = await store.get<HistoryEntry[]>('qr-history') || [];
|
||||
dispatch({ type: 'SET_HISTORY', payload: history });
|
||||
} catch { /* store 不可用时忽略 */ }
|
||||
})();
|
||||
}, []);
|
||||
|
||||
return <QrContext.Provider value={{ state, dispatch }}>{children}</QrContext.Provider>;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user