Skip to content

Commit c2f9fd5

Browse files
committed
fix(app): reload instance after workspace reset
1 parent 3fd0043 commit c2f9fd5

2 files changed

Lines changed: 40 additions & 20 deletions

File tree

packages/app/src/components/prompt-input.tsx

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1056,7 +1056,16 @@ export const PromptInput: Component<PromptInputProps> = (props) => {
10561056

10571057
let session = info()
10581058
if (!session && isNewSession) {
1059-
session = await client.session.create().then((x) => x.data ?? undefined)
1059+
session = await client.session
1060+
.create()
1061+
.then((x) => x.data ?? undefined)
1062+
.catch((err) => {
1063+
showToast({
1064+
title: "Failed to create session",
1065+
description: errorMessage(err),
1066+
})
1067+
return undefined
1068+
})
10601069
if (session) navigate(`/${base64Encode(sessionDirectory)}/session/${session.id}`)
10611070
}
10621071
if (!session) return

packages/app/src/pages/layout.tsx

Lines changed: 30 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -965,32 +965,40 @@ export default function Layout(props: ParentProps) {
965965
if (!current) return
966966
if (directory === current.worktree) return
967967

968-
const reset = globalSDK.client.worktree
968+
const progress = showToast({
969+
persistent: true,
970+
title: "Resetting workspace",
971+
description: "This may take a minute.",
972+
})
973+
const dismiss = () => toaster.dismiss(progress)
974+
975+
const sessions = await globalSDK.client.session
976+
.list({ directory })
977+
.then((x) => x.data ?? [])
978+
.catch(() => [])
979+
980+
const result = await globalSDK.client.worktree
969981
.reset({ directory: current.worktree, worktreeResetInput: { directory } })
970982
.then((x) => x.data)
971983
.catch((err) => {
984+
dismiss()
972985
showToast({
973986
title: "Failed to reset workspace",
974987
description: errorMessage(err),
975988
})
976989
return false
977990
})
978991

979-
const href = `/${base64Encode(directory)}/session`
980-
navigate(href)
981-
layout.mobileSidebar.hide()
982-
983-
void (async () => {
984-
const sessions = await globalSDK.client.session
985-
.list({ directory })
986-
.then((x) => x.data ?? [])
987-
.catch(() => [])
988-
989-
if (sessions.length === 0) return
992+
if (!result) {
993+
dismiss()
994+
return
995+
}
990996

991-
const archivedAt = Date.now()
992-
await Promise.all(
993-
sessions.map((session) =>
997+
const archivedAt = Date.now()
998+
await Promise.all(
999+
sessions
1000+
.filter((session) => session.time.archived === undefined)
1001+
.map((session) =>
9941002
globalSDK.client.session
9951003
.update({
9961004
sessionID: session.id,
@@ -999,11 +1007,14 @@ export default function Layout(props: ParentProps) {
9991007
})
10001008
.catch(() => undefined),
10011009
),
1002-
)
1003-
})()
1010+
)
10041011

1005-
const result = await reset
1006-
if (!result) return
1012+
await globalSDK.client.instance.dispose({ directory }).catch(() => undefined)
1013+
dismiss()
1014+
1015+
const href = `/${base64Encode(directory)}/session`
1016+
navigate(href)
1017+
layout.mobileSidebar.hide()
10071018

10081019
showToast({
10091020
title: "Workspace reset",

0 commit comments

Comments
 (0)