Merge pull request #24862 from overleaf/dp-check-logs

Create openTab utility in rail-context to open rail at specific tab

GitOrigin-RevId: bfac2597fdd66db6dd8280873be97096f2b812dc
This commit is contained in:
David
2025-04-16 08:05:01 +00:00
committed by Copybot
parent b9481962ea
commit cd4880d11e
4 changed files with 19 additions and 22 deletions
@@ -11,7 +11,7 @@ function PdfErrorState() {
// TODO ide-redesign-cleanup: rename showLogs to something else and check usages // TODO ide-redesign-cleanup: rename showLogs to something else and check usages
const { showLogs } = useCompileContext() const { showLogs } = useCompileContext()
const { t } = useTranslation() const { t } = useTranslation()
const { setSelectedTab: setSelectedRailTab } = useRailContext() const { openTab: openRailTab } = useRailContext()
const newEditor = useIsNewEditorEnabled() const newEditor = useIsNewEditorEnabled()
if (!newEditor || (!loadingError && !showLogs)) { if (!newEditor || (!loadingError && !showLogs)) {
@@ -34,7 +34,7 @@ function PdfErrorState() {
variant="secondary" variant="secondary"
size="sm" size="sm"
onClick={() => { onClick={() => {
setSelectedRailTab('errors') openRailTab('errors')
}} }}
> >
{t('check_logs')} {t('check_logs')}
@@ -79,7 +79,7 @@ export const RailLayout = () => {
const { const {
activeModal, activeModal,
selectedTab, selectedTab,
setSelectedTab, openTab,
isOpen, isOpen,
setIsOpen, setIsOpen,
panelRef, panelRef,
@@ -162,11 +162,10 @@ export const RailLayout = () => {
return return
} }
// Change the selected tab and make sure it's open // Change the selected tab and make sure it's open
setSelectedTab((key ?? 'file-tree') as RailTabKey) openTab((key ?? 'file-tree') as RailTabKey)
setIsOpen(true)
} }
}, },
[setSelectedTab, selectedTab, setIsOpen, togglePane, railTabs] [openTab, togglePane, selectedTab, railTabs]
) )
const isReviewPanelOpen = selectedTab === 'review-panel' const isReviewPanelOpen = selectedTab === 'review-panel'
@@ -24,7 +24,6 @@ export type RailModalKey = 'keyboard-shortcuts' | 'contact-us' | 'dictionary'
const RailContext = createContext< const RailContext = createContext<
| { | {
selectedTab: RailTabKey selectedTab: RailTabKey
setSelectedTab: Dispatch<SetStateAction<RailTabKey>>
isOpen: boolean isOpen: boolean
setIsOpen: Dispatch<SetStateAction<boolean>> setIsOpen: Dispatch<SetStateAction<boolean>>
panelRef: React.RefObject<ImperativePanelHandle> panelRef: React.RefObject<ImperativePanelHandle>
@@ -35,6 +34,7 @@ const RailContext = createContext<
setResizing: Dispatch<SetStateAction<boolean>> setResizing: Dispatch<SetStateAction<boolean>>
activeModal: RailModalKey | null activeModal: RailModalKey | null
setActiveModal: Dispatch<SetStateAction<RailModalKey | null>> setActiveModal: Dispatch<SetStateAction<RailModalKey | null>>
openTab: (tab: RailTabKey) => void
} }
| undefined | undefined
>(undefined) >(undefined)
@@ -69,10 +69,17 @@ export const RailProvider: FC = ({ children }) => {
// since it is responsible for opening the initial document. // since it is responsible for opening the initial document.
const [selectedTab, setSelectedTab] = useState<RailTabKey>('file-tree') const [selectedTab, setSelectedTab] = useState<RailTabKey>('file-tree')
const openTab = useCallback(
(tab: RailTabKey) => {
setSelectedTab(tab)
setIsOpen(true)
},
[setIsOpen, setSelectedTab]
)
const value = useMemo( const value = useMemo(
() => ({ () => ({
selectedTab, selectedTab,
setSelectedTab,
isOpen, isOpen,
setIsOpen, setIsOpen,
panelRef, panelRef,
@@ -83,10 +90,10 @@ export const RailProvider: FC = ({ children }) => {
setResizing, setResizing,
activeModal, activeModal,
setActiveModal, setActiveModal,
openTab,
}), }),
[ [
selectedTab, selectedTab,
setSelectedTab,
isOpen, isOpen,
setIsOpen, setIsOpen,
panelRef, panelRef,
@@ -97,6 +104,7 @@ export const RailProvider: FC = ({ children }) => {
setResizing, setResizing,
activeModal, activeModal,
setActiveModal, setActiveModal,
openTab,
] ]
) )
@@ -51,8 +51,7 @@ const ReviewTooltipMenu: FC = () => {
const [show, setShow] = useState(true) const [show, setShow] = useState(true)
const { setView } = useReviewPanelViewActionsContext() const { setView } = useReviewPanelViewActionsContext()
const { setReviewPanelOpen } = useLayoutContext() const { setReviewPanelOpen } = useLayoutContext()
const { setIsOpen: setRailIsOpen, setSelectedTab: setSelectedRailTab } = const { openTab: openRailTab } = useRailContext()
useRailContext()
const newEditor = useIsNewEditorEnabled() const newEditor = useIsNewEditorEnabled()
const tooltipState = state.field(reviewTooltipStateField, false)?.tooltip const tooltipState = state.field(reviewTooltipStateField, false)?.tooltip
@@ -71,8 +70,7 @@ const ReviewTooltipMenu: FC = () => {
} }
if (newEditor) { if (newEditor) {
setSelectedRailTab('review-panel') openRailTab('review-panel')
setRailIsOpen(true)
} else { } else {
setReviewPanelOpen(true) setReviewPanelOpen(true)
} }
@@ -87,15 +85,7 @@ const ReviewTooltipMenu: FC = () => {
view.dispatch({ effects }) view.dispatch({ effects })
setShow(false) setShow(false)
}, [ }, [setReviewPanelOpen, setView, setShow, view, openRailTab, newEditor])
setReviewPanelOpen,
setView,
setShow,
view,
setSelectedRailTab,
setRailIsOpen,
newEditor,
])
useEventListener('add-new-review-comment', addComment) useEventListener('add-new-review-comment', addComment)