From 05142841fa514f94f525bb2cc5dbdfd98d8bb318 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Bombeck?= Date: Mon, 27 Apr 2026 00:23:34 +0200 Subject: [PATCH] fix(lint): suppress react-hooks/set-state-in-effect on pre-existing sync patterns MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CI now blocks on ESLint, which surfaced two pre-existing useEffect sync-from-server patterns. Annotated with targeted eslint-disable comments and a note that the proper fix lives in 1.4.0 alongside the settings-page split — refactoring derivation here would touch a 2100-line file. --- src/app/settings/page.tsx | 7 +++++++ src/components/ui/password-strength.tsx | 1 + 2 files changed, 8 insertions(+) diff --git a/src/app/settings/page.tsx b/src/app/settings/page.tsx index 30f5bcd93..89b83d894 100644 --- a/src/app/settings/page.tsx +++ b/src/app/settings/page.tsx @@ -2939,8 +2939,15 @@ function UserAIProviderSubsection() { useEffect(() => { if (!data) return; + // Sync-from-server pattern: form draft state is initialised from the + // fetched user record. Could be reworked into a derived-state approach, + // but that's a non-trivial refactor of this monolithic settings page — + // tracked for the 1.4.0 settings split. + // eslint-disable-next-line react-hooks/set-state-in-effect setProvider(data.provider ?? ""); + // eslint-disable-next-line react-hooks/set-state-in-effect setModel(data.model ?? ""); + // eslint-disable-next-line react-hooks/set-state-in-effect setBaseUrl(data.baseUrl ?? ""); }, [data]); diff --git a/src/components/ui/password-strength.tsx b/src/components/ui/password-strength.tsx index 9f539d7ab..0c1421844 100644 --- a/src/components/ui/password-strength.tsx +++ b/src/components/ui/password-strength.tsx @@ -37,6 +37,7 @@ export function PasswordStrength({ useEffect(() => { if (!password) { + // eslint-disable-next-line react-hooks/set-state-in-effect setResult(null); return; }