68 lines
1.7 KiB
TypeScript
68 lines
1.7 KiB
TypeScript
import { faker } from '../faker/faker';
|
|
|
|
const DRIVER_AVATARS = [
|
|
'/images/avatars/avatar-1.svg',
|
|
'/images/avatars/avatar-2.svg',
|
|
'/images/avatars/avatar-3.svg',
|
|
'/images/avatars/avatar-4.svg',
|
|
'/images/avatars/avatar-5.svg',
|
|
'/images/avatars/avatar-6.svg',
|
|
] as const;
|
|
|
|
const TEAM_LOGOS = [
|
|
'/images/logos/team-1.svg',
|
|
'/images/logos/team-2.svg',
|
|
'/images/logos/team-3.svg',
|
|
'/images/logos/team-4.svg',
|
|
] as const;
|
|
|
|
const LEAGUE_BANNERS = [
|
|
'/images/header.jpeg',
|
|
'/images/ff1600.jpeg',
|
|
'/images/lmp3.jpeg',
|
|
'/images/porsche.jpeg',
|
|
] as const;
|
|
|
|
function hashString(input: string): number {
|
|
let hash = 0;
|
|
for (let i = 0; i < input.length; i += 1) {
|
|
hash = (hash * 31 + input.charCodeAt(i)) | 0;
|
|
}
|
|
return Math.abs(hash);
|
|
}
|
|
|
|
export function getDriverAvatar(driverId: string): string {
|
|
const index = hashString(driverId) % DRIVER_AVATARS.length;
|
|
const avatar = DRIVER_AVATARS[index] ?? DRIVER_AVATARS[0];
|
|
return avatar;
|
|
}
|
|
|
|
export function getTeamLogo(teamId: string): string {
|
|
const index = hashString(teamId) % TEAM_LOGOS.length;
|
|
const logo = TEAM_LOGOS[index] ?? TEAM_LOGOS[0];
|
|
return logo;
|
|
}
|
|
|
|
export function getLeagueBanner(leagueId: string): string {
|
|
const index = hashString(leagueId) % LEAGUE_BANNERS.length;
|
|
const banner = LEAGUE_BANNERS[index] ?? LEAGUE_BANNERS[0];
|
|
return banner;
|
|
}
|
|
|
|
export interface LeagueCoverImage {
|
|
url: string;
|
|
alt: string;
|
|
}
|
|
|
|
export function getLeagueCoverImage(leagueId: string): LeagueCoverImage {
|
|
const seed = hashString(leagueId);
|
|
|
|
faker.seed(seed);
|
|
const alt = faker.lorem.words(3);
|
|
|
|
const url = `https://picsum.photos/seed/${seed}/1200/280?blur=2`;
|
|
|
|
return { url, alt };
|
|
}
|
|
|
|
export { DRIVER_AVATARS, TEAM_LOGOS, LEAGUE_BANNERS }; |