@@ -135,7 +135,14 @@ import { LibraryWorkspacePage, type LibraryWorkspaceToolbarState } from "./compo
135135import { LibraryImportDialog } from "./components/LibraryImportDialog"
136136import { useLibraryViewStore } from "./model/viewStore"
137137import { openLibraryWorkspace , useLibraryWorkspaceStore } from "./model/workspaceStore"
138- import type { LibraryFileRow , LibraryProgress , LibraryTaskOutput , LibraryTaskRow } from "./model/types"
138+ import type {
139+ LibraryFileRow ,
140+ LibraryPageTab ,
141+ LibraryProgress ,
142+ LibraryTaskOutput ,
143+ LibraryTaskRow ,
144+ LibraryWorkspaceTarget ,
145+ } from "./model/types"
139146import { formatBytes } from "./utils/format"
140147import { formatTemplate } from "./utils/i18n"
141148import {
@@ -154,7 +161,6 @@ import { resolvePresetName } from "./utils/transcodePresets"
154161import { buildWorkspaceTargetFromLibraryFile , canOpenLibraryWorkspaceFile } from "./utils/workspaceTargets"
155162
156163type LibraryNewAction = "download" | "importVideo" | "importSubtitle"
157- type LibraryPageTab = "overview" | "tasks" | "resources" | "workspace" | "config"
158164type ResourceViewMode = "library" | "file"
159165type ResourceFileTypeFilter = "all" | "video" | "subtitle"
160166type ResourceFileStatusFilter = "active" | "deleted" | "all"
@@ -201,7 +207,6 @@ export function LibraryPage() {
201207 const librariesQuery = useListLibraries ( )
202208 const selectedLibraryRealtimeFiles = useLibraryRealtimeStore ( ( state ) => state . files )
203209 const selectedLibraryRealtimeHistory = useLibraryRealtimeStore ( ( state ) => state . histories )
204- const workspaceOpenRevision = useLibraryWorkspaceStore ( ( state ) => state . openRevision )
205210 const workspaceTargetLibraryId = useLibraryWorkspaceStore ( ( state ) => state . libraryId )
206211
207212 const externalTools = useExternalTools ( )
@@ -223,12 +228,13 @@ export function LibraryPage() {
223228 const moduleConfigQuery = useGetLibraryModuleConfig ( )
224229 const updateModuleConfig = useUpdateLibraryModuleConfig ( )
225230
231+ const pageTab = useLibraryViewStore ( ( state ) => state . pageTab )
226232 const rowsPerPage = useLibraryViewStore ( ( state ) => state . rowsPerPage )
227233 const columnVisibility = useLibraryViewStore ( ( state ) => state . columnVisibility )
234+ const setPageTab = useLibraryViewStore ( ( state ) => state . setPageTab )
228235 const setRowsPerPage = useLibraryViewStore ( ( state ) => state . setRowsPerPage )
229236 const setColumnVisibility = useLibraryViewStore ( ( state ) => state . setColumnVisibility )
230237
231- const [ pageTab , setPageTab ] = React . useState < LibraryPageTab > ( "overview" )
232238 const [ resourceViewMode , setResourceViewMode ] = React . useState < ResourceViewMode > ( "library" )
233239 const [ resourceFileTypeFilter , setResourceFileTypeFilter ] = React . useState < ResourceFileTypeFilter > ( "all" )
234240 const [ resourceFileStatusFilter , setResourceFileStatusFilter ] = React . useState < ResourceFileStatusFilter > ( "active" )
@@ -385,6 +391,31 @@ export function LibraryPage() {
385391 } , [ currentViewMode ] )
386392 const currentColumnVisibility = { ...defaultVisibility , ...( columnVisibility [ currentViewMode ] ?? { } ) }
387393
394+ const handlePageTabChange = React . useCallback (
395+ ( nextTab : LibraryPageTab ) => {
396+ if ( nextTab === "workspace" ) {
397+ const nextLibraryId = workspaceTargetLibraryId . trim ( )
398+ if ( nextLibraryId && selectedLibraryId !== nextLibraryId ) {
399+ setSelectedLibraryId ( nextLibraryId )
400+ }
401+ }
402+ setPageTab ( nextTab )
403+ } ,
404+ [ selectedLibraryId , setPageTab , workspaceTargetLibraryId ] ,
405+ )
406+
407+ const openWorkspaceTarget = React . useCallback (
408+ ( target : LibraryWorkspaceTarget ) => {
409+ const nextLibraryId = target . libraryId ?. trim ( ) ?? ""
410+ if ( nextLibraryId && selectedLibraryId !== nextLibraryId ) {
411+ setSelectedLibraryId ( nextLibraryId )
412+ }
413+ openLibraryWorkspace ( target )
414+ setPageTab ( "workspace" )
415+ } ,
416+ [ selectedLibraryId , setPageTab ] ,
417+ )
418+
388419 const labels = React . useMemo < LibraryLabelMaps > ( ( ) => {
389420 const typeLabels = {
390421 video : t ( "library.type.video" ) ,
@@ -457,14 +488,13 @@ export function LibraryPage() {
457488
458489 React . useEffect ( ( ) => {
459490 const trimmedLibraryId = workspaceTargetLibraryId . trim ( )
460- if ( ! workspaceOpenRevision || ! trimmedLibraryId ) {
491+ if ( pageTab !== "workspace" || ! trimmedLibraryId ) {
461492 return
462493 }
463494 if ( selectedLibraryId !== trimmedLibraryId ) {
464495 setSelectedLibraryId ( trimmedLibraryId )
465496 }
466- setPageTab ( "workspace" )
467- } , [ selectedLibraryId , workspaceOpenRevision , workspaceTargetLibraryId ] )
497+ } , [ pageTab , selectedLibraryId , workspaceTargetLibraryId ] )
468498
469499 React . useEffect ( ( ) => {
470500 const libraries = librariesQuery . data ?? [ ]
@@ -1054,7 +1084,7 @@ export function LibraryPage() {
10541084 language,
10551085 t,
10561086 } ) ,
1057- [ language , t ] ,
1087+ [ language , setPageTab , t ] ,
10581088 )
10591089
10601090 const taskSelectionColumn = React . useMemo < ColumnDef < LibraryTaskRow > > (
@@ -1107,7 +1137,7 @@ export function LibraryPage() {
11071137 if ( ! target ) {
11081138 return
11091139 }
1110- openLibraryWorkspace ( target )
1140+ openWorkspaceTarget ( target )
11111141 } ,
11121142 onPreviewImage : ( file ) => {
11131143 const path = file . path ?. trim ( ) ?? ""
@@ -1186,6 +1216,7 @@ export function LibraryPage() {
11861216 filesById ,
11871217 handleDeleteFile ,
11881218 language ,
1219+ openWorkspaceTarget ,
11891220 openLibraryPath ,
11901221 presetsQuery . data ,
11911222 t ,
@@ -1852,7 +1883,7 @@ export function LibraryPage() {
18521883 < div className = "grid shrink-0 grid-cols-[auto_minmax(0,1fr)] items-center gap-3 pt-1" >
18531884 < Tabs
18541885 value = { pageTab }
1855- onValueChange = { ( value ) => setPageTab ( value as LibraryPageTab ) }
1886+ onValueChange = { ( value ) => handlePageTabChange ( value as LibraryPageTab ) }
18561887 className = "min-w-0 w-auto"
18571888 >
18581889 < TabsList >
@@ -2447,8 +2478,7 @@ export function LibraryPage() {
24472478 if ( ! target ) {
24482479 return
24492480 }
2450- setSelectedLibraryId ( file . libraryId )
2451- openLibraryWorkspace ( target )
2481+ openWorkspaceTarget ( target )
24522482 } }
24532483 onOpenTaskDialog = { openTaskDialog }
24542484 />
0 commit comments