Files
SSA-Admin-Panel/src/Redux/Service/template.master.service.ts
rockyeverlast f2d101ef16 Bug fixes
2025-07-03 16:08:52 +05:30

112 lines
2.5 KiB
TypeScript

import { createApi } from "@reduxjs/toolkit/query/react";
import { baseQueryWithReauth } from "./apiSlice";
interface TemplateResponse {
status: string;
status_code: number;
message: string;
data: PaginationData;
}
interface PaginationData {
current_page: number;
data: Template[];
first_page_url: string;
from: number;
last_page: number;
last_page_url: string;
links: PaginationLink[];
next_page_url: string | null;
path: string;
per_page: number;
prev_page_url: string | null;
to: number;
total: number;
}
export interface Template {
id: number;
is_active: boolean;
principle_type_xid: number;
post_template_translate: PostTemplateTranslate[];
post_template_image: PostTemplateImage[];
}
export interface PostTemplateTranslate {
id: number;
title: string;
sub_title: string;
post_template_xid: number;
}
interface PostTemplateImage {
id: number;
post_template_xid: number;
image_name: string;
}
interface PaginationLink {
url: string | null;
label: string;
active: boolean;
}
export interface Post {
id: number,
principle_type_xid: number,
title: string,
sub_title: string,
image_name: string[]
}
export const templateMaster = createApi({
reducerPath: "templateMaster",
baseQuery: baseQueryWithReauth, // Use enhanced baseQuery with error handling
endpoints: (builder) => ({
createTemplatePost: builder.mutation<Post, FormData>({
query: (data) => ({
url: "/template-store",
method: "POST",
body: data,
headers: {
Authorization: `Bearer ${localStorage.getItem("token")}`,
},
}),
}),
// 🔹 GET: Fetch all posts
getTemplateMaster: builder.query<TemplateResponse, number>({
query: (page = 1) => `/template-master?page=${page}`,
}),
updateTemplateMaster: builder.mutation<Post, FormData>({
query: (updatedData) => {
const token = localStorage.getItem("token");
return {
url: "/template-update",
method: "POST",
body: updatedData,
headers: {
'access-token': `${token}`,
},
};
},
}),
templateMasterToggle: builder.mutation({
query: ({ id, is_active }) => ({
url: `/template-status`,
method: "POST",
body: { id, is_active },
}),
}),
}),
});
export const {
useGetTemplateMasterQuery,
useCreateTemplatePostMutation,
useUpdateTemplateMasterMutation,
useTemplateMasterToggleMutation,
} = templateMaster;