diff --git a/src/photo/form.ts b/src/photo/form.ts index b9326ca0..cf4a322a 100644 --- a/src/photo/form.ts +++ b/src/photo/form.ts @@ -14,7 +14,7 @@ import { } from '@/vendors/fujifilm'; import { FilmSimulation } from '@/simulation'; import { GEO_PRIVACY_ENABLED } from '@/site/config'; -import { TAG_FAVS } from '@/tag'; +import { TAG_FAVS, doesTagsStringIncludeFavs } from '@/tag'; type VirtualFields = 'favorite'; @@ -42,7 +42,7 @@ const FORM_METADATA: Record = { tags: { label: 'tags', note: 'comma-separated values', - validate: tags => tags?.toLowerCase().includes(TAG_FAVS) + validate: tags => doesTagsStringIncludeFavs(tags) ? `'${TAG_FAVS}' is a reserved tag` : undefined, }, diff --git a/src/tag/index.ts b/src/tag/index.ts index 8bc7c2da..a703182f 100644 --- a/src/tag/index.ts +++ b/src/tag/index.ts @@ -5,7 +5,7 @@ import { photoQuantityText, } from '@/photo'; import { absolutePathForTag, absolutePathForTagImage } from '@/site/paths'; -import { capitalizeWords } from '@/utility/string'; +import { capitalizeWords, convertStringToArray } from '@/utility/string'; export const TAG_FAVS = 'favs'; @@ -17,6 +17,9 @@ export type Tags = { export const formatTag = (tag?: string) => capitalizeWords(tag?.replaceAll('-', ' ')); +export const doesTagsStringIncludeFavs = (tags?: string) => + convertStringToArray(tags)?.some(tag => isTagFavs(tag)); + export const titleForTag = ( tag: string, photos:Photo[],