diff --git a/apps/charterafrica/src/components/Documents/useDocuments.js b/apps/charterafrica/src/components/Documents/useDocuments.js index 1d8b24523..9b4533554 100644 --- a/apps/charterafrica/src/components/Documents/useDocuments.js +++ b/apps/charterafrica/src/components/Documents/useDocuments.js @@ -8,7 +8,7 @@ function useDocuments(q, options, pathname) { const qs = queryString({ ...options, q, pathname }); const separator = qs ? "?" : ""; const { data, error } = useSWR( - `/api/v1/opportunities/consultation/documents${separator}${qs}`, + `/api/v1/resources/documents${separator}${qs}`, fetcher ); diff --git a/apps/charterafrica/src/lib/data/common/processPageConsultation.js b/apps/charterafrica/src/lib/data/common/processPageConsultation.js index 00e23e3da..dff0aaa91 100644 --- a/apps/charterafrica/src/lib/data/common/processPageConsultation.js +++ b/apps/charterafrica/src/lib/data/common/processPageConsultation.js @@ -126,8 +126,8 @@ async function processPageConsultation(page, api, context) { slug: "documents", title: documentsTitle ?? null, }; - // SWR fallback - let swrKey = `/api/v1/opportunities/consultation/documents`; + + let swrKey = `/api/v1/resources/documents`; const qs = queryString(documentsQuery); if (qs) { swrKey = `${swrKey}?${qs}`; @@ -157,7 +157,7 @@ async function processPageConsultation(page, api, context) { ); } blocks[playlistIndex] = { - slug: "embedded-playlist", + ...blocks[playlistIndex], config: { mostRecentText: "Most Recent", relevanceText: "Relevance", @@ -172,6 +172,7 @@ async function processPageConsultation(page, api, context) { ...playlistField, items, }, + slug: "embedded-playlist", title: title ?? null, }; } diff --git a/apps/charterafrica/src/lib/data/common/processPageDatasets.js b/apps/charterafrica/src/lib/data/common/processPageDatasets.js index 0368300f3..ac79d355b 100644 --- a/apps/charterafrica/src/lib/data/common/processPageDatasets.js +++ b/apps/charterafrica/src/lib/data/common/processPageDatasets.js @@ -79,7 +79,7 @@ export default async function processPageDatasets(page, api, context) { } // eslint-disable-next-line no-param-reassign page.fallback = { - [`${swrKey}`]: datasets, + [swrKey]: datasets, }; } diff --git a/apps/charterafrica/src/lib/data/common/processPageDocuments.js b/apps/charterafrica/src/lib/data/common/processPageDocuments.js index 3595f606f..0aaed4e5b 100644 --- a/apps/charterafrica/src/lib/data/common/processPageDocuments.js +++ b/apps/charterafrica/src/lib/data/common/processPageDocuments.js @@ -87,14 +87,14 @@ export default async function processPageDocuments(page, api, context) { pathname: pageUrl, }; - let swrKey = `/api/v1/resources/datasets`; + let swrKey = `/api/v1/resources/documents`; const qs = queryString(documentsQuery); if (qs) { swrKey = `${swrKey}?${qs}`; } // eslint-disable-next-line no-param-reassign page.fallback = { - [`${swrKey}`]: documents, + [swrKey]: documents, }; } diff --git a/apps/charterafrica/src/pages/api/v1/opportunities/consultation/[media].page.js b/apps/charterafrica/src/pages/api/v1/opportunities/consultation/[media].page.js index 73cfb68ae..7c44e261b 100644 --- a/apps/charterafrica/src/pages/api/v1/opportunities/consultation/[media].page.js +++ b/apps/charterafrica/src/pages/api/v1/opportunities/consultation/[media].page.js @@ -1,39 +1,28 @@ -import { fetchDocuments } from "@/charterafrica/lib/sourceAfrica"; -import { fetchResource } from "@/charterafrica/lib/youtube"; +import * as Sentry from "@sentry/nextjs"; -const documents = async (req, res) => { - const { q, media, pathname, ...rest } = req.query; +import { fetchResource } from "@/charterafrica/lib/youtube"; - try { - const data = await fetchDocuments(q, pathname, rest); - return res.status(200).json(data); - } catch (error) { - return res.status(500).json({ error }); - } -}; +async function multimedia(req, res) { + const { pathname, ...rest } = req.query; -const multimedia = async (req, res) => { - try { - const { pathname, ...rest } = req.query; - const data = await fetchResource(pathname, rest); - return res.status(200).json(data); - } catch (error) { - return res.status(500).json(error); - } -}; + const data = await fetchResource(pathname, rest); + return res.status(200).json(data); +} -const mediaMap = { - documents, +const fetchMediaMap = { multimedia, }; export default async function handler(req, res) { - const { - query: { media }, - } = req; - const response = mediaMap[media]; - if (response) { - return response(req, res); + const { media } = req.query; + const fetchMedia = fetchMediaMap[media]; + if (fetchMedia) { + try { + return fetchMedia(req, res); + } catch (err) { + Sentry.captureException(err); + return res.status(500).json(err); + } } return res.status(404).json({ message: "UNKNOWN_MEDIA", media }); } diff --git a/apps/charterafrica/src/pages/api/v1/resources/[type].page.js b/apps/charterafrica/src/pages/api/v1/resources/[type].page.js new file mode 100644 index 000000000..f3902e043 --- /dev/null +++ b/apps/charterafrica/src/pages/api/v1/resources/[type].page.js @@ -0,0 +1,54 @@ +import * as Sentry from "@sentry/nextjs"; + +import fetchDatasets from "@/charterafrica/lib/openAfrica"; +import { fetchDocuments } from "@/charterafrica/lib/sourceAfrica"; + +async function datasets(req, res) { + const { + sort = "metadata_created desc", + tags, + countries, + q = "", + page = 1, + pathname, + locale, + organizationId, + } = req.query; + + const data = await fetchDatasets(organizationId, pathname, { + q, + page, + sort, + tags: tags?.split(","), + countries: countries?.split(","), + locale, + }); + return res.status(200).json(data); +} + +async function documents(req, res) { + const { q, pathname, ...rest } = req.query; + + const data = await fetchDocuments(q, pathname, rest); + return res.status(200).json(data); +} + +const fetchResourcesByType = { + datasets, + documents, +}; + +export default async function handler(req, res) { + const { type } = req.query; + + const fetchResources = fetchResourcesByType[type]; + if (fetchResources) { + try { + return fetchResources(req, res); + } catch (err) { + Sentry.captureException(err); + return res.status(500).json(err); + } + } + return res.status(404).json({ message: "UNKNOWN_TYPE", type }); +} diff --git a/apps/charterafrica/src/pages/api/v1/resources/datasets.page.js b/apps/charterafrica/src/pages/api/v1/resources/datasets.page.js deleted file mode 100644 index 4b4d41ee4..000000000 --- a/apps/charterafrica/src/pages/api/v1/resources/datasets.page.js +++ /dev/null @@ -1,39 +0,0 @@ -import fetchDatasets from "@/charterafrica/lib/openAfrica"; - -async function datasets(req, res) { - const { - query: { - sort = "metadata_created desc", - tags, - countries, - q = "", - page = 1, - pathname, - locale, - organizationId, - }, - } = req; - - try { - const data = await fetchDatasets(organizationId, pathname, { - q, - page, - sort, - tags: tags?.split(","), - countries: countries?.split(","), - locale, - }); - - return res.status(200).json(data); - } catch (error) { - return res.status(500).json({ error }); - } -} - -export default async function handler(req, res) { - try { - return await datasets(req, res); - } catch (error) { - return res.status(500).json({ error }); - } -}