diff --git a/eslint.config.mjs b/eslint.config.mjs index 69fa8eb..e4fc897 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -31,7 +31,9 @@ export default defineConfig( 'react-refresh/only-export-components': 'off', 'react-hooks/exhaustive-deps': 'warn', 'react-hooks/set-state-in-effect': 'off', - '@typescript-eslint/no-require-imports': 'off' + '@typescript-eslint/no-require-imports': 'off', + // we use TypeScript types instead of PropTypes in React components + 'react/prop-types': 'off' } }, eslintConfigPrettier diff --git a/src/main/services/HttpServerService.ts b/src/main/services/HttpServerService.ts index e745683..a30090f 100644 --- a/src/main/services/HttpServerService.ts +++ b/src/main/services/HttpServerService.ts @@ -337,9 +337,7 @@ export class HttpServerService extends Service { } }) - // ww - this.app.use - + // stray expression removed // 404处理 this.app.use((_req: Request, res: Response) => { res.status(404).json({ @@ -349,7 +347,8 @@ export class HttpServerService extends Service { }) // 错误处理中间件 - this.app.use((error: Error, _: Request, res: Response, __: NextFunction) => { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + this.app.use((error: Error, _: Request, res: Response, _next: NextFunction) => { this.mainCtx.logger.error(`HTTP server error: ${error.message}`) res.status(500).json({ success: false, diff --git a/src/renderer/src/components/TagEditorDialog.tsx b/src/renderer/src/components/TagEditorDialog.tsx index 4a46f44..b15a821 100644 --- a/src/renderer/src/components/TagEditorDialog.tsx +++ b/src/renderer/src/components/TagEditorDialog.tsx @@ -29,15 +29,8 @@ export const TagEditorDialog: React.FC = ({ const themeMode = currentTheme?.mode || 'light' // 默认为 light - useEffect(() => { - if (visible) { - setSelectedTagIds(new Set(initialTagIds)) - setInputValue('') - fetchAllTags() - } - }, [visible, initialTagIds]) - - const fetchAllTags = async () => { + // fetchAllTags is declared as a function so it can be called from useEffect + async function fetchAllTags() { if (!(window as any).api) return try { const res = await (window as any).api.tagsGetAll() @@ -50,6 +43,14 @@ export const TagEditorDialog: React.FC = ({ } } + useEffect(() => { + if (visible) { + setSelectedTagIds(new Set(initialTagIds)) + setInputValue('') + fetchAllTags() + } + }, [visible, initialTagIds]) + const handleAddTag = async () => { const trimmed = inputValue.trim() if (!trimmed) return diff --git a/src/renderer/src/components/com.automatically/triggers/RandomTimeTrigger.tsx b/src/renderer/src/components/com.automatically/triggers/RandomTimeTrigger.tsx index 36d9801..4e0c03c 100644 --- a/src/renderer/src/components/com.automatically/triggers/RandomTimeTrigger.tsx +++ b/src/renderer/src/components/com.automatically/triggers/RandomTimeTrigger.tsx @@ -29,7 +29,9 @@ const RandomTimeTrigger: React.FC = ({ value, onChange }) const parsed = JSON.parse(value) config = { ...config, ...parsed } } - } catch {} + } catch (e) { + console.debug('RandomTimeTrigger parse error', e) + } const handleChange = (key: keyof RandomTimeConfig, v: any) => { const numV = typeof v === 'number' ? v : v ? Number(v) : undefined diff --git a/src/shared/triggers/RandomTimeTrigger.ts b/src/shared/triggers/RandomTimeTrigger.ts index 05e9db4..f7fce47 100644 --- a/src/shared/triggers/RandomTimeTrigger.ts +++ b/src/shared/triggers/RandomTimeTrigger.ts @@ -34,7 +34,10 @@ export const randomTimeTrigger: TriggerLogic = { const parsed = JSON.parse(value) config = { ...config, ...parsed } } - } catch {} + } catch (e) { + // swallow errors, use default config + console.debug('randomTimeTrigger calculateNextTime parse error', e) + } const minHour = config.minHour ?? 0 const maxHour = config.maxHour ?? 23