feat: add admin legal pages api client and display mode types

This commit is contained in:
Boris Kovalskii
2026-06-11 09:01:06 +10:00
parent 92198854b2
commit e979aa8863
3 changed files with 170 additions and 0 deletions

152
src/api/adminLegalPages.ts Normal file
View File

@@ -0,0 +1,152 @@
import apiClient from './client';
export type LegalDisplayMode = 'bot' | 'web' | 'both';
export interface LegalDocumentItem {
language: string;
content: string;
is_enabled: boolean;
updated_at: string | null;
}
export interface LegalDocumentResponse {
display_mode: LegalDisplayMode;
display_mode_env_locked: boolean;
items: LegalDocumentItem[];
}
export interface LegalDocumentUpdateRequest {
display_mode?: LegalDisplayMode;
items?: Array<{ language: string; content: string; is_enabled: boolean }>;
}
export interface RulesItem {
language: string;
content: string;
updated_at: string | null;
}
export interface RulesResponse {
display_mode: LegalDisplayMode;
display_mode_env_locked: boolean;
items: RulesItem[];
}
export interface RulesUpdateRequest {
display_mode?: LegalDisplayMode;
items?: Array<{ language: string; content: string }>;
}
export interface FaqSettingItem {
language: string;
is_enabled: boolean;
}
export interface FaqPageItem {
id: number;
language: string;
title: string;
content: string;
display_order: number;
is_active: boolean;
updated_at: string | null;
}
export interface FaqResponse {
display_mode: LegalDisplayMode;
display_mode_env_locked: boolean;
settings: FaqSettingItem[];
pages: FaqPageItem[];
}
export interface FaqUpdateRequest {
display_mode?: LegalDisplayMode;
settings?: FaqSettingItem[];
}
export interface FaqPageCreateRequest {
language: string;
title: string;
content: string;
display_order?: number;
is_active?: boolean;
}
export interface FaqPageUpdateRequest {
title?: string;
content?: string;
display_order?: number;
is_active?: boolean;
}
export const adminLegalPagesApi = {
getPrivacyPolicy: async (): Promise<LegalDocumentResponse> => {
const response = await apiClient.get<LegalDocumentResponse>(
'/cabinet/admin/legal-pages/privacy-policy',
);
return response.data;
},
updatePrivacyPolicy: async (data: LegalDocumentUpdateRequest): Promise<LegalDocumentResponse> => {
const response = await apiClient.put<LegalDocumentResponse>(
'/cabinet/admin/legal-pages/privacy-policy',
data,
);
return response.data;
},
getPublicOffer: async (): Promise<LegalDocumentResponse> => {
const response = await apiClient.get<LegalDocumentResponse>(
'/cabinet/admin/legal-pages/public-offer',
);
return response.data;
},
updatePublicOffer: async (data: LegalDocumentUpdateRequest): Promise<LegalDocumentResponse> => {
const response = await apiClient.put<LegalDocumentResponse>(
'/cabinet/admin/legal-pages/public-offer',
data,
);
return response.data;
},
getRules: async (): Promise<RulesResponse> => {
const response = await apiClient.get<RulesResponse>('/cabinet/admin/legal-pages/rules');
return response.data;
},
updateRules: async (data: RulesUpdateRequest): Promise<RulesResponse> => {
const response = await apiClient.put<RulesResponse>('/cabinet/admin/legal-pages/rules', data);
return response.data;
},
getFaq: async (): Promise<FaqResponse> => {
const response = await apiClient.get<FaqResponse>('/cabinet/admin/legal-pages/faq');
return response.data;
},
updateFaq: async (data: FaqUpdateRequest): Promise<FaqResponse> => {
const response = await apiClient.put<FaqResponse>('/cabinet/admin/legal-pages/faq', data);
return response.data;
},
createFaqPage: async (data: FaqPageCreateRequest): Promise<FaqPageItem> => {
const response = await apiClient.post<FaqPageItem>(
'/cabinet/admin/legal-pages/faq/pages',
data,
);
return response.data;
},
updateFaqPage: async (id: number, data: FaqPageUpdateRequest): Promise<FaqPageItem> => {
const response = await apiClient.put<FaqPageItem>(
`/cabinet/admin/legal-pages/faq/pages/${id}`,
data,
);
return response.data;
},
deleteFaqPage: async (id: number): Promise<void> => {
await apiClient.delete(`/cabinet/admin/legal-pages/faq/pages/${id}`);
},
};