import type { NotificationListResult } from "@edr/types";

import { api } from "@/auth/http";

export interface ListNotificationsParams {
  page?: number;
  limit?: number;
  isRead?: boolean;
}

/**
 * Backoffice notification REST calls. The backoffice axios `api` response
 * interceptor already unwraps the `{ success, data }` envelope, so `.data` here
 * is the payload itself.
 */
export const notificationsApi = {
  list: async (
    params: ListNotificationsParams = {},
  ): Promise<NotificationListResult> => {
    const { data } = await api.get<NotificationListResult>("/notifications", {
      params,
    });
    return data;
  },
  unreadCount: async (): Promise<number> => {
    const { data } = await api.get<{ unreadCount: number }>(
      "/notifications/unread-count",
    );
    return data.unreadCount;
  },
  markRead: async (id: string): Promise<void> => {
    await api.patch(`/notifications/${id}/read`);
  },
  markAllRead: async (): Promise<void> => {
    await api.post("/notifications/read-all");
  },
};
