11import { CODE_BLOCK_BG_COLOR } from "@/components/common/CodeBlock"
22import { CheckpointsServiceClient } from "@/services/grpc-client"
33import { flip , offset , shift , useFloating } from "@floating-ui/react"
4- import { ExtensionMessage } from "@shared/ExtensionMessage"
54import { CheckpointRestoreRequest } from "@shared/proto/checkpoints"
65import { Int64Request } from "@shared/proto/common"
76import { ClineCheckpointRestore } from "@shared/WebviewMessage"
87import { VSCodeButton } from "@vscode/webview-ui-toolkit/react"
9- import { useCallback , useEffect , useRef , useState } from "react"
8+ import { useEffect , useRef , useState } from "react"
109import { createPortal } from "react-dom"
11- import { useEvent } from "react-use"
1210import styled from "styled-components"
11+ import { useExtensionState } from "@/context/ExtensionStateContext"
1312
1413interface CheckmarkControlProps {
1514 messageTs ?: number
@@ -25,6 +24,7 @@ export const CheckmarkControl = ({ messageTs, isCheckpointCheckedOut }: Checkmar
2524 const [ hasMouseEntered , setHasMouseEntered ] = useState ( false )
2625 const containerRef = useRef < HTMLDivElement > ( null )
2726 const tooltipRef = useRef < HTMLDivElement > ( null )
27+ const { onRelinquishControl } = useExtensionState ( )
2828
2929 const { refs, floatingStyles, update, placement } = useFloating ( {
3030 placement : "bottom-end" ,
@@ -52,15 +52,16 @@ export const CheckmarkControl = ({ messageTs, isCheckpointCheckedOut }: Checkmar
5252 }
5353 } , [ showRestoreConfirm , update ] )
5454
55- const handleMessage = useCallback ( ( event : MessageEvent < ExtensionMessage > ) => {
56- if ( event . data . type === "relinquishControl" ) {
55+ // Use the onRelinquishControl hook instead of message event
56+ useEffect ( ( ) => {
57+ return onRelinquishControl ( ( ) => {
5758 setCompareDisabled ( false )
5859 setRestoreTaskDisabled ( false )
5960 setRestoreWorkspaceDisabled ( false )
6061 setRestoreBothDisabled ( false )
6162 setShowRestoreConfirm ( false )
62- }
63- } , [ ] )
63+ } )
64+ } , [ onRelinquishControl ] )
6465
6566 const handleRestoreTask = async ( ) => {
6667 setRestoreTaskDisabled ( true )
@@ -141,8 +142,6 @@ export const CheckmarkControl = ({ messageTs, isCheckpointCheckedOut }: Checkmar
141142 setHasMouseEntered ( false )
142143 }
143144
144- useEvent ( "message" , handleMessage )
145-
146145 return (
147146 < Container isMenuOpen = { showRestoreConfirm } $isCheckedOut = { isCheckpointCheckedOut } onMouseLeave = { handleControlsMouseLeave } >
148147 < i
0 commit comments