Skip to content

Commit 2075bd9

Browse files
committed
fix: use ref to store current modeToDelete value for consistent state handling
1 parent c8a29ad commit 2075bd9

File tree

1 file changed

+13
-3
lines changed

1 file changed

+13
-3
lines changed

webview-ui/src/components/modes/ModesView.tsx

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -396,6 +396,14 @@ const ModesView = ({ onDone }: ModesViewProps) => {
396396
return () => document.removeEventListener("click", handleClickOutside)
397397
}, [showConfigMenu])
398398

399+
// Use a ref to store the current modeToDelete value
400+
const modeToDeleteRef = useRef(modeToDelete)
401+
402+
// Update the ref whenever modeToDelete changes
403+
useEffect(() => {
404+
modeToDeleteRef.current = modeToDelete
405+
}, [modeToDelete])
406+
399407
useEffect(() => {
400408
const handler = (event: MessageEvent) => {
401409
const message = event.data
@@ -407,9 +415,11 @@ const ModesView = ({ onDone }: ModesViewProps) => {
407415
}
408416
} else if (message.type === "deleteCustomModeCheck") {
409417
// Handle the check response
410-
if (message.slug && modeToDelete && modeToDelete.slug === message.slug) {
418+
// Use the ref to get the current modeToDelete value
419+
const currentModeToDelete = modeToDeleteRef.current
420+
if (message.slug && currentModeToDelete && currentModeToDelete.slug === message.slug) {
411421
setModeToDelete({
412-
...modeToDelete,
422+
...currentModeToDelete,
413423
rulesFolderPath: message.rulesFolderPath,
414424
})
415425
setShowDeleteConfirm(true)
@@ -419,7 +429,7 @@ const ModesView = ({ onDone }: ModesViewProps) => {
419429

420430
window.addEventListener("message", handler)
421431
return () => window.removeEventListener("message", handler)
422-
}, [modeToDelete])
432+
}, []) // Empty dependency array - only register once
423433

424434
const handleAgentReset = (
425435
modeSlug: string,

0 commit comments

Comments
 (0)