web(feat): Add support for actions when clicking notifications (#966)

* feat(web): Add button to close notification popups

* feat(web): Add support for actions on notification click

* feat(web): Open CLI docs when clicking asset upload count message

* test(web): Add action field to notification-card tests

* chore(web): Formatting

* feat(web): Allow HTML in notification message

* feat(web): Do not use link element in file upload count notification

* feat(web): Prevent notification discard button from triggering action

* feat(web): Add noop action support for notifications

* chore(web): Remove unused function argument
This commit is contained in:
bo0tzz 2022-11-17 06:11:15 +01:00 committed by GitHub
parent 70cd313082
commit afae5fd972
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 48 additions and 15 deletions

View file

@ -9,9 +9,15 @@ export class ImmichNotification {
id = new Date().getTime();
type!: NotificationType;
message!: string;
action!: NotificationAction;
timeout = 3000;
}
type DiscardAction = { type: 'discard' };
type NoopAction = { type: 'noop' };
type LinkAction = { type: 'link'; target: string };
export type NotificationAction = DiscardAction | NoopAction | LinkAction;
export class ImmichNotificationDto {
/**
* Notification type
@ -28,7 +34,13 @@ export class ImmichNotificationDto {
* Timeout in miliseconds
*/
timeout?: number;
/**
* The action to take when the notification is clicked
*/
action?: NotificationAction;
}
function createNotificationList() {
const notificationList = writable<ImmichNotification[]>([]);
@ -37,6 +49,7 @@ function createNotificationList() {
newNotification.message = notificationInfo.message;
newNotification.type = notificationInfo.type;
newNotification.timeout = notificationInfo.timeout || 3000;
newNotification.action = notificationInfo.action || { type: 'discard' };
notificationList.update((currentList) => [...currentList, newNotification]);
};