4466ba436b
## Description This PR ensures that the default prettier config is used for examples and templates. This config is compatible with `prettier@3` as well (upgrading prettier is bigger change that can be a future PR). ## Changes - Updated `.prettierrc.json` in root with `"trailingComma": "es5"` (will be needed upgrading to prettier@3) - Added `examples/.prettierrc.json` with default config (this will change every example) - Added `packages/create-next-app/templates/.prettierrc.json` with default config (this will change every template) ## Related - Fixes #54402 - Closes #54409
140 lines
3.1 KiB
JavaScript
140 lines
3.1 KiB
JavaScript
import Butter from "buttercms";
|
|
|
|
let butter;
|
|
|
|
const previewSetting = process.env.PREVIEW;
|
|
// make preview mode by default
|
|
const preview =
|
|
previewSetting === "true" || previewSetting === undefined ? 1 : 0;
|
|
|
|
try {
|
|
butter = Butter(process.env.NEXT_PUBLIC_BUTTER_CMS_API_KEY, preview);
|
|
} catch (e) {
|
|
console.log(e);
|
|
}
|
|
|
|
const defaultPageSize = 100;
|
|
const defaultPostCount = 10;
|
|
|
|
async function getLandingPagesData(page, pageSize = defaultPageSize) {
|
|
try {
|
|
const params = {
|
|
page,
|
|
page_size: pageSize,
|
|
};
|
|
const response = await butter.page.list("landing-page", params);
|
|
|
|
return {
|
|
pages: response?.data?.data,
|
|
prevPage: response?.data?.meta.previous_page,
|
|
nextPage: response?.data?.meta.next_page,
|
|
};
|
|
} catch (e) {
|
|
throw e.response.data.detail;
|
|
}
|
|
}
|
|
|
|
export async function getLandingPage(slug) {
|
|
try {
|
|
const page = await butter.page.retrieve("landing-page", slug);
|
|
|
|
return page?.data?.data;
|
|
} catch (e) {
|
|
throw e.response.data.detail;
|
|
}
|
|
}
|
|
|
|
export async function getLandingPages() {
|
|
let paginatedLandingPages = [];
|
|
let currentPage = 1;
|
|
while (!!currentPage) {
|
|
const landingPagesData = await getLandingPagesData(currentPage);
|
|
paginatedLandingPages.push(...landingPagesData.pages);
|
|
currentPage = landingPagesData.nextPage;
|
|
}
|
|
|
|
return paginatedLandingPages;
|
|
}
|
|
|
|
export async function getPostsData(
|
|
{ page, pageSize, tag, category } = { page: 1, pageSize: defaultPostCount },
|
|
) {
|
|
try {
|
|
// https://buttercms.com/docs/api/node?javascript#get-your-blog-posts
|
|
const params = {
|
|
page_size: pageSize || defaultPostCount,
|
|
page: page || 1,
|
|
};
|
|
|
|
if (tag) {
|
|
params.tag_slug = tag;
|
|
}
|
|
|
|
if (category) {
|
|
params.category_slug = category;
|
|
}
|
|
const response = await butter.post.list(params);
|
|
|
|
return {
|
|
posts: response?.data?.data,
|
|
prevPage: response?.data?.meta.previous_page,
|
|
nextPage: response?.data?.meta.next_page,
|
|
};
|
|
} catch (e) {
|
|
throw e.response.data.detail;
|
|
}
|
|
}
|
|
|
|
export async function getPost(slug) {
|
|
try {
|
|
const response = await butter.post.retrieve(slug);
|
|
|
|
return response?.data?.data;
|
|
} catch (e) {
|
|
throw e.response.data.detail;
|
|
}
|
|
}
|
|
|
|
export async function getMainMenu() {
|
|
try {
|
|
const response = await butter.content.retrieve(["navigation_menu"]);
|
|
|
|
const mainMenu = response?.data?.data?.navigation_menu.find(
|
|
(menu) => menu.name === "Main menu",
|
|
);
|
|
|
|
return mainMenu ? mainMenu.menu_items : [];
|
|
} catch (e) {
|
|
throw e.response.data.detail;
|
|
}
|
|
}
|
|
|
|
export async function getCategories() {
|
|
try {
|
|
const response = await butter.category.list();
|
|
|
|
return response?.data?.data;
|
|
} catch (e) {
|
|
throw e.response.data.detail;
|
|
}
|
|
}
|
|
|
|
export async function getTags() {
|
|
try {
|
|
const response = await butter.tag.list();
|
|
|
|
return response?.data?.data;
|
|
} catch (e) {
|
|
throw e.response.data.detail;
|
|
}
|
|
}
|
|
|
|
export async function searchPosts({ query }) {
|
|
try {
|
|
const response = await butter.post.search(query);
|
|
|
|
return response?.data?.data;
|
|
} catch (e) {
|
|
throw e.response.data.detail;
|
|
}
|
|
}
|