From f295903b7048725e4c1dbd608c4531c85ca8bffd Mon Sep 17 00:00:00 2001 From: Asuma Yamada Date: Sun, 15 Mar 2026 08:25:15 +0900 Subject: [PATCH] fix: keep archive thumbnails on raw gateway URLs --- src/lib/archive-image-sources.ts | 10 +++++++--- tests/unit/lib/archive-image-sources.test.ts | 15 ++++++++++----- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/src/lib/archive-image-sources.ts b/src/lib/archive-image-sources.ts index ee468a0..b2c609b 100644 --- a/src/lib/archive-image-sources.ts +++ b/src/lib/archive-image-sources.ts @@ -36,7 +36,11 @@ function buildArchiveImageCandidateUrls(imageUrl: string, fallbackGatewayBaseUrl export function getArchiveImageSources(imageUrl: string, options: ArchiveImageSourceOptions = {}): string[] { const baseUrl = options.baseUrl ?? getBaseUrl(); - return buildArchiveImageCandidateUrls(imageUrl, options.fallbackGatewayBaseUrls).map((candidateUrl) => - transformImageUrlWithBaseUrl(candidateUrl, IMAGE_PRESETS.archiveGrid, baseUrl), - ); + return buildArchiveImageCandidateUrls(imageUrl, options.fallbackGatewayBaseUrls).map((candidateUrl) => { + if (candidateUrl.startsWith("http://") || candidateUrl.startsWith("https://")) { + return candidateUrl; + } + + return transformImageUrlWithBaseUrl(candidateUrl, IMAGE_PRESETS.archiveGrid, baseUrl); + }); } diff --git a/tests/unit/lib/archive-image-sources.test.ts b/tests/unit/lib/archive-image-sources.test.ts index 2658a52..779459a 100644 --- a/tests/unit/lib/archive-image-sources.test.ts +++ b/tests/unit/lib/archive-image-sources.test.ts @@ -2,14 +2,19 @@ import { getArchiveImageSources } from "@/lib/archive-image-sources"; import { describe, expect, it } from "bun:test"; describe("archive image sources", () => { - it("builds transformed archive sources across fallback gateways in production", () => { + it("keeps external archive gateways as raw URLs in production", () => { expect( getArchiveImageSources("https://permagate.io/painting-1", { baseUrl: "https://doomindex.fun", }), - ).toEqual([ - "/cdn-cgi/image/width=320,quality=70,fit=cover,format=auto/https://permagate.io/painting-1", - "/cdn-cgi/image/width=320,quality=70,fit=cover,format=auto/https://arweave.net/painting-1", - ]); + ).toEqual(["https://permagate.io/painting-1", "https://arweave.net/painting-1"]); + }); + + it("still transforms local archive paths in production", () => { + expect( + getArchiveImageSources("/images/archive/painting-1.png", { + baseUrl: "https://doomindex.fun", + }), + ).toEqual(["/cdn-cgi/image/width=320,quality=70,fit=cover,format=auto/images/archive/painting-1.png"]); }); });