api ulandi

This commit is contained in:
Samandar Turgunboyev
2025-10-25 18:42:01 +05:00
parent 1a08775451
commit 05b752daf2
84 changed files with 11179 additions and 3724 deletions

View File

@@ -1,32 +1,75 @@
import type { NewsType } from "@/pages/news/lib/type";
import type {
GetAllNewsCategory,
GetDetailNewsCategory,
NewsAll,
} from "@/pages/news/lib/type";
import httpClient from "@/shared/config/api/httpClient";
import { NEWS, NEWS_CATEGORY } from "@/shared/config/api/URLs";
import type { AxiosResponse } from "axios";
const STORAGE_KEY = "news_data";
export const getAllNews = (): NewsType[] => {
const data = localStorage.getItem(STORAGE_KEY);
return data ? JSON.parse(data) : [];
const getAllNews = async ({
page,
page_size,
}: {
page: number;
page_size: number;
}): Promise<AxiosResponse<NewsAll>> => {
const response = await httpClient.get(NEWS, { params: { page, page_size } });
return response;
};
export const addNews = (news: Omit<NewsType, "id" | "createdAt">) => {
const all = getAllNews();
const newNews: NewsType = {
id: "1",
createdAt: new Date().toISOString(),
...news,
};
localStorage.setItem(STORAGE_KEY, JSON.stringify([newNews, ...all]));
const addNews = async (body: FormData) => {
const response = await httpClient.post(NEWS, body, {
headers: {
"Content-Type": "multipart/form-data",
},
});
return response;
};
export const updateNews = (id: string, updated: Partial<NewsType>) => {
const all = getAllNews().map((n) => (n.id === id ? { ...n, ...updated } : n));
localStorage.setItem(STORAGE_KEY, JSON.stringify(all));
// category news
const getAllNewsCategory = async (params: {
page: number;
page_size: number;
}): Promise<AxiosResponse<GetAllNewsCategory>> => {
const res = await httpClient.get(NEWS_CATEGORY, { params });
return res;
};
export const deleteNews = (id: string) => {
const filtered = getAllNews().filter((n) => n.id !== id);
localStorage.setItem(STORAGE_KEY, JSON.stringify(filtered));
const getDetailNewsCategory = async (
id: number,
): Promise<AxiosResponse<GetDetailNewsCategory>> => {
const res = await httpClient.get(`${NEWS_CATEGORY}${id}/`);
return res;
};
export const getNewsById = (id: string) => {
return getAllNews().find((n) => n.id === id);
const addNewsCategory = async (body: { name: string; name_ru: string }) => {
const res = await httpClient.post(NEWS_CATEGORY, body);
return res;
};
const updateNewsCategory = async ({
body,
id,
}: {
body: { name: string; name_ru: string };
id: number;
}) => {
const res = await httpClient.patch(`${NEWS_CATEGORY}${id}/`, body);
return res;
};
const deleteNewsCategory = async (id: number) => {
const res = await httpClient.delete(`${NEWS_CATEGORY}${id}/`);
return res;
};
export {
addNews,
addNewsCategory,
deleteNewsCategory,
getAllNews,
getAllNewsCategory,
getDetailNewsCategory,
updateNewsCategory,
};