fix(app): non-fatal error handling

This commit is contained in:
adamelmore 2026-01-27 06:27:27 -06:00
commit 095328faf4
No known key found for this signature in database
GPG key ID: 9CB48779AF150E75
14 changed files with 341 additions and 199 deletions

View file

@ -0,0 +1,10 @@
import { base64Decode } from "@opencode-ai/util/encode"
export function decode64(value: string | undefined) {
if (value === undefined) return
try {
return base64Decode(value)
} catch {
return
}
}

View file

@ -151,7 +151,14 @@ function localStorageWithPrefix(prefix: string): SyncStorage {
const cached = cache.get(name)
if (fallback.disabled && cached !== undefined) return cached
const stored = localStorage.getItem(name)
const stored = (() => {
try {
return localStorage.getItem(name)
} catch {
fallback.disabled = true
return null
}
})()
if (stored === null) return cached ?? null
cache.set(name, stored)
return stored
@ -172,7 +179,11 @@ function localStorageWithPrefix(prefix: string): SyncStorage {
const name = item(key)
cache.delete(name)
if (fallback.disabled) return
localStorage.removeItem(name)
try {
localStorage.removeItem(name)
} catch {
fallback.disabled = true
}
},
}
}
@ -183,7 +194,14 @@ function localStorageDirect(): SyncStorage {
const cached = cache.get(key)
if (fallback.disabled && cached !== undefined) return cached
const stored = localStorage.getItem(key)
const stored = (() => {
try {
return localStorage.getItem(key)
} catch {
fallback.disabled = true
return null
}
})()
if (stored === null) return cached ?? null
cache.set(key, stored)
return stored
@ -202,7 +220,11 @@ function localStorageDirect(): SyncStorage {
removeItem: (key) => {
cache.delete(key)
if (fallback.disabled) return
localStorage.removeItem(key)
try {
localStorage.removeItem(key)
} catch {
fallback.disabled = true
}
},
}
}