| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | async function fetchAPI(query, { variables } = { variables: null }) { |
| | const res = await fetch( |
| | process.env.NEXT_PUBLIC_DOTCMS_HOST + "/api/v1/graphql", |
| | { |
| | method: "POST", |
| | headers: { |
| | "Content-Type": "application/json", |
| | Authorization: `Bearer ${process.env.DOTCMS_TOKEN}`, |
| | }, |
| | body: JSON.stringify({ |
| | query, |
| | variables, |
| | }), |
| | }, |
| | ); |
| |
|
| | const json = await res.json(); |
| |
|
| | if (json.errors) { |
| | console.error(json.errors); |
| | throw new Error("Failed to fetch API"); |
| | } |
| |
|
| | return json.data; |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | const showPreviewPosts = (preview) => { |
| | return preview === true |
| | ? "+working:true +deleted:false" |
| | : "+live:true +deleted:false"; |
| | }; |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | export async function getPostAndMorePosts(slug, preview) { |
| | const data = await fetchAPI( |
| | ` |
| | query PostBySlug($query: String!, $morePostsQuery: String!) { |
| | post: BlogCollection(query: $query, limit: 1) { |
| | title |
| | urlTitle |
| | blogContent { |
| | json |
| | } |
| | postingDate |
| | image { |
| | idPath |
| | } |
| | author { |
| | firstName |
| | lastName |
| | profilePhoto { |
| | idPath |
| | } |
| | } |
| | } |
| | |
| | morePosts: BlogCollection(query: $morePostsQuery, limit: 2) { |
| | title |
| | urlTitle |
| | teaser |
| | postingDate |
| | image { |
| | idPath |
| | } |
| | author { |
| | firstName |
| | lastName |
| | profilePhoto { |
| | idPath |
| | } |
| | } |
| | } |
| | } |
| | `, |
| | { |
| | variables: { |
| | query: `+urlmap:/blog/post/${slug} ${showPreviewPosts(preview)}`, |
| | morePostsQuery: `-urlmap:/blog/post/${slug} ${showPreviewPosts( |
| | preview, |
| | )}`, |
| | }, |
| | }, |
| | ); |
| | return { |
| | post: data?.post[0] ?? {}, |
| | morePosts: data?.morePosts ?? [], |
| | }; |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | export async function getPreviewPostBySlug(slug, isPreview) { |
| | return await getPostAndMorePosts(slug, isPreview); |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | export async function getAllPostsWithSlug() { |
| | const entries = await fetchAPI(` |
| | query getAllPostsWithSlug { |
| | BlogCollection(query: "+live:true +deleted:false") { |
| | urlTitle |
| | } |
| | } |
| | `); |
| |
|
| | return entries?.BlogCollection ?? []; |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | export async function getAllPostsForHome(preview) { |
| | const entries = await fetchAPI( |
| | ` |
| | query getAllPostsForHome($query: String!) { |
| | BlogCollection(query: $query) { |
| | title |
| | teaser |
| | postingDate |
| | author { |
| | firstName |
| | lastName |
| | profilePhoto { |
| | idPath |
| | } |
| | } |
| | urlTitle |
| | image { |
| | idPath |
| | } |
| | } |
| | } |
| | `, |
| | { |
| | variables: { |
| | query: `${showPreviewPosts(preview)}`, |
| | }, |
| | }, |
| | ); |
| | return entries?.BlogCollection ?? []; |
| | } |
| |
|