Pure function returning /api/documents/{id}/thumbnail?v=<timestamp>
or null when thumbnailKey is missing. The encoded timestamp changes
whenever the backend regenerates a thumbnail (file replace),
invalidating browser caches despite the immutable Cache-Control.
Refs #307
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
19 lines
710 B
TypeScript
19 lines
710 B
TypeScript
type ThumbnailDoc = {
|
|
id: string;
|
|
thumbnailKey?: string;
|
|
thumbnailGeneratedAt?: string;
|
|
};
|
|
|
|
/**
|
|
* Builds the URL for a document thumbnail image, or returns null when the document
|
|
* has no thumbnail yet. When `thumbnailGeneratedAt` is present it is appended as a
|
|
* `?v=…` query param so the browser / proxy cache is invalidated whenever the file
|
|
* is replaced (the backend regenerates thumbnails at the same S3 key on replace).
|
|
*/
|
|
export function thumbnailUrl(doc: ThumbnailDoc): string | null {
|
|
if (!doc.thumbnailKey) return null;
|
|
const base = `/api/documents/${doc.id}/thumbnail`;
|
|
if (!doc.thumbnailGeneratedAt) return base;
|
|
return `${base}?v=${encodeURIComponent(doc.thumbnailGeneratedAt)}`;
|
|
}
|