Skip to content

Commit 76b64ec

Browse files
chore(deps): update dependency eslint-plugin-react-hooks to v7 (#1034)
* chore(deps): update dependency eslint-plugin-react-hooks to v7 * fix: react-hooks linter * refactor: replace setTimouet with delay * fix: group registry effect * fix: initialize tools override --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Giuseppe Scuglia <peppescg@gmail.com>
1 parent 9a4a04e commit 76b64ec

File tree

21 files changed

+180
-128
lines changed

21 files changed

+180
-128
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@
6767
"dotenv": "^17.0.0",
6868
"electron": "39.0.0",
6969
"eslint": "^9.25.0",
70-
"eslint-plugin-react-hooks": "^6.0.0",
70+
"eslint-plugin-react-hooks": "^7.0.0",
7171
"eslint-plugin-react-refresh": "^0.4.19",
7272
"globals": "^16.0.0",
7373
"husky": "^9.1.7",

pnpm-lock.yaml

Lines changed: 22 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

renderer/src/common/components/settings/tabs/general-tab.tsx

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import {
1212
} from '@/common/hooks/use-auto-launch'
1313
import { useTheme } from '@/common/hooks/use-theme'
1414
import { useMutation, useQuery } from '@tanstack/react-query'
15-
import { useState, useEffect } from 'react'
15+
import { useState } from 'react'
1616
import { Sun, Moon, Monitor } from 'lucide-react'
1717
import log from 'electron-log/renderer'
1818
import { trackEvent } from '@/common/lib/analytics'
@@ -138,14 +138,9 @@ function AutoLaunchField() {
138138
}
139139

140140
function QuitConfirmationField() {
141-
const [skipQuitConfirmation, setSkipQuitConfirmation] =
142-
useState<boolean>(false)
143-
144-
useEffect(() => {
145-
const quitConfirmationDisabled =
146-
localStorage.getItem(CONFIRM_QUIT_STORAGE_KEY) === 'true'
147-
setSkipQuitConfirmation(quitConfirmationDisabled)
148-
}, [])
141+
const [skipQuitConfirmation, setSkipQuitConfirmation] = useState<boolean>(
142+
() => localStorage.getItem(CONFIRM_QUIT_STORAGE_KEY) === 'true'
143+
)
149144

150145
const handleQuitConfirmationToggle = () => {
151146
const newValue = !skipQuitConfirmation

renderer/src/common/components/ui/tooltip.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,10 @@ const TooltipTrigger = React.forwardRef<
7171
const setRefs = React.useCallback(
7272
(node: HTMLButtonElement | null) => {
7373
// internal: keep track for truncation measurement
74-
if (ctx) ctx.triggerRef.current = node
74+
if (ctx) {
75+
const triggerRef = ctx.triggerRef
76+
triggerRef.current = node
77+
}
7578
// forward to consumer
7679
if (typeof forwardedRef === 'function') {
7780
forwardedRef(node)

renderer/src/common/hooks/use-check-server-status.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import { META_MCP_SERVER_NAME } from '../lib/constants'
1616
* Returns a function that polls server status and invalidates queries when ready.
1717
*/
1818
export function useCheckServerStatus() {
19-
const toastIdRef = useRef(new Date(Date.now()).toISOString())
19+
const toastIdRef = useRef(new Date().getTime())
2020

2121
const queryClient = useQueryClient()
2222

renderer/src/common/hooks/use-cleanup-meta-optimizer.ts

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -95,13 +95,16 @@ export function useCleanupMetaOptimizer() {
9595
enabled: isMetaOptimizerEnabled,
9696
})
9797

98-
const removeClientsFromGroup = async (clients: string[]) => {
99-
for (const clientType of clients) {
100-
await unregisterClients({
101-
clientType,
102-
})
103-
}
104-
}
98+
const removeClientsFromGroup = useCallback(
99+
async (clients: string[]) => {
100+
for (const clientType of clients) {
101+
await unregisterClients({
102+
clientType,
103+
})
104+
}
105+
},
106+
[unregisterClients]
107+
)
105108

106109
const mcpOptimizerGroup = groupsList?.groups?.find(
107110
(g) => g.name === MCP_OPTIMIZER_GROUP_NAME

renderer/src/common/hooks/use-experimental-features.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ function formatFeatureFlagDescription(key: string): React.ReactNode {
5555
}
5656

5757
export function useExperimentalFeatures() {
58-
const toastIdRef = useRef(new Date(Date.now()).toISOString())
58+
const toastIdRef = useRef(new Date().getTime())
5959
const { handleCreateOptimizerGroup, isCreatingOptimizerGroup } =
6060
useCreateOptimizerGroup()
6161
const { cleanupMetaOptimizer } = useCleanupMetaOptimizer()

renderer/src/features/chat/components/error-alert.tsx

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { useState, useEffect } from 'react'
1+
import { useState } from 'react'
22
import { X, AlertTriangle } from 'lucide-react'
33
import {
44
Alert,
@@ -14,16 +14,10 @@ interface ErrorAlertProps {
1414
}
1515

1616
export function ErrorAlert({ error, className = '' }: ErrorAlertProps) {
17-
const [isDismissed, setIsDismissed] = useState(false)
17+
const [dismissedError, setDismissedError] = useState<string | null>(null)
1818

19-
// Reset dismissed state when a new error occurs
20-
useEffect(() => {
21-
if (error) {
22-
setIsDismissed(false)
23-
}
24-
}, [error])
25-
26-
if (!error || isDismissed) {
19+
// Show alert only if there's an error and it hasn't been dismissed
20+
if (!error || error === dismissedError) {
2721
return null
2822
}
2923

@@ -50,7 +44,7 @@ export function ErrorAlert({ error, className = '' }: ErrorAlertProps) {
5044
variant="ghost"
5145
size="sm"
5246
className="hover:bg-destructive/20 absolute top-2 right-2 h-6 w-6 p-0"
53-
onClick={() => setIsDismissed(true)}
47+
onClick={() => setDismissedError(error)}
5448
>
5549
<X className="h-3 w-3" />
5650
<span className="sr-only">Dismiss error</span>

renderer/src/features/chat/components/mcp-tools-modal.tsx

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { useState, useEffect } from 'react'
1+
import { useState } from 'react'
22
import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query'
33
import {
44
Dialog,
@@ -48,6 +48,9 @@ export function McpToolsModal({
4848
}: McpToolsModalProps) {
4949
const [searchQuery, setSearchQuery] = useState('')
5050
const [localEnabledTools, setLocalEnabledTools] = useState<string[]>([])
51+
const [lastInitializedServer, setLastInitializedServer] = useState<
52+
string | null
53+
>(null)
5154
const queryClient = useQueryClient()
5255

5356
// Fetch tools for the specific server
@@ -66,16 +69,14 @@ export function McpToolsModal({
6669
refetchOnMount: true, // Always refetch when component mounts
6770
})
6871

69-
// Initialize local state when data loads
70-
useEffect(() => {
71-
if (serverTools?.tools) {
72-
const enabledTools = serverTools.tools
73-
.filter((tool) => tool.enabled)
74-
.map((tool) => tool.name)
75-
76-
setLocalEnabledTools(enabledTools)
77-
}
78-
}, [serverTools, serverName])
72+
// Initialize local state when server or tools change
73+
if (serverTools?.tools && lastInitializedServer !== serverName) {
74+
const enabledTools = serverTools.tools
75+
.filter((tool) => tool.enabled)
76+
.map((tool) => tool.name)
77+
setLocalEnabledTools(enabledTools)
78+
setLastInitializedServer(serverName)
79+
}
7980

8081
// Save tools mutation
8182
const saveToolsMutation = useMutation({

renderer/src/features/chat/hooks/use-chat-settings.ts

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -207,13 +207,7 @@ export function useChatSettings() {
207207
enabledTools: allEnabledTools,
208208
}
209209
}
210-
}, [
211-
selectedModel?.provider,
212-
selectedModel?.model,
213-
providerSettings,
214-
enabledMcpTools,
215-
enabledMcpServers,
216-
])
210+
}, [selectedModel, providerSettings, enabledMcpTools, enabledMcpServers])
217211

218212
// Mutation to update selected model
219213
const updateSelectedModelMutation = useMutation({
@@ -285,7 +279,7 @@ export function useChatSettings() {
285279
throw error
286280
}
287281
},
288-
[selectedModel?.provider, selectedModel?.model, updateSelectedModelMutation]
282+
[selectedModel, updateSelectedModelMutation]
289283
)
290284

291285
// Update only enabled tools
@@ -316,7 +310,7 @@ export function useChatSettings() {
316310
throw error
317311
}
318312
},
319-
[selectedModel?.provider, updateProviderSettingsMutation]
313+
[selectedModel, updateProviderSettingsMutation]
320314
)
321315

322316
// Load persisted settings for a provider

0 commit comments

Comments
 (0)