Skip to content

Commit d8d390b

Browse files
committed
fix: use ref to store current modeToDelete value for consistent state handling
1 parent 49465df commit d8d390b

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
@@ -416,6 +416,14 @@ const ModesView = ({ onDone }: ModesViewProps) => {
416416
return () => document.removeEventListener("click", handleClickOutside)
417417
}, [showConfigMenu])
418418

419+
// Use a ref to store the current modeToDelete value
420+
const modeToDeleteRef = useRef(modeToDelete)
421+
422+
// Update the ref whenever modeToDelete changes
423+
useEffect(() => {
424+
modeToDeleteRef.current = modeToDelete
425+
}, [modeToDelete])
426+
419427
useEffect(() => {
420428
const handler = (event: MessageEvent) => {
421429
const message = event.data
@@ -449,9 +457,11 @@ const ModesView = ({ onDone }: ModesViewProps) => {
449457
}))
450458
} else if (message.type === "deleteCustomModeCheck") {
451459
// Handle the check response
452-
if (message.slug && modeToDelete && modeToDelete.slug === message.slug) {
460+
// Use the ref to get the current modeToDelete value
461+
const currentModeToDelete = modeToDeleteRef.current
462+
if (message.slug && currentModeToDelete && currentModeToDelete.slug === message.slug) {
453463
setModeToDelete({
454-
...modeToDelete,
464+
...currentModeToDelete,
455465
rulesFolderPath: message.rulesFolderPath,
456466
})
457467
setShowDeleteConfirm(true)
@@ -461,7 +471,7 @@ const ModesView = ({ onDone }: ModesViewProps) => {
461471

462472
window.addEventListener("message", handler)
463473
return () => window.removeEventListener("message", handler)
464-
}, [])
474+
}, []) // Empty dependency array - only register once
465475

466476
const handleAgentReset = (
467477
modeSlug: string,

0 commit comments

Comments
 (0)