(
+
+ Webhook URL
+
+
+
+
+
+ )}
+ />
+ >
+ )}
@@ -1152,7 +1210,8 @@ export const HandleNotifications = ({ notificationId }: Props) => {
isLoadingDiscord ||
isLoadingEmail ||
isLoadingGotify ||
- isLoadingNtfy
+ isLoadingNtfy ||
+ isLoadingLark
}
variant="secondary"
onClick={async () => {
@@ -1196,6 +1255,10 @@ export const HandleNotifications = ({ notificationId }: Props) => {
accessToken: form.getValues("accessToken"),
priority: form.getValues("priority"),
});
+ } else if (type === "lark") {
+ await testLarkConnection({
+ webhookUrl: form.getValues("webhookUrl"),
+ });
}
toast.success("Connection Success");
} catch {
diff --git a/apps/dokploy/components/dashboard/settings/notifications/show-notifications.tsx b/apps/dokploy/components/dashboard/settings/notifications/show-notifications.tsx
index 7cb1928d2..5b7a2220e 100644
--- a/apps/dokploy/components/dashboard/settings/notifications/show-notifications.tsx
+++ b/apps/dokploy/components/dashboard/settings/notifications/show-notifications.tsx
@@ -1,8 +1,9 @@
-import { Bell, Loader2, Mail, MessageCircleMore, Trash2 } from "lucide-react";
+import { Bell, Loader2, Mail, Trash2 } from "lucide-react";
import { toast } from "sonner";
import {
DiscordIcon,
GotifyIcon,
+ LarkIcon,
NtfyIcon,
SlackIcon,
TelegramIcon,
@@ -35,7 +36,7 @@ export const ShowNotifications = () => {
Add your providers to receive notifications, like Discord, Slack,
- Telegram, Email.
+ Telegram, Email, Lark.
@@ -95,6 +96,11 @@ export const ShowNotifications = () => {
)}
+ {notification.notificationType === "lark" && (
+
+
+
+ )}
{notification.name}
diff --git a/apps/dokploy/components/icons/notification-icons.tsx b/apps/dokploy/components/icons/notification-icons.tsx
index 581788f28..cc54327a8 100644
--- a/apps/dokploy/components/icons/notification-icons.tsx
+++ b/apps/dokploy/components/icons/notification-icons.tsx
@@ -88,7 +88,32 @@ export const DiscordIcon = ({ className }: Props) => {
);
};
-
+export const LarkIcon = ({ className }: Props) => {
+ return (
+
+ );
+};
export const GotifyIcon = ({ className }: Props) => {
return (