diff options
| author | Adam <[email protected]> | 2025-12-31 18:19:53 -0600 |
|---|---|---|
| committer | Adam <[email protected]> | 2025-12-31 18:19:53 -0600 |
| commit | 1c25f1fae03d6bd33c8350c7371a1d6c79114ee1 (patch) | |
| tree | 6a69060037d9d08e5ea7fd2ba4d765e962bcbf65 | |
| parent | 2da71e0a506f5094c90f8f69a72283588b8eec83 (diff) | |
| download | opencode-1c25f1fae03d6bd33c8350c7371a1d6c79114ee1.tar.gz opencode-1c25f1fae03d6bd33c8350c7371a1d6c79114ee1.zip | |
feat(desktop): in-app update toasts
| -rw-r--r-- | packages/app/src/pages/layout.tsx | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/packages/app/src/pages/layout.tsx b/packages/app/src/pages/layout.tsx index d6d24e9ad..0bcf0f7a2 100644 --- a/packages/app/src/pages/layout.tsx +++ b/packages/app/src/pages/layout.tsx @@ -134,11 +134,15 @@ export default function Layout(props: ParentProps) { }) } - onMount(async () => { - if (platform.checkUpdate && platform.update && platform.restart) { - const { updateAvailable, version } = await platform.checkUpdate() - if (updateAvailable) { - showToast({ + onMount(() => { + if (!platform.checkUpdate || !platform.update || !platform.restart) return + + let toastId: number | undefined + + async function pollUpdate() { + const { updateAvailable, version } = await platform.checkUpdate!() + if (updateAvailable && toastId === undefined) { + toastId = showToast({ persistent: true, icon: "download", title: "Update available", @@ -159,6 +163,10 @@ export default function Layout(props: ParentProps) { }) } } + + pollUpdate() + const interval = setInterval(pollUpdate, 10 * 60 * 1000) + onCleanup(() => clearInterval(interval)) }) onMount(() => { |
