← 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 · TypeScriptexport 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
}