diff --git a/services/web/frontend/js/features/review-panel-new/components/review-tooltip-menu.tsx b/services/web/frontend/js/features/review-panel-new/components/review-tooltip-menu.tsx
index 8880bab8a4..b6bf35e0c7 100644
--- a/services/web/frontend/js/features/review-panel-new/components/review-tooltip-menu.tsx
+++ b/services/web/frontend/js/features/review-panel-new/components/review-tooltip-menu.tsx
@@ -1,8 +1,6 @@
import {
CSSProperties,
- Dispatch,
FC,
- SetStateAction,
useCallback,
useEffect,
useMemo,
@@ -35,6 +33,7 @@ import { useModalsContext } from '@/features/ide-react/context/modals-context'
import { numberOfChangesInSelection } from '../utils/changes-in-selection'
import { useEditorManagerContext } from '@/features/ide-react/context/editor-manager-context'
import classNames from 'classnames'
+import useEventListener from '@/shared/hooks/use-event-listener'
const TRACK_CHANGES_ON_WIDGET_HEIGHT = 25
const CM_LINE_RIGHT_PADDING = 2
@@ -45,6 +44,8 @@ const ReviewTooltipMenu: FC = () => {
const view = useCodeMirrorViewContext()
const isViewer = useViewerPermissions()
const [show, setShow] = useState(true)
+ const { setView } = useReviewPanelViewActionsContext()
+ const { setReviewPanelOpen } = useLayoutContext()
const tooltipState = state.field(reviewTooltipStateField, false)?.tooltip
const previousTooltipState = usePreviousValue(tooltipState)
@@ -55,37 +56,6 @@ const ReviewTooltipMenu: FC = () => {
}
}, [tooltipState, previousTooltipState])
- if (isViewer || !show || !tooltipState) {
- return null
- }
-
- const tooltipView = getTooltip(view, tooltipState)
-
- if (!tooltipView) {
- return null
- }
-
- return ReactDOM.createPortal(
- ,
- tooltipView.dom
- )
-}
-
-const ReviewTooltipMenuContent: FC<{
- setShow: Dispatch>
-}> = ({ setShow }) => {
- const { t } = useTranslation()
- const view = useCodeMirrorViewContext()
- const state = useCodeMirrorStateContext()
- const { setReviewPanelOpen, reviewPanelOpen } = useLayoutContext()
- const { setView } = useReviewPanelViewActionsContext()
- const ranges = useRangesContext()
- const { acceptChanges, rejectChanges } = useRangesActionsContext()
- const { showGenericConfirmModal } = useModalsContext()
- const { wantTrackChanges } = useEditorManagerContext()
- const [tooltipStyle, setTooltipStyle] = useState()
- const [visible, setVisible] = useState(false)
-
const addComment = useCallback(() => {
setReviewPanelOpen(true)
setView('cur_file')
@@ -102,12 +72,37 @@ const ReviewTooltipMenuContent: FC<{
setShow(false)
}, [setReviewPanelOpen, setView, setShow, view, state.selection.main])
- useEffect(() => {
- window.addEventListener('add-new-review-comment', addComment)
- return () => {
- window.removeEventListener('add-new-review-comment', addComment)
- }
- }, [addComment])
+ useEventListener('add-new-review-comment', addComment)
+
+ if (isViewer || !show || !tooltipState) {
+ return null
+ }
+
+ const tooltipView = getTooltip(view, tooltipState)
+
+ if (!tooltipView) {
+ return null
+ }
+
+ return ReactDOM.createPortal(
+ ,
+ tooltipView.dom
+ )
+}
+
+const ReviewTooltipMenuContent: FC<{ onAddComment: () => void }> = ({
+ onAddComment,
+}) => {
+ const { t } = useTranslation()
+ const view = useCodeMirrorViewContext()
+ const state = useCodeMirrorStateContext()
+ const { reviewPanelOpen } = useLayoutContext()
+ const ranges = useRangesContext()
+ const { acceptChanges, rejectChanges } = useRangesActionsContext()
+ const { showGenericConfirmModal } = useModalsContext()
+ const { wantTrackChanges } = useEditorManagerContext()
+ const [tooltipStyle, setTooltipStyle] = useState()
+ const [visible, setVisible] = useState(false)
const changeIdsInSelection = useMemo(() => {
return (ranges?.changes ?? [])
@@ -219,7 +214,7 @@ const ReviewTooltipMenuContent: FC<{
>