49 lines
1.0 KiB
TypeScript
49 lines
1.0 KiB
TypeScript
import { gql, GraphQLClient } from "graphql-request";
|
|
import { getBaseUrl } from "./gr-client";
|
|
|
|
const CategoriesQuery = gql`
|
|
query Categories {
|
|
settingCategories {
|
|
page {
|
|
id
|
|
title
|
|
slug
|
|
}
|
|
}
|
|
}
|
|
`;
|
|
|
|
export type CategoryPage = {
|
|
id: string;
|
|
title: string;
|
|
slug: string;
|
|
};
|
|
|
|
export type SettingCategory = {
|
|
page: CategoryPage;
|
|
};
|
|
|
|
export type CategoriesData = {
|
|
settingCategories: SettingCategory[];
|
|
};
|
|
|
|
export async function fetchCategories(jwt?: string): Promise<CategoriesData | null> {
|
|
const client = new GraphQLClient(getBaseUrl());
|
|
|
|
if (jwt) {
|
|
client.setHeader('Authorization', `Bearer ${jwt}`);
|
|
}
|
|
|
|
try {
|
|
const response: any = await client.request(CategoriesQuery);
|
|
|
|
if (response?.settingCategories) {
|
|
return response;
|
|
}
|
|
|
|
return null;
|
|
} catch (error) {
|
|
console.error('Failed to fetch categories:', error);
|
|
return null;
|
|
}
|
|
}
|