export const useNotifications = () => useState("notifications", () => []);

export const addNotification = (notification) => {
  const notifications = useNotifications();

  const existingNotif = notifications.value.find(
    (x) =>
      x.text === notification.text &&
      x.title === notification.title &&
      x.type === notification.type,
  );
  if (existingNotif) {
    setNotificationTimer(existingNotif);
    existingNotif.count++;

    return;
  }

  notification.id = new Date();
  notification.count = 1;

  setNotificationTimer(notification);
  notifications.value.push(notification);
};

export const setNotificationTimer = (notification) => {
  if (!notification) return;

  const notifications = useNotifications();

  if (notification.timer) {
    clearTimeout(notification.timer);
  }

  notification.timer = setTimeout(() => {
    notifications.value.splice(notifications.value.indexOf(notification), 1);
  }, 30000);
};
