Skip to content
← 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 · TypeScript
export 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
}