From 43c291327c4fa832014fd25ba8bb3006307c7792 Mon Sep 17 00:00:00 2001 From: Justin Edmund Date: Mon, 1 Dec 2025 02:26:29 -0800 Subject: [PATCH] components: use centralized image URL helpers --- src/lib/components/extra/GuidebookUnit.svelte | 5 ++--- src/lib/components/job/JobSection.svelte | 3 ++- src/lib/components/job/JobSkillItem.svelte | 7 ++----- src/lib/components/job/JobSkillSlot.svelte | 3 ++- .../components/panels/SearchSidebar.svelte | 16 +++++++++++++--- .../sidebar/EditWeaponSidebar.svelte | 13 +++++++------ .../modifications/MasteryDisplay.svelte | 3 ++- src/lib/utils/jobUtils.ts | 19 ++++++++++++++----- src/lib/utils/modifiers.ts | 7 ++++--- 9 files changed, 48 insertions(+), 28 deletions(-) diff --git a/src/lib/components/extra/GuidebookUnit.svelte b/src/lib/components/extra/GuidebookUnit.svelte index 605e06f9..c15f84ce 100644 --- a/src/lib/components/extra/GuidebookUnit.svelte +++ b/src/lib/components/extra/GuidebookUnit.svelte @@ -1,6 +1,7 @@ diff --git a/src/lib/utils/jobUtils.ts b/src/lib/utils/jobUtils.ts index 6c3209a8..2213f1ea 100644 --- a/src/lib/utils/jobUtils.ts +++ b/src/lib/utils/jobUtils.ts @@ -7,6 +7,16 @@ import type { Job, JobSkill } from '$lib/types/api/entities' import type { JobSkillList } from '$lib/types/api/party' +import { getImageBaseUrl } from '$lib/api/adapters/config' + +/** + * Gets the base path for images + * Returns AWS S3/CDN URL if configured, otherwise local /images path + */ +function getBasePath(): string { + const remoteUrl = getImageBaseUrl() + return remoteUrl || '/images' +} /** * Gender options for job portraits @@ -29,7 +39,7 @@ export function getJobPortraitUrl(job: Job | undefined, gender: Gender = Gender. const slug = job.name.en.toLowerCase().replace(/\s+/g, '-') const genderSuffix = gender === Gender.Djeeta ? 'b' : 'a' - return `/images/job-portraits/${slug}_${genderSuffix}.png` + return `${getBasePath()}/job-portraits/${slug}_${genderSuffix}.png` } /** @@ -43,20 +53,19 @@ export function getJobFullImageUrl(job: Job | undefined, gender: Gender = Gender const genderSuffix = gender === Gender.Djeeta ? 'b' : 'a' - return `/images/job-zoom/${job.granblueId}_${genderSuffix}.png` + return `${getBasePath()}/job-zoom/${job.granblueId}_${genderSuffix}.png` } /** * Generate job icon URL * Job icons are small square icons representing the job - * Images are stored locally in /static/images/job-icons/ */ export function getJobIconUrl(granblueId: string | undefined): string { if (!granblueId) { return '/images/placeholders/placeholder-weapon-grid.png' } - return `/images/job-icons/${granblueId}.png` + return `${getBasePath()}/job-icons/${granblueId}.png` } /** @@ -69,7 +78,7 @@ export function getJobWideImageUrl(job: Job | undefined, gender: Gender = Gender } const genderSuffix = gender === Gender.Djeeta ? 'b' : 'a' - return `/images/job-wide/${job.granblueId}_${genderSuffix}.jpg` + return `${getBasePath()}/job-wide/${job.granblueId}_${genderSuffix}.jpg` } /** diff --git a/src/lib/utils/modifiers.ts b/src/lib/utils/modifiers.ts index e826480f..3fdc379a 100644 --- a/src/lib/utils/modifiers.ts +++ b/src/lib/utils/modifiers.ts @@ -4,6 +4,7 @@ import type { Awakening, WeaponKey } from '$lib/types/api/entities' import type { SimpleAxSkill } from '$lib/types/SimpleAxSkill' +import { getBasePath } from '$lib/utils/images' /** * Get the image URL for an awakening type @@ -20,7 +21,7 @@ export function getAwakeningImage(awakening?: { type?: Awakening; level?: number const isCharacterAwakening = slug.startsWith('character-') const extension = isCharacterAwakening ? 'jpg' : 'png' - return `/images/awakening/${slug}.${extension}` + return `${getBasePath()}/awakening/${slug}.${extension}` } /** @@ -35,7 +36,7 @@ export function getWeaponKeyImage( ): string { if (!key.slug) return '' - const baseUrl = '/images/weapon-keys/' + const baseUrl = `${getBasePath()}/weapon-keys/` let filename = key.slug // Handle element-specific telumas (Draconic weapons) @@ -97,7 +98,7 @@ export function getWeaponKeyImages( */ export function getAxSkillImage(axSkill?: { slug?: string }): string | null { if (!axSkill?.slug) return null - return `/images/ax/${axSkill.slug}.png` + return `${getBasePath()}/ax/${axSkill.slug}.png` } /**