From cd4880d11e5f89fa96cfbd5de314bdafeaa5cc7b Mon Sep 17 00:00:00 2001 From: David <33458145+davidmcpowell@users.noreply.github.com> Date: Tue, 15 Apr 2025 09:13:25 +0100 Subject: [PATCH] Merge pull request #24862 from overleaf/dp-check-logs Create openTab utility in rail-context to open rail at specific tab GitOrigin-RevId: bfac2597fdd66db6dd8280873be97096f2b812dc --- .../components/pdf-preview/pdf-error-state.tsx | 4 ++-- .../js/features/ide-redesign/components/rail.tsx | 7 +++---- .../ide-redesign/contexts/rail-context.tsx | 14 +++++++++++--- .../components/review-tooltip-menu.tsx | 16 +++------------- 4 files changed, 19 insertions(+), 22 deletions(-) diff --git a/services/web/frontend/js/features/ide-redesign/components/pdf-preview/pdf-error-state.tsx b/services/web/frontend/js/features/ide-redesign/components/pdf-preview/pdf-error-state.tsx index 2de51dc11e..ef77c0fa5d 100644 --- a/services/web/frontend/js/features/ide-redesign/components/pdf-preview/pdf-error-state.tsx +++ b/services/web/frontend/js/features/ide-redesign/components/pdf-preview/pdf-error-state.tsx @@ -11,7 +11,7 @@ function PdfErrorState() { // TODO ide-redesign-cleanup: rename showLogs to something else and check usages const { showLogs } = useCompileContext() const { t } = useTranslation() - const { setSelectedTab: setSelectedRailTab } = useRailContext() + const { openTab: openRailTab } = useRailContext() const newEditor = useIsNewEditorEnabled() if (!newEditor || (!loadingError && !showLogs)) { @@ -34,7 +34,7 @@ function PdfErrorState() { variant="secondary" size="sm" onClick={() => { - setSelectedRailTab('errors') + openRailTab('errors') }} > {t('check_logs')} diff --git a/services/web/frontend/js/features/ide-redesign/components/rail.tsx b/services/web/frontend/js/features/ide-redesign/components/rail.tsx index e3e794f613..4459971c13 100644 --- a/services/web/frontend/js/features/ide-redesign/components/rail.tsx +++ b/services/web/frontend/js/features/ide-redesign/components/rail.tsx @@ -79,7 +79,7 @@ export const RailLayout = () => { const { activeModal, selectedTab, - setSelectedTab, + openTab, isOpen, setIsOpen, panelRef, @@ -162,11 +162,10 @@ export const RailLayout = () => { return } // Change the selected tab and make sure it's open - setSelectedTab((key ?? 'file-tree') as RailTabKey) - setIsOpen(true) + openTab((key ?? 'file-tree') as RailTabKey) } }, - [setSelectedTab, selectedTab, setIsOpen, togglePane, railTabs] + [openTab, togglePane, selectedTab, railTabs] ) const isReviewPanelOpen = selectedTab === 'review-panel' diff --git a/services/web/frontend/js/features/ide-redesign/contexts/rail-context.tsx b/services/web/frontend/js/features/ide-redesign/contexts/rail-context.tsx index 1f14b294ea..8d835fcedc 100644 --- a/services/web/frontend/js/features/ide-redesign/contexts/rail-context.tsx +++ b/services/web/frontend/js/features/ide-redesign/contexts/rail-context.tsx @@ -24,7 +24,6 @@ export type RailModalKey = 'keyboard-shortcuts' | 'contact-us' | 'dictionary' const RailContext = createContext< | { selectedTab: RailTabKey - setSelectedTab: Dispatch> isOpen: boolean setIsOpen: Dispatch> panelRef: React.RefObject @@ -35,6 +34,7 @@ const RailContext = createContext< setResizing: Dispatch> activeModal: RailModalKey | null setActiveModal: Dispatch> + openTab: (tab: RailTabKey) => void } | undefined >(undefined) @@ -69,10 +69,17 @@ export const RailProvider: FC = ({ children }) => { // since it is responsible for opening the initial document. const [selectedTab, setSelectedTab] = useState('file-tree') + const openTab = useCallback( + (tab: RailTabKey) => { + setSelectedTab(tab) + setIsOpen(true) + }, + [setIsOpen, setSelectedTab] + ) + const value = useMemo( () => ({ selectedTab, - setSelectedTab, isOpen, setIsOpen, panelRef, @@ -83,10 +90,10 @@ export const RailProvider: FC = ({ children }) => { setResizing, activeModal, setActiveModal, + openTab, }), [ selectedTab, - setSelectedTab, isOpen, setIsOpen, panelRef, @@ -97,6 +104,7 @@ export const RailProvider: FC = ({ children }) => { setResizing, activeModal, setActiveModal, + openTab, ] ) 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 dd2d2d09bf..5547829de9 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 @@ -51,8 +51,7 @@ const ReviewTooltipMenu: FC = () => { const [show, setShow] = useState(true) const { setView } = useReviewPanelViewActionsContext() const { setReviewPanelOpen } = useLayoutContext() - const { setIsOpen: setRailIsOpen, setSelectedTab: setSelectedRailTab } = - useRailContext() + const { openTab: openRailTab } = useRailContext() const newEditor = useIsNewEditorEnabled() const tooltipState = state.field(reviewTooltipStateField, false)?.tooltip @@ -71,8 +70,7 @@ const ReviewTooltipMenu: FC = () => { } if (newEditor) { - setSelectedRailTab('review-panel') - setRailIsOpen(true) + openRailTab('review-panel') } else { setReviewPanelOpen(true) } @@ -87,15 +85,7 @@ const ReviewTooltipMenu: FC = () => { view.dispatch({ effects }) setShow(false) - }, [ - setReviewPanelOpen, - setView, - setShow, - view, - setSelectedRailTab, - setRailIsOpen, - newEditor, - ]) + }, [setReviewPanelOpen, setView, setShow, view, openRailTab, newEditor]) useEventListener('add-new-review-comment', addComment)