Merge pull request #32655 from overleaf/mj-preview-tabs-setting

[web] Add setting for temporary tab behaviour

GitOrigin-RevId: efef9e1db55d4498daadf13efad7fe12578cec21
This commit is contained in:
Mathias Jakobsen
2026-04-08 08:05:07 +00:00
committed by Copybot
parent 77952e5d21
commit 2d9fc99274
14 changed files with 144 additions and 61 deletions
@@ -8,6 +8,7 @@ import { useEditorManagerContext } from './editor-manager-context'
import { debugConsole } from '@/utils/debugging'
import { disambiguatePaths } from '../util/disambiguate-paths'
import { isSplitTestEnabled } from '@/utils/splitTestUtils'
import { useUserSettingsContext } from '@/shared/context/user-settings-context'
type PersistedTabInfo = { id: string; lifetime: Lifetime }
@@ -43,6 +44,8 @@ export const TabsProvider: FC<React.PropsWithChildren> = ({ children }) => {
const { openEntity } = useFileTreeOpenContext()
const { openDocWithId, openFileWithId } = useEditorManagerContext()
const tabsEnabled = isSplitTestEnabled('editor-tabs')
const { userSettings } = useUserSettingsContext()
const { previewTabs } = userSettings
const [openTabs, setOpenTabs] = usePersistedState<PersistedTabInfo[]>(
`open-tabs:${projectId}`,
@@ -183,10 +186,13 @@ export const TabsProvider: FC<React.PropsWithChildren> = ({ children }) => {
}
return [
...current.filter(tab => tab.lifetime !== 'temporary'),
{ id: openEntity.entity._id, lifetime: 'temporary' },
{
id: openEntity.entity._id,
lifetime: previewTabs ? 'temporary' : 'permanent',
},
]
})
}, [openEntity, setOpenTabs, tabsEnabled])
}, [openEntity, previewTabs, setOpenTabs, tabsEnabled])
const value = useMemo(
() => ({ tabs, openTab, closeTab, moveTab, makeTabPermanent }),