From 2226cfd233fd955fb56173b95d3b7079e5853cf3 Mon Sep 17 00:00:00 2001 From: Domagoj Kriskovic Date: Thu, 21 Nov 2024 14:00:08 +0100 Subject: [PATCH] Add "accept-changes" socket listener in ranges context (#22048) GitOrigin-RevId: 0be5f3be1806aad29f44eec2e596af51e65263e7 --- .../context/ranges-context.tsx | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/services/web/frontend/js/features/review-panel-new/context/ranges-context.tsx b/services/web/frontend/js/features/review-panel-new/context/ranges-context.tsx index bcb94d34b4..2da4b34b76 100644 --- a/services/web/frontend/js/features/review-panel-new/context/ranges-context.tsx +++ b/services/web/frontend/js/features/review-panel-new/context/ranges-context.tsx @@ -1,6 +1,7 @@ import { createContext, FC, + useCallback, useContext, useEffect, useMemo, @@ -18,6 +19,8 @@ import { rejectChanges } from '@/features/source-editor/extensions/changes/rejec import { useCodeMirrorViewContext } from '@/features/source-editor/components/codemirror-context' import { postJSON } from '@/infrastructure/fetch-json' import { useIdeReactContext } from '@/features/ide-react/context/ide-react-context' +import { useConnectionContext } from '@/features/ide-react/context/connection-context' +import useSocketListener from '@/features/ide-react/hooks/use-socket-listener' export type Ranges = { docId: string @@ -82,7 +85,7 @@ export const RangesProvider: FC = ({ children }) => { const [currentDoc] = useScopeValue( 'editor.sharejs_doc' ) - + const { socket } = useConnectionContext() const [ranges, setRanges] = useState(() => buildRanges(currentDoc) ) @@ -134,6 +137,22 @@ export const RangesProvider: FC = ({ children }) => { } }, [currentDoc]) + useSocketListener( + socket, + 'accept-changes', + useCallback( + (docId: string, entryIds: string[]) => { + if (currentDoc?.ranges) { + if (docId === currentDoc.doc_id) { + currentDoc.ranges.removeChangeIds(entryIds) + setRanges(buildRanges(currentDoc)) + } + } + }, + [currentDoc] + ) + ) + const actions = useMemo( () => ({ async acceptChanges(...ids: string[]) {