import { API_ENDPOINTS } from '@/shared/constants/apiEndpoints';
import { api } from '@/shared/utils/api';
import {
  type AddTicketCollaboratorPayload,
  type TicketCollaborator,
  unwrapCollaboratorList,
  unwrapCollaboratorResource,
} from '@/features/tickets/types/collaborator.types';

export async function fetchTicketCollaborators(ticketId: string): Promise<TicketCollaborator[]> {
  const raw: unknown = await api.get(API_ENDPOINTS.TICKETS.COLLABORATORS(ticketId));
  return unwrapCollaboratorList(raw);
}

export async function addTicketCollaborator(
  ticketId: string,
  payload: AddTicketCollaboratorPayload,
): Promise<TicketCollaborator> {
  const raw: unknown = await api.post(API_ENDPOINTS.TICKETS.COLLABORATORS(ticketId), payload);
  return unwrapCollaboratorResource(
    typeof raw === 'object' && raw !== null && 'data' in raw
      ? (raw as { data: unknown }).data
      : raw,
  );
}

export async function removeTicketCollaborator(ticketId: string, userId: string): Promise<void> {
  await api.delete(API_ENDPOINTS.TICKETS.COLLABORATOR(ticketId, userId));
}
