瀏覽代碼

Added timeout option for notification component

Alex 2 年之前
父節點
當前提交
44ccb1eec1

+ 1 - 1
web/src/lib/components/shared-components/notification/notification-card.svelte

@@ -51,7 +51,7 @@
 	onMount(() => {
 		setTimeout(() => {
 			notificationController.removeNotificationById(notificationInfo.id);
-		}, 3000);
+		}, notificationInfo.timeout);
 	});
 </script>
 

+ 24 - 5
web/src/lib/components/shared-components/notification/notification.ts

@@ -9,17 +9,36 @@ export class ImmichNotification {
 	id = new Date().getTime();
 	type!: NotificationType;
 	message!: string;
+	timeout = 3000;
 }
 
+export class ImmichNotificationDto {
+	/**
+	 * Notification type
+	 * @type {NotificationType} [Info, Error]
+	 */
+	type: NotificationType = NotificationType.Info;
+
+	/**
+	 * Notification message
+	 */
+	message = '';
+
+	/**
+	 * Timeout in miliseconds
+	 */
+	timeout = 3000;
+}
 function createNotificationList() {
 	const notificationList = writable<ImmichNotification[]>([]);
 
-	const show = ({ message = '', type = NotificationType.Info }) => {
-		const notification = new ImmichNotification();
-		notification.message = message;
-		notification.type = type;
+	const show = (notificationInfo: ImmichNotificationDto) => {
+		const newNotification = new ImmichNotification();
+		newNotification.message = notificationInfo.message;
+		newNotification.type = notificationInfo.type;
+		newNotification.timeout = notificationInfo.timeout;
 
-		notificationList.update((currentList) => [...currentList, notification]);
+		notificationList.update((currentList) => [...currentList, newNotification]);
 	};
 
 	const removeNotificationById = (id: number) => {

+ 2 - 1
web/src/lib/utils/file-uploader.ts

@@ -38,9 +38,10 @@ export const openFileUploadDialog = (uploadType: UploadType) => {
 
 			if (files.length > 50) {
 				notificationController.show({
+					type: NotificationType.Error,
 					message: `Cannot upload more than 50 files at a time - you are uploading ${files.length} files. 
           Please use the CLI tool if you need to upload more than 50 files.`,
-					type: NotificationType.Error
+					timeout: 5000
 				});
 
 				return;