Skip to content

Built for people who want to own their automations. Join the waitlist for an invite.

Package listing

@kentcdodds/lineage

src/ui/update-check.ts

26 lines · 746 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
}