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({