fix(app): reload instance after workspace reset
This commit is contained in:
@@ -1056,7 +1056,16 @@ export const PromptInput: Component<PromptInputProps> = (props) => {
|
|||||||
|
|
||||||
let session = info()
|
let session = info()
|
||||||
if (!session && isNewSession) {
|
if (!session && isNewSession) {
|
||||||
session = await client.session.create().then((x) => x.data ?? undefined)
|
session = await client.session
|
||||||
|
.create()
|
||||||
|
.then((x) => x.data ?? undefined)
|
||||||
|
.catch((err) => {
|
||||||
|
showToast({
|
||||||
|
title: "Failed to create session",
|
||||||
|
description: errorMessage(err),
|
||||||
|
})
|
||||||
|
return undefined
|
||||||
|
})
|
||||||
if (session) navigate(`/${base64Encode(sessionDirectory)}/session/${session.id}`)
|
if (session) navigate(`/${base64Encode(sessionDirectory)}/session/${session.id}`)
|
||||||
}
|
}
|
||||||
if (!session) return
|
if (!session) return
|
||||||
|
|||||||
@@ -965,10 +965,23 @@ export default function Layout(props: ParentProps) {
|
|||||||
if (!current) return
|
if (!current) return
|
||||||
if (directory === current.worktree) return
|
if (directory === current.worktree) return
|
||||||
|
|
||||||
const reset = globalSDK.client.worktree
|
const progress = showToast({
|
||||||
|
persistent: true,
|
||||||
|
title: "Resetting workspace",
|
||||||
|
description: "This may take a minute.",
|
||||||
|
})
|
||||||
|
const dismiss = () => toaster.dismiss(progress)
|
||||||
|
|
||||||
|
const sessions = await globalSDK.client.session
|
||||||
|
.list({ directory })
|
||||||
|
.then((x) => x.data ?? [])
|
||||||
|
.catch(() => [])
|
||||||
|
|
||||||
|
const result = await globalSDK.client.worktree
|
||||||
.reset({ directory: current.worktree, worktreeResetInput: { directory } })
|
.reset({ directory: current.worktree, worktreeResetInput: { directory } })
|
||||||
.then((x) => x.data)
|
.then((x) => x.data)
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
|
dismiss()
|
||||||
showToast({
|
showToast({
|
||||||
title: "Failed to reset workspace",
|
title: "Failed to reset workspace",
|
||||||
description: errorMessage(err),
|
description: errorMessage(err),
|
||||||
@@ -976,21 +989,16 @@ export default function Layout(props: ParentProps) {
|
|||||||
return false
|
return false
|
||||||
})
|
})
|
||||||
|
|
||||||
const href = `/${base64Encode(directory)}/session`
|
if (!result) {
|
||||||
navigate(href)
|
dismiss()
|
||||||
layout.mobileSidebar.hide()
|
return
|
||||||
|
}
|
||||||
|
|
||||||
void (async () => {
|
const archivedAt = Date.now()
|
||||||
const sessions = await globalSDK.client.session
|
await Promise.all(
|
||||||
.list({ directory })
|
sessions
|
||||||
.then((x) => x.data ?? [])
|
.filter((session) => session.time.archived === undefined)
|
||||||
.catch(() => [])
|
.map((session) =>
|
||||||
|
|
||||||
if (sessions.length === 0) return
|
|
||||||
|
|
||||||
const archivedAt = Date.now()
|
|
||||||
await Promise.all(
|
|
||||||
sessions.map((session) =>
|
|
||||||
globalSDK.client.session
|
globalSDK.client.session
|
||||||
.update({
|
.update({
|
||||||
sessionID: session.id,
|
sessionID: session.id,
|
||||||
@@ -999,11 +1007,14 @@ export default function Layout(props: ParentProps) {
|
|||||||
})
|
})
|
||||||
.catch(() => undefined),
|
.catch(() => undefined),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
})()
|
|
||||||
|
|
||||||
const result = await reset
|
await globalSDK.client.instance.dispose({ directory }).catch(() => undefined)
|
||||||
if (!result) return
|
dismiss()
|
||||||
|
|
||||||
|
const href = `/${base64Encode(directory)}/session`
|
||||||
|
navigate(href)
|
||||||
|
layout.mobileSidebar.hide()
|
||||||
|
|
||||||
showToast({
|
showToast({
|
||||||
title: "Workspace reset",
|
title: "Workspace reset",
|
||||||
|
|||||||
Reference in New Issue
Block a user