Przeglądaj źródła

Merge pull request #24859 from overleaf/dp-history-file-tree

Always show file tree in history view in new editor

GitOrigin-RevId: e993aae4c1625ef7fb0a716ae5bff8edb0e8d0d0
David 1 rok temu
rodzic
commit
846ccd3aac

+ 22 - 22
services/web/frontend/js/features/ide-react/context/react-context-root.tsx

@@ -77,33 +77,33 @@ export const ReactContextRoot: FC<{ providers?: Record<string, FC> }> = ({
                           <Providers.DetachProvider>
                             <Providers.EditorProvider>
                               <Providers.PermissionsProvider>
-                                <Providers.LayoutProvider>
-                                  <Providers.ProjectSettingsProvider>
-                                    <Providers.EditorManagerProvider>
-                                      <Providers.LocalCompileProvider>
-                                        <Providers.DetachCompileProvider>
-                                          <Providers.ChatProvider>
-                                            <Providers.FileTreeOpenProvider>
-                                              <Providers.OnlineUsersProvider>
-                                                <Providers.MetadataProvider>
-                                                  <Providers.OutlineProvider>
-                                                    <Providers.RailProvider>
+                                <Providers.RailProvider>
+                                  <Providers.LayoutProvider>
+                                    <Providers.ProjectSettingsProvider>
+                                      <Providers.EditorManagerProvider>
+                                        <Providers.LocalCompileProvider>
+                                          <Providers.DetachCompileProvider>
+                                            <Providers.ChatProvider>
+                                              <Providers.FileTreeOpenProvider>
+                                                <Providers.OnlineUsersProvider>
+                                                  <Providers.MetadataProvider>
+                                                    <Providers.OutlineProvider>
                                                       <Providers.IdeRedesignSwitcherProvider>
                                                         <Providers.CommandRegistryProvider>
                                                           {children}
                                                         </Providers.CommandRegistryProvider>
                                                       </Providers.IdeRedesignSwitcherProvider>
-                                                    </Providers.RailProvider>
-                                                  </Providers.OutlineProvider>
-                                                </Providers.MetadataProvider>
-                                              </Providers.OnlineUsersProvider>
-                                            </Providers.FileTreeOpenProvider>
-                                          </Providers.ChatProvider>
-                                        </Providers.DetachCompileProvider>
-                                      </Providers.LocalCompileProvider>
-                                    </Providers.EditorManagerProvider>
-                                  </Providers.ProjectSettingsProvider>
-                                </Providers.LayoutProvider>
+                                                    </Providers.OutlineProvider>
+                                                  </Providers.MetadataProvider>
+                                                </Providers.OnlineUsersProvider>
+                                              </Providers.FileTreeOpenProvider>
+                                            </Providers.ChatProvider>
+                                          </Providers.DetachCompileProvider>
+                                        </Providers.LocalCompileProvider>
+                                      </Providers.EditorManagerProvider>
+                                    </Providers.ProjectSettingsProvider>
+                                  </Providers.LayoutProvider>
+                                </Providers.RailProvider>
                               </Providers.PermissionsProvider>
                             </Providers.EditorProvider>
                           </Providers.DetachProvider>

+ 21 - 1
services/web/frontend/js/shared/context/layout-context.tsx

@@ -21,6 +21,7 @@ import useEventListener from '@/shared/hooks/use-event-listener'
 import { isSplitTestEnabled } from '@/utils/splitTestUtils'
 import { isMac } from '@/shared/utils/os'
 import { sendSearchEvent } from '@/features/event-tracking/search-events'
+import { useRailContext } from '@/features/ide-redesign/contexts/rail-context'
 
 export type IdeLayout = 'sideBySide' | 'flat'
 export type IdeView = 'editor' | 'file' | 'pdf' | 'history'
@@ -75,6 +76,8 @@ export const LayoutProvider: FC = ({ children }) => {
   const [view, _setView] = useScopeValue<IdeView | null>('ui.view')
   const [openFile] = useScopeValue<BinaryFile | null>('openFile')
   const historyToggleEmitter = useScopeEventEmitter('history:toggle', true)
+  const { isOpen: railIsOpen, setIsOpen: setRailIsOpen } = useRailContext()
+  const [prevRailIsOpen, setPrevRailIsOpen] = useState(railIsOpen)
 
   const setView = useCallback(
     (value: IdeView | null) => {
@@ -84,6 +87,15 @@ export const LayoutProvider: FC = ({ children }) => {
           historyToggleEmitter()
         }
 
+        if (value === 'history') {
+          setPrevRailIsOpen(railIsOpen)
+          setRailIsOpen(true)
+        }
+
+        if (oldValue === 'history') {
+          setRailIsOpen(prevRailIsOpen)
+        }
+
         if (value === 'editor' && openFile) {
           // if a file is currently opened, ensure the view is 'file' instead of
           // 'editor' when the 'editor' view is requested. This is to ensure
@@ -95,7 +107,15 @@ export const LayoutProvider: FC = ({ children }) => {
         return value
       })
     },
-    [_setView, openFile, historyToggleEmitter]
+    [
+      _setView,
+      setRailIsOpen,
+      openFile,
+      historyToggleEmitter,
+      prevRailIsOpen,
+      setPrevRailIsOpen,
+      railIsOpen,
+    ]
   )
 
   // whether the chat pane is open