Skip to content
← Public packages

@kentcdodds/audible

Personal Audible library app — browser re-auth, library, wishlist, NAS archive stub.

src/archive-remaining-helpers.ts

27 lines · 791 B · TypeScript
import type { SlimLibraryItem } from './types.ts'

export type RemainingTitle = {
	asin: string
	title: string
}

export function isDownloadable(item: SlimLibraryItem): boolean {
	const elig = item.archiveEligibility ?? 'downloadable'
	return elig === 'downloadable' && Boolean(item.asin) && Boolean(item.title?.trim())
}

/** Pure NAS filter used by listRemainingToArchive / bulk UI. */
export function filterNotOnNas(
	items: Array<{ asin: string; title?: string; onNas?: boolean }>,
	onNasByAsin: Map<string, boolean>,
): RemainingTitle[] {
	const out: RemainingTitle[] = []
	for (const item of items) {
		if (!item.asin) continue
		if (onNasByAsin.get(item.asin)) continue
		const title = item.title?.trim()
		if (!title) continue
		out.push({ asin: item.asin, title })
	}
	return out
}