feat(app): retain workspace screens on sidebar switch

This commit is contained in:
Mohamed Boudra
2026-04-20 12:55:58 +07:00
parent f8411d121e
commit 403fb03c97
11 changed files with 265 additions and 48 deletions
@@ -133,6 +133,7 @@ const EMPTY_SET = new Set<string>();
type WorkspaceScreenProps = {
serverId: string;
workspaceId: string;
isRouteFocused?: boolean;
};
type WorkspaceScreenContentProps = WorkspaceScreenProps & {
@@ -571,15 +572,16 @@ function useStableTabDescriptorMap(tabDescriptors: WorkspaceTabDescriptor[]) {
return tabDescriptorMap;
}
export function WorkspaceScreen({ serverId, workspaceId }: WorkspaceScreenProps) {
const isFocused = useIsFocused();
export function WorkspaceScreen({ serverId, workspaceId, isRouteFocused }: WorkspaceScreenProps) {
const navigationFocused = useIsFocused();
const effectiveRouteFocused = isRouteFocused ?? navigationFocused;
return (
<ExplorerSidebarAnimationProvider>
<WorkspaceScreenContent
serverId={serverId}
workspaceId={workspaceId}
isRouteFocused={isFocused}
isRouteFocused={effectiveRouteFocused}
/>
</ExplorerSidebarAnimationProvider>
);