之前是会话tab激活的会话不被空闲回收,现在改为会话tab所有的会话都不被空闲回收
This commit is contained in:
@@ -1,6 +1,13 @@
|
||||
"use client"
|
||||
|
||||
import { Suspense, useCallback, useEffect, useRef, useState } from "react"
|
||||
import {
|
||||
Suspense,
|
||||
useMemo,
|
||||
useCallback,
|
||||
useEffect,
|
||||
useRef,
|
||||
useState,
|
||||
} from "react"
|
||||
import { useSearchParams } from "next/navigation"
|
||||
import type { ImperativePanelGroupHandle } from "react-resizable-panels"
|
||||
import { FolderTitleBar } from "@/components/layout/folder-title-bar"
|
||||
@@ -9,9 +16,12 @@ import { StatusBar } from "@/components/layout/status-bar"
|
||||
import { FolderProvider } from "@/contexts/folder-context"
|
||||
import { TaskProvider } from "@/contexts/task-context"
|
||||
import { AlertProvider } from "@/contexts/alert-context"
|
||||
import { AcpConnectionsProvider } from "@/contexts/acp-connections-context"
|
||||
import {
|
||||
AcpConnectionsProvider,
|
||||
useAcpActions,
|
||||
} from "@/contexts/acp-connections-context"
|
||||
import { ConversationRuntimeProvider } from "@/contexts/conversation-runtime-context"
|
||||
import { TabProvider } from "@/contexts/tab-context"
|
||||
import { TabProvider, useTabContext } from "@/contexts/tab-context"
|
||||
import { SessionStatsProvider } from "@/contexts/session-stats-context"
|
||||
import { SidebarProvider, useSidebarContext } from "@/contexts/sidebar-context"
|
||||
import {
|
||||
@@ -58,6 +68,17 @@ const MIN_CENTER_WIDTH_PX = 420
|
||||
const MIN_WORKSPACE_HEIGHT_PX = 220
|
||||
const LAYOUT_EPSILON = 0.25
|
||||
|
||||
/** Syncs open tab keys from TabProvider to AcpConnectionsProvider */
|
||||
function TabKeysSync() {
|
||||
const { tabs } = useTabContext()
|
||||
const { registerOpenTabKeys } = useAcpActions()
|
||||
const keys = useMemo(() => new Set(tabs.map((t) => t.id)), [tabs])
|
||||
useEffect(() => {
|
||||
registerOpenTabKeys(keys)
|
||||
}, [keys, registerOpenTabKeys])
|
||||
return null
|
||||
}
|
||||
|
||||
function isSameLayout(a: number[], b: number[]): boolean {
|
||||
if (a.length !== b.length) return false
|
||||
return a.every((value, index) => Math.abs(value - b[index]) <= LAYOUT_EPSILON)
|
||||
@@ -649,6 +670,7 @@ function FolderLayoutInner({ children }: { children: React.ReactNode }) {
|
||||
<ConversationRuntimeProvider>
|
||||
<WorkspaceProvider key={`workspace-${normalizedFolderId}`}>
|
||||
<TabProvider>
|
||||
<TabKeysSync />
|
||||
<SessionStatsProvider>
|
||||
<SidebarProvider
|
||||
key={`left-sidebar-${normalizedFolderId}`}
|
||||
|
||||
Reference in New Issue
Block a user