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/inbox-refresh.ts

31 lines · 823 B · TypeScript
export const INBOX_REFRESH_MIN_INTERVAL_MS = 3000
export const INBOX_POLL_INTERVAL_MS = 20_000

export function shouldRefreshInbox(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 ?? INBOX_REFRESH_MIN_INTERVAL_MS
	return input.now - input.lastStartedAt >= gap
}

export function inboxHasNewMail(input: {
	previousTotal: number
	nextTotal: number
	previousLatestSentAt: string | null
	nextLatestSentAt: string | null
}): boolean {
	if (input.nextTotal > input.previousTotal) return true
	if (
		input.nextLatestSentAt &&
		input.nextLatestSentAt !== input.previousLatestSentAt
	) {
		return true
	}
	return false
}