diff --git a/src/lib/utils/images.ts b/src/lib/utils/images.ts index 7102aea2..85fa70c2 100644 --- a/src/lib/utils/images.ts +++ b/src/lib/utils/images.ts @@ -42,10 +42,18 @@ export function getBasePath(): string { /** * Gets the placeholder image for a given type and variant - * Placeholders are always served locally + * Uses AWS S3/CDN in production, local path in development */ export function getPlaceholderImage(type: ResourceType, variant: ImageVariant): string { - return `/images/placeholders/placeholder-${type}-${variant}.png` + return `${getBasePath()}/placeholders/placeholder-${type}-${variant}.png` +} + +/** + * Gets a generic placeholder image (weapon-grid variant) + * Used as fallback for misc image types that don't have specific placeholders + */ +export function getGenericPlaceholder(): string { + return `${getBasePath()}/placeholders/placeholder-weapon-grid.png` } /** @@ -257,7 +265,7 @@ export function getJobSkillIcon(slug: string | undefined): string { * Get accessory square image URL */ export function getAccessoryImage(granblueId: string | undefined): string { - if (!granblueId) return '/images/placeholders/placeholder-weapon-grid.png' + if (!granblueId) return getGenericPlaceholder() return `${getBasePath()}/accessory-square/${granblueId}.jpg` } @@ -376,7 +384,7 @@ export function getArtifactImage( granblueId: string | number | null | undefined, variant: ArtifactImageVariant = 'square' ): string { - if (!granblueId) return '/images/placeholders/placeholder-weapon-grid.png' + if (!granblueId) return getGenericPlaceholder() const directory = `artifact-${variant}` return `${getBasePath()}/${directory}/${granblueId}.jpg` } @@ -387,7 +395,7 @@ export function getArtifactImage( * Get guidebook image URL */ export function getGuidebookImage(granblueId: string | number | undefined): string { - if (!granblueId) return '/images/placeholders/placeholder-weapon-grid.png' + if (!granblueId) return getGenericPlaceholder() return `${getBasePath()}/guidebooks/book_${granblueId}.png` } @@ -395,6 +403,6 @@ export function getGuidebookImage(granblueId: string | number | undefined): stri * Get raid image URL */ export function getRaidImage(slug: string | undefined): string { - if (!slug) return '/images/placeholders/placeholder-weapon-grid.png' + if (!slug) return getGenericPlaceholder() return `${getBasePath()}/raids/${slug}.png` } diff --git a/src/lib/utils/jobUtils.ts b/src/lib/utils/jobUtils.ts index 3e3f620b..a1673544 100644 --- a/src/lib/utils/jobUtils.ts +++ b/src/lib/utils/jobUtils.ts @@ -8,6 +8,7 @@ import type { Job, JobSkill } from '$lib/types/api/entities' import type { JobSkillList } from '$lib/types/api/party' import { getImageBaseUrl } from '$lib/api/adapters/config' +import { getGenericPlaceholder } from './images' /** * Gets the base path for images @@ -32,7 +33,7 @@ export enum Gender { */ export function getJobPortraitUrl(job: Job | undefined, gender: Gender = Gender.Gran): string { if (!job) { - return '/images/placeholders/placeholder-weapon-grid.png' + return getGenericPlaceholder() } // Convert job name to slug format (lowercase, spaces to hyphens) @@ -48,7 +49,7 @@ export function getJobPortraitUrl(job: Job | undefined, gender: Gender = Gender. */ export function getJobFullImageUrl(job: Job | undefined, gender: Gender = Gender.Gran): string { if (!job) { - return '/images/placeholders/placeholder-weapon-grid.png' + return getGenericPlaceholder() } const genderSuffix = gender === Gender.Djeeta ? 'b' : 'a' @@ -62,7 +63,7 @@ export function getJobFullImageUrl(job: Job | undefined, gender: Gender = Gender */ export function getJobIconUrl(granblueId: string | undefined): string { if (!granblueId) { - return '/images/placeholders/placeholder-weapon-grid.png' + return getGenericPlaceholder() } return `${getBasePath()}/job-icons/${granblueId}.png` @@ -74,7 +75,7 @@ export function getJobIconUrl(granblueId: string | undefined): string { */ export function getJobWideImageUrl(job: Job | undefined, gender: Gender = Gender.Gran): string { if (!job) { - return '/images/placeholders/placeholder-weapon-grid.png' + return getGenericPlaceholder() } const genderSuffix = gender === Gender.Djeeta ? 'b' : 'a'