mirror of
https://github.com/chillpadclub/bedolaga-cabinet.git
synced 2026-07-28 17:43:47 +00:00
- Remove legacy .eslintrc.cjs and .eslintignore - Add eslint.config.js with flat config, security rules (no-eval, no-implied-eval, no-new-func, no-script-url) - Add .prettierrc and .prettierignore - Format entire codebase with prettier
81 lines
2.6 KiB
TypeScript
81 lines
2.6 KiB
TypeScript
import apiClient from './client';
|
|
import type { TicketNotificationList, UnreadCountResponse } from '../types';
|
|
|
|
export const ticketNotificationsApi = {
|
|
// User notifications
|
|
getNotifications: async (
|
|
unreadOnly = false,
|
|
limit = 50,
|
|
offset = 0,
|
|
): Promise<TicketNotificationList> => {
|
|
const response = await apiClient.get('/cabinet/tickets/notifications', {
|
|
params: { unread_only: unreadOnly, limit, offset },
|
|
});
|
|
return response.data;
|
|
},
|
|
|
|
getUnreadCount: async (): Promise<UnreadCountResponse> => {
|
|
const response = await apiClient.get('/cabinet/tickets/notifications/unread-count');
|
|
return response.data;
|
|
},
|
|
|
|
markAsRead: async (notificationId: number): Promise<{ success: boolean }> => {
|
|
const response = await apiClient.post(`/cabinet/tickets/notifications/${notificationId}/read`);
|
|
return response.data;
|
|
},
|
|
|
|
markAllAsRead: async (): Promise<{ success: boolean; marked_count: number }> => {
|
|
const response = await apiClient.post('/cabinet/tickets/notifications/read-all');
|
|
return response.data;
|
|
},
|
|
|
|
markTicketAsRead: async (
|
|
ticketId: number,
|
|
): Promise<{ success: boolean; marked_count: number }> => {
|
|
const response = await apiClient.post(`/cabinet/tickets/notifications/ticket/${ticketId}/read`);
|
|
return response.data;
|
|
},
|
|
|
|
// Admin notifications
|
|
getAdminNotifications: async (
|
|
unreadOnly = false,
|
|
limit = 50,
|
|
offset = 0,
|
|
): Promise<TicketNotificationList> => {
|
|
const params: Record<string, unknown> = { limit, offset };
|
|
if (unreadOnly) {
|
|
params.unread_only = true;
|
|
}
|
|
const response = await apiClient.get('/cabinet/admin/tickets/notifications', { params });
|
|
return response.data;
|
|
},
|
|
|
|
getAdminUnreadCount: async (): Promise<UnreadCountResponse> => {
|
|
const response = await apiClient.get('/cabinet/admin/tickets/notifications/unread-count');
|
|
return response.data;
|
|
},
|
|
|
|
markAdminAsRead: async (notificationId: number): Promise<{ success: boolean }> => {
|
|
const response = await apiClient.post(
|
|
`/cabinet/admin/tickets/notifications/${notificationId}/read`,
|
|
);
|
|
return response.data;
|
|
},
|
|
|
|
markAllAdminAsRead: async (): Promise<{ success: boolean; marked_count: number }> => {
|
|
const response = await apiClient.post('/cabinet/admin/tickets/notifications/read-all');
|
|
return response.data;
|
|
},
|
|
|
|
markAdminTicketAsRead: async (
|
|
ticketId: number,
|
|
): Promise<{ success: boolean; marked_count: number }> => {
|
|
const response = await apiClient.post(
|
|
`/cabinet/admin/tickets/notifications/ticket/${ticketId}/read`,
|
|
);
|
|
return response.data;
|
|
},
|
|
};
|
|
|
|
export default ticketNotificationsApi;
|