import { m } from '#/paraglide/messages';

export const interests = [
	'animals',
	'art',
	'books',
	'comedy',
	'comics',
	'culture',
	'dev',
	'education',
	'finance',
	'food',
	'gaming',
	'journalism',
	'movies',
	'music',
	'nature',
	'news',
	'pets',
	'photography',
	'politics',
	'science',
	'sports',
	'tech',
	'tv',
	'writers',
] as const;
export type Interest = (typeof interests)[number];

// most popular selected interests
export const popularInterests = [
	'art',
	'gaming',
	'sports',
	'comics',
	'music',
	'politics',
	'photography',
	'science',
	'news',
] satisfies Interest[];

export const interestDisplayNames: Record<string, () => string> = {
	// Keep this alphabetized
	animals: m['lib.interest.animals'],
	art: m['lib.interest.art'],
	books: m['lib.interest.books'],
	comedy: m['lib.interest.comedy'],
	comics: m['lib.interest.comics'],
	culture: m['lib.interest.culture'],
	dev: m['lib.interest.softwareDev'],
	education: m['lib.interest.education'],
	finance: m['lib.interest.finance'],
	food: m['lib.interest.food'],
	gaming: m['common.interest.videoGames'],
	journalism: m['lib.interest.journalism'],
	movies: m['lib.interest.movies'],
	music: m['lib.interest.music'],
	nature: m['lib.interest.nature'],
	news: m['common.interest.news'],
	pets: m['lib.interest.pets'],
	photography: m['lib.interest.photography'],
	politics: m['common.interest.politics'],
	science: m['lib.interest.science'],
	sports: m['common.interest.sports'],
	tech: m['lib.interest.tech'],
	tv: m['lib.interest.tv'],
	writers: m['lib.interest.writers'],
};

/** Sort comparator that floats `boosts` (in their given order) to the front; other items keep their order. */
export function boostInterests(boosts?: string[]) {
	return (a: string, b: string) => {
		const indexA = boosts?.indexOf(a) ?? -1;
		const indexB = boosts?.indexOf(b) ?? -1;
		const rankA = indexA === -1 ? Infinity : indexA;
		const rankB = indexB === -1 ? Infinity : indexB;
		return rankA - rankB;
	};
}
