summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAdam <[email protected]>2025-12-31 18:19:53 -0600
committerAdam <[email protected]>2025-12-31 18:19:53 -0600
commit1c25f1fae03d6bd33c8350c7371a1d6c79114ee1 (patch)
tree6a69060037d9d08e5ea7fd2ba4d765e962bcbf65
parent2da71e0a506f5094c90f8f69a72283588b8eec83 (diff)
downloadopencode-1c25f1fae03d6bd33c8350c7371a1d6c79114ee1.tar.gz
opencode-1c25f1fae03d6bd33c8350c7371a1d6c79114ee1.zip
feat(desktop): in-app update toasts
-rw-r--r--packages/app/src/pages/layout.tsx18
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(() => {