fix(tui): fix flicker by avoiding redundant workspace session sync (#26997)
This commit is contained in:
@@ -113,7 +113,6 @@ export const { use: useSync, provider: SyncProvider } = createSimpleContext({
|
|||||||
const kv = useKV()
|
const kv = useKV()
|
||||||
|
|
||||||
const fullSyncedSessions = new Set<string>()
|
const fullSyncedSessions = new Set<string>()
|
||||||
let syncedWorkspace = project.workspace.current()
|
|
||||||
|
|
||||||
function sessionListQuery(): { scope?: "project"; path?: string } {
|
function sessionListQuery(): { scope?: "project"; path?: string } {
|
||||||
if (!kv.get("session_directory_filter_enabled", true)) return { scope: "project" }
|
if (!kv.get("session_directory_filter_enabled", true)) return { scope: "project" }
|
||||||
@@ -378,10 +377,6 @@ export const { use: useSync, provider: SyncProvider } = createSimpleContext({
|
|||||||
async function bootstrap(input: { fatal?: boolean } = {}) {
|
async function bootstrap(input: { fatal?: boolean } = {}) {
|
||||||
const fatal = input.fatal ?? true
|
const fatal = input.fatal ?? true
|
||||||
const workspace = project.workspace.current()
|
const workspace = project.workspace.current()
|
||||||
if (workspace !== syncedWorkspace) {
|
|
||||||
fullSyncedSessions.clear()
|
|
||||||
syncedWorkspace = workspace
|
|
||||||
}
|
|
||||||
const projectPromise = project.sync()
|
const projectPromise = project.sync()
|
||||||
const sessionListPromise = projectPromise.then(() => listSessions())
|
const sessionListPromise = projectPromise.then(() => listSessions())
|
||||||
|
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import {
|
|||||||
onMount,
|
onMount,
|
||||||
Show,
|
Show,
|
||||||
Switch,
|
Switch,
|
||||||
|
untrack,
|
||||||
useContext,
|
useContext,
|
||||||
} from "solid-js"
|
} from "solid-js"
|
||||||
import { Dynamic } from "solid-js/web"
|
import { Dynamic } from "solid-js/web"
|
||||||
@@ -242,7 +243,7 @@ export function Session() {
|
|||||||
createEffect(() => {
|
createEffect(() => {
|
||||||
const sessionID = route.sessionID
|
const sessionID = route.sessionID
|
||||||
void (async () => {
|
void (async () => {
|
||||||
const previousWorkspace = project.workspace.current()
|
const previousWorkspace = untrack(() => project.workspace.current())
|
||||||
const result = await sdk.client.session.get({ sessionID }, { throwOnError: true })
|
const result = await sdk.client.session.get({ sessionID }, { throwOnError: true })
|
||||||
if (!result.data) {
|
if (!result.data) {
|
||||||
toast.show({
|
toast.show({
|
||||||
|
|||||||
Reference in New Issue
Block a user