summaryrefslogtreecommitdiffhomepage
path: root/packages/app/src/pages
diff options
context:
space:
mode:
Diffstat (limited to 'packages/app/src/pages')
-rw-r--r--packages/app/src/pages/layout.tsx49
1 files changed, 30 insertions, 19 deletions
diff --git a/packages/app/src/pages/layout.tsx b/packages/app/src/pages/layout.tsx
index 5312ff0a2..81177d138 100644
--- a/packages/app/src/pages/layout.tsx
+++ b/packages/app/src/pages/layout.tsx
@@ -965,10 +965,23 @@ export default function Layout(props: ParentProps) {
if (!current) 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 } })
.then((x) => x.data)
.catch((err) => {
+ dismiss()
showToast({
title: "Failed to reset workspace",
description: errorMessage(err),
@@ -976,21 +989,16 @@ export default function Layout(props: ParentProps) {
return false
})
- const href = `/${base64Encode(directory)}/session`
- navigate(href)
- layout.mobileSidebar.hide()
-
- void (async () => {
- const sessions = await globalSDK.client.session
- .list({ directory })
- .then((x) => x.data ?? [])
- .catch(() => [])
-
- if (sessions.length === 0) return
+ if (!result) {
+ dismiss()
+ return
+ }
- const archivedAt = Date.now()
- await Promise.all(
- sessions.map((session) =>
+ const archivedAt = Date.now()
+ await Promise.all(
+ sessions
+ .filter((session) => session.time.archived === undefined)
+ .map((session) =>
globalSDK.client.session
.update({
sessionID: session.id,
@@ -999,11 +1007,14 @@ export default function Layout(props: ParentProps) {
})
.catch(() => undefined),
),
- )
- })()
+ )
- const result = await reset
- if (!result) return
+ await globalSDK.client.instance.dispose({ directory }).catch(() => undefined)
+ dismiss()
+
+ const href = `/${base64Encode(directory)}/session`
+ navigate(href)
+ layout.mobileSidebar.hide()
showToast({
title: "Workspace reset",