Vercel/src/camera/meta.ts
2023-11-09 18:55:12 -06:00

53 lines
1.3 KiB
TypeScript

import {
Photo,
PhotoDateRange,
descriptionForPhotoSet,
photoQuantityText,
} from '@/photo';
import { Camera, cameraFromPhoto, formatCameraText } from '.';
import {
absolutePathForCamera,
absolutePathForCameraImage,
} from '@/site/paths';
// Meta functions moved to separate file to avoid
// dependencies (camelcase-keys) found in photo/index.ts
// which cause Jest to crash
export const titleForCamera = (
camera: Camera,
photos: Photo[],
explicitCount?: number,
) => [
'Shot on',
formatCameraText(cameraFromPhoto(photos[0], camera)),
photoQuantityText(explicitCount ?? photos.length),
].join(' ');
export const descriptionForCameraPhotos = (
photos: Photo[],
dateBased?: boolean,
explicitCount?: number,
explicitDateRange?: PhotoDateRange,
) =>
descriptionForPhotoSet(
photos,
undefined,
dateBased,
explicitCount,
explicitDateRange,
);
export const generateMetaForCamera = (
camera: Camera,
photos: Photo[],
explicitCount?: number,
explicitDateRange?: PhotoDateRange,
) => ({
url: absolutePathForCamera(camera),
title: titleForCamera(camera, photos, explicitCount),
description:
descriptionForCameraPhotos(photos, true, explicitCount, explicitDateRange),
images: absolutePathForCameraImage(camera),
});