diff --git a/apps/foundation/app/(Site)/[slug]/page.tsx b/apps/foundation/app/(Site)/[slug]/page.tsx index 9ad27f46..2ff105df 100644 --- a/apps/foundation/app/(Site)/[slug]/page.tsx +++ b/apps/foundation/app/(Site)/[slug]/page.tsx @@ -102,10 +102,11 @@ export default async function UniversalPage({ params }: PageProps) { slug, }); - if (file?.src) { + if (file?.src && file?.fileName) { const fileDictionary = await getTranslations('fileDownload'); return ( ; + if (src.includes('.pdf')) { + return ; } + // Download file on mount + useEffect(() => { + if (!downloaded) { + setDownloaded(true); + void router.push(srcWithParams.href); + } + }, [src]); + return ( -
-

{strings.fetching}

+
+

{strings.fetching.replace('{name}', fileName)}

diff --git a/packages/sanity-cms/queries/getFile.ts b/packages/sanity-cms/queries/getFile.ts index 83ab2658..c23fb986 100644 --- a/packages/sanity-cms/queries/getFile.ts +++ b/packages/sanity-cms/queries/getFile.ts @@ -7,6 +7,7 @@ const QUERY_GET_FILES_WITH_SLUG = groq`*[_type == 'cmsFile' && slug.current == $ type QUERY_GET_FILES_WITH_SLUG_RETURN_TYPE = Array< FileSchemaType & { src: string; + fileName: string; } >; diff --git a/packages/sanity-cms/schemas/file.tsx b/packages/sanity-cms/schemas/file.tsx index 0e2f5d25..bb19415f 100644 --- a/packages/sanity-cms/schemas/file.tsx +++ b/packages/sanity-cms/schemas/file.tsx @@ -12,6 +12,13 @@ export const fileFields = [ name: 'file', type: 'file', }), + defineField({ + title: 'File Name', + name: 'fileName', + type: 'string', + description: 'The name of the file when it is downloaded', + validation: (Rule) => Rule.required(), + }), ]; export const fileSchema = defineType({