All files / src toasts.ts

16.66% Statements 2/12
100% Branches 0/0
0% Functions 0/3
10% Lines 1/10

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                                        1x                            
// eslint-disable-next-line no-unused-vars
import { RequestOptions } from './request.js';
// eslint-disable-next-line no-unused-vars
import { Merchi } from './merchi.js';
// eslint-disable-next-line no-unused-vars
import { NotificationSection } from './constants/notification_sections.js';
// eslint-disable-next-line no-unused-vars
import { NotificationType } from './constants/notification_types.js';
 
interface RelatedObj {
  id: number;
  type: string;
}
 
interface ToastOptions {
  entities: RelatedObj[];
  sections: NotificationSection[];
  notificationTypes?: Record<NotificationType, boolean>;
}
 
export const toastNotifications = (merchi: Merchi, options: ToastOptions) => {
  const resource = '/notifications-check-update/';
  const data = new FormData();
  const { entities, sections, notificationTypes } = options;
  data.set('entities', JSON.stringify(entities));
  data.set('sections', JSON.stringify(sections));
  data.set('notificationTypes', JSON.stringify(notificationTypes));
  const fetchOptions: RequestOptions = { method: 'POST', body: data };
  return merchi
    .authenticatedFetch(resource, fetchOptions)
    .then((data: any) =>
      data.notifications.map((n: any) => new merchi.Notification().fromJson(n))
    );
};