immich/web/src/lib/components/shared-components/notification/notification.ts
Alex f9b1b12b10
Implement notification box for web (#533)
* Added test button

* styling notification box

* Added auto dismission and animation to each notificaiont list

* Remove test button
2022-08-25 23:04:23 -07:00

36 lines
814 B
TypeScript

import { writable } from 'svelte/store';
export enum NotificationType {
Info = 'Info',
Error = 'Error'
}
export class ImmichNotification {
id = new Date().getTime();
type!: NotificationType;
message!: string;
}
function createNotificationList() {
const { set, update, subscribe } = writable<ImmichNotification[]>([]);
const show = ({ message = '', type = NotificationType.Info }) => {
const notification = new ImmichNotification();
notification.message = message;
notification.type = type;
update((currentList) => [...currentList, notification]);
};
const removeNotificationById = (id: number) => {
update((currentList) => currentList.filter((n) => n.id != id));
};
return {
show,
removeNotificationById,
subscribe
};
}
export const notificationList = createNotificationList();