← Public packages
@kody/mailroom
Offline-first PWA for your Kody mailbox: sent and received threads, copy-prompt for agents, no send.
src/ui/update-check.ts
30 lines · 755 B · TypeScriptexport const UPDATE_CHECK_MIN_INTERVAL_MS = 3000
export function shouldRunUpdateCheck(input: {
visible: boolean
inFlight: boolean
lastStartedAt: number | null
now: number
minIntervalMs?: number
}): boolean {
if (!input.visible || input.inFlight) return false
if (input.lastStartedAt == null) return true
const gap = input.minIntervalMs ?? UPDATE_CHECK_MIN_INTERVAL_MS
return input.now - input.lastStartedAt >= gap
}
export function describeAvailableUpdate(input: {
runningSha: string
latestSha: string
hasWaitingWorker: boolean
}): 'worker' | 'published' | null {
if (input.hasWaitingWorker) return 'worker'
if (
input.runningSha &&
input.latestSha &&
input.runningSha !== input.latestSha
) {
return 'published'
}
return null
}