From 7f95231dd7daad4ee047bd4e62116ea3174c773b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Aaron=20D=C3=B6tsch?= <aaron@fsmpi.rwth-aachen.de>
Date: Mon, 7 Aug 2023 21:26:11 +0200
Subject: [PATCH] Simplify notification handler

---
 src/lib/server/notifications/handler.ts | 45 +++++++++----------------
 1 file changed, 16 insertions(+), 29 deletions(-)

diff --git a/src/lib/server/notifications/handler.ts b/src/lib/server/notifications/handler.ts
index 908bae1..830b6c6 100644
--- a/src/lib/server/notifications/handler.ts
+++ b/src/lib/server/notifications/handler.ts
@@ -15,35 +15,22 @@ export async function sendNotification<T extends PossibleNotificationType>(user:
 		notificationChannels = await getNotificationChannels(userId, type.key);
 	}
 	return Promise.all(notificationChannels.map(channel => {
-		switch(channel.channelType){
-			case ChannelType.EMAIL.key: {
-				return ChannelType.EMAIL.handler(channel.recipient, type, data)
-						.catch(err => {
-							return {
-								status: "error",
-								channel,
-								error: err
-							} as HandlerReturnError;
-						});
-			}
-			case ChannelType.WEBHOOK.key: {
-				return ChannelType.WEBHOOK.handler(channel.recipient, type, data)
-						.catch(err => {
-							return {
-								status: "error",
-								channel,
-								error: err
-							} as HandlerReturnError;
-						});
-			}
-			default: {
-				console.error(`Unknown channel type`, channel.channelType);
-				return {
-					status: "ignored",
-					channel
-				} as HandlerReturnIgnored;
-			}
-		};
+		const channelType = Object.values(ChannelType).find(type => type.key === channel.channelType);
+		if(!channelType){
+			console.error(`Unknown channel type`, channel.channelType);
+			return {
+				status: "ignored",
+				channel
+			} as HandlerReturnIgnored;
+		}
+		return channelType.handler(channel.recipient, type, data)
+				.catch(err => {
+					return {
+						status: "error",
+						channel,
+						error: err
+					} as HandlerReturnError;
+				});
 	}));
 };
 
-- 
GitLab