Browse Source

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

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

GitOrigin-RevId: bfac2597fdd66db6dd8280873be97096f2b812dc
David 1 năm trước cách đây
mục cha
commit
bc95219bf6

+ 2 - 2
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')}

+ 3 - 4
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'

+ 11 - 3
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<SetStateAction<RailTabKey>>
       isOpen: boolean
       setIsOpen: Dispatch<SetStateAction<boolean>>
       panelRef: React.RefObject<ImperativePanelHandle>
@@ -35,6 +34,7 @@ const RailContext = createContext<
       setResizing: Dispatch<SetStateAction<boolean>>
       activeModal: RailModalKey | null
       setActiveModal: Dispatch<SetStateAction<RailModalKey | null>>
+      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<RailTabKey>('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,
     ]
   )
 

+ 3 - 13
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)