All files / src/services notificationService.ts

29.78% Statements 14/47
100% Branches 1/1
14.28% Functions 1/7
29.78% Lines 14/47

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 661x                                           1x             1x 2x 2x 2x 2x 2x 2x 2x   1x             1x                   1x             1x      
import { apiDeleteAuth, apiGetAuth, apiPatchAuth } from './api';
import type {
  ListNotificationsResponse,
  MarkAllNotificationsReadResponse,
  UnreadNotificationCountResponse,
} from '@/models/notification';
 
export interface ListNotificationsParams {
  limit?: number;
  cursor?: string | null;
  onlyUnread?: boolean;
}
 
function notificationListEndpoint(params?: ListNotificationsParams): string {
  const query = new URLSearchParams();
  if (params?.limit) query.set('limit', String(params.limit));
  if (params?.cursor) query.set('cursor', params.cursor);
  const path = params?.onlyUnread ? '/me/notifications/unread' : '/me/notifications';
  const serialized = query.toString();
  return serialized ? `${path}?${serialized}` : path;
}
 
export function listNotifications(
  token: string,
  params?: ListNotificationsParams,
): Promise<ListNotificationsResponse> {
  return apiGetAuth<ListNotificationsResponse>(notificationListEndpoint(params), token);
}
 
export function getUnreadNotificationCount(
  token: string,
): Promise<UnreadNotificationCountResponse> {
  return apiGetAuth<UnreadNotificationCountResponse>(
    '/me/notifications/unread-count',
    token,
  );
}
 
export function markNotificationRead(
  notificationId: string,
  token: string,
): Promise<void> {
  return apiPatchAuth<void>(`/me/notifications/${notificationId}/read`, {}, token);
}
 
export function markAllNotificationsRead(
  token: string,
): Promise<MarkAllNotificationsReadResponse> {
  return apiPatchAuth<MarkAllNotificationsReadResponse>(
    '/me/notifications/read',
    {},
    token,
  );
}
 
export function deleteNotification(
  notificationId: string,
  token: string,
): Promise<void> {
  return apiDeleteAuth<void>(`/me/notifications/${notificationId}`, token);
}
 
export function deleteAllNotifications(token: string): Promise<void> {
  return apiDeleteAuth<void>('/me/notifications', token);
}