From fa1ac7bc957f3b8b13b97e85eac40729f16b510b Mon Sep 17 00:00:00 2001 From: Adam <2363879+adamdotdevin@users.noreply.github.com> Date: Mon, 29 Dec 2025 20:54:33 -0600 Subject: feat(desktop): system notifications --- packages/app/src/pages/layout.tsx | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) (limited to 'packages/app/src/pages') diff --git a/packages/app/src/pages/layout.tsx b/packages/app/src/pages/layout.tsx index 1c38f05bb..480c5eddf 100644 --- a/packages/app/src/pages/layout.tsx +++ b/packages/app/src/pages/layout.tsx @@ -161,27 +161,33 @@ export default function Layout(props: ParentProps) { if (e.details?.type !== "permission.updated") return const directory = e.name const permission = e.details.properties - const sessionKey = `${directory}:${permission.sessionID}` - if (seenSessions.has(sessionKey)) return - seenSessions.add(sessionKey) const currentDir = params.dir ? base64Decode(params.dir) : undefined const currentSession = params.id - if (directory === currentDir && permission.sessionID === currentSession) return const [store] = globalSync.child(directory) const session = store.session.find((s) => s.id === permission.sessionID) - if (directory === currentDir && session?.parentID === currentSession) return const sessionTitle = session?.title ?? "New session" const projectName = getFilename(directory) + const description = `${sessionTitle} in ${projectName} needs permission` + const href = `/${base64Encode(directory)}/session/${permission.sessionID}` + void platform.notify("Permission required", description, href) + + if (directory === currentDir && permission.sessionID === currentSession) return + if (directory === currentDir && session?.parentID === currentSession) return + + const sessionKey = `${directory}:${permission.sessionID}` + if (seenSessions.has(sessionKey)) return + seenSessions.add(sessionKey) + const toastId = showToast({ persistent: true, icon: "checklist", title: "Permission required", - description: `${sessionTitle} in ${projectName} needs permission`, + description, actions: [ { label: "Go to session", onClick: () => { - navigate(`/${base64Encode(directory)}/session/${permission.sessionID}`) + navigate(href) }, }, { -- cgit v1.2.3