diff --git a/src/pages/api/assignments/[id]/export.tsx b/src/pages/api/assignments/[id]/export.tsx index d38be031..91b24506 100644 --- a/src/pages/api/assignments/[id]/export.tsx +++ b/src/pages/api/assignments/[id]/export.tsx @@ -106,18 +106,20 @@ async function post(req: NextApiRequest, res: NextApiResponse) { results: any; exams: {module: Module}[]; startDate: string; - pdf?: string; + pdf: { + path: string, + version: string, + }, }; if (!data) { res.status(400).end(); return; } - if (data.pdf) { + if (data.pdf && data.pdf.path && data.pdf.version === process.env.PDF_VERSION) { // if it does, return the pdf url - const fileRef = ref(storage, data.pdf); + const fileRef = ref(storage, data.pdf.path); const url = await getDownloadURL(fileRef); - res.status(200).end(url); return; } @@ -387,7 +389,10 @@ async function post(req: NextApiRequest, res: NextApiResponse) { // update the stats entries with the pdf url to prevent duplication await updateDoc(docSnap.ref, { - pdf: refName, + pdf: { + path: refName, + version: process.env.PDF_VERSION, + }, }); const url = await getDownloadURL(fileRef); res.status(200).end(url); @@ -419,8 +424,8 @@ async function get(req: NextApiRequest, res: NextApiResponse) { return; } - if (data.pdf) { - const fileRef = ref(storage, data.pdf); + if (data.pdf?.path) { + const fileRef = ref(storage, data.pdf.path); const url = await getDownloadURL(fileRef); return res.redirect(url); } diff --git a/src/pages/api/stats/[id]/export.tsx b/src/pages/api/stats/[id]/export.tsx index 2736bccf..657cb361 100644 --- a/src/pages/api/stats/[id]/export.tsx +++ b/src/pages/api/stats/[id]/export.tsx @@ -125,7 +125,7 @@ async function post(req: NextApiRequest, res: NextApiResponse) { const stats = docsSnap.docs.map((d) => d.data()); // verify if the stats already have a pdf generated - const hasPDF = stats.find((s) => s.pdf); + const hasPDF = stats.find((s) => s.pdf?.path && s.pdf?.version === process.env.PDF_VERSION); // find the user that generated the stats const statIndex = stats.findIndex((s) => s.user); @@ -138,7 +138,7 @@ async function post(req: NextApiRequest, res: NextApiResponse) { if (hasPDF) { // if it does, return the pdf url - const fileRef = ref(storage, hasPDF.pdf); + const fileRef = ref(storage, hasPDF.pdf.path); const url = await getDownloadURL(fileRef); res.status(200).end(url); @@ -305,7 +305,10 @@ async function post(req: NextApiRequest, res: NextApiResponse) { // update the stats entries with the pdf url to prevent duplication docsSnap.docs.forEach(async (doc) => { await updateDoc(doc.ref, { - pdf: refName, + pdf: { + path: refName, + version: process.env.PDF_VERSION, + }, }); }); const url = await getDownloadURL(fileRef); @@ -336,10 +339,10 @@ async function get(req: NextApiRequest, res: NextApiResponse) { const stats = docsSnap.docs.map((d) => d.data()); - const hasPDF = stats.find((s) => s.pdf); + const hasPDF = stats.find((s) => s.pdf?.path); if (hasPDF) { - const fileRef = ref(storage, hasPDF.pdf); + const fileRef = ref(storage, hasPDF.pdf.path); const url = await getDownloadURL(fileRef); return res.redirect(url); }