Working on implementation of alert policies. Some refactoring in user profile and patching a bug in status endpoint api.

This commit is contained in:
charlesgauthereau
2025-11-28 23:10:37 +01:00
parent d968aa9c16
commit 934e635cdb
29 changed files with 3364 additions and 1551 deletions
@@ -43,7 +43,7 @@ export const NotifierAddEditModal = ({
</Button>
}
</DialogTrigger>
<DialogContent>
<DialogContent onOpenAutoFocus={(e) => e.preventDefault()}>
<DialogHeader>
<DialogTitle> {isCreate ? "Add" : "Edit"} Notification Channel</DialogTitle>
<DialogDescription>
@@ -33,7 +33,7 @@ export const DeleteNotifierButton = ({notificationChannelId, organizationId}: De
return (
<ButtonWithConfirm
title="Delete Notifier"
description="Are you sure you want to remove this notifier? This action cannot be undone."
description="Are you sure you want to remove this notifier ? This action cannot be undone and will delete all alert policies related to this channel !"
button={{
main: {
size: "icon",
@@ -153,7 +153,7 @@ export const updateNotificationChannelAction = userAction.schema(
config: channel.config as JSON
},
actionSuccess: {
message: "Notification channel has been successfully updated.",
message: `Notification channel "${channel.name}" has been successfully updated.`,
messageParams: {notificationChannelId: channel.id},
},
};
@@ -25,6 +25,7 @@ import {NotificationChannel} from "@/db/schema/09_notification-channel";
import {
NotifierTestChannelButton
} from "@/components/wrappers/dashboard/common/notifier/notifier-form/notifier-test-channel-button";
import {useEffect} from "react";
type NotifierFormProps = {
onSuccessAction?: () => void;
@@ -35,16 +36,17 @@ type NotifierFormProps = {
export const NotifierForm = ({onSuccessAction, organization, defaultValues}: NotifierFormProps) => {
const isCreate = !Boolean(defaultValues);
const router = useRouter();
const form = useZodForm({
schema: NotificationChannelFormSchema,
// @ts-ignore
defaultValues: {...defaultValues},
});
useEffect(() => {
form.reset(defaultValues ? {...defaultValues} : {});
}, [defaultValues]);
const mutationCreateOrganisation = useMutation({
mutationFn: async (values: NotificationChannelFormType) => {
@@ -60,11 +62,11 @@ export const NotifierForm = ({onSuccessAction, organization, defaultValues}: Not
if (inner?.success) {
toast.success(inner.actionSuccess?.message);
onSuccessAction?.();
isCreate && onSuccessAction?.();
router.refresh();
} else {
toast.error(inner?.actionError?.message);
onSuccessAction?.();
isCreate && onSuccessAction?.();
}
}
});
@@ -112,8 +114,8 @@ export const NotifierForm = ({onSuccessAction, organization, defaultValues}: Not
<SelectContent>
<SelectItem value="smtp">SMTP (Email)</SelectItem>
<SelectItem value="slack">Slack</SelectItem>
<SelectItem value="curl">Curl</SelectItem>
<SelectItem value="webhook">Webhook</SelectItem>
{/*<SelectItem value="curl">Curl</SelectItem>*/}
{/*<SelectItem value="webhook">Webhook</SelectItem>*/}
</SelectContent>
</Select>
</FormControl>
@@ -137,7 +139,7 @@ export const NotifierForm = ({onSuccessAction, organization, defaultValues}: Not
<NotifierTestChannelButton notificationChannel={defaultValues}/>
)}
</div>
<div className="flex gap-2 ">
<div className="flex gap-2">
<Button
type="button"
variant="outline"
@@ -149,7 +151,7 @@ export const NotifierForm = ({onSuccessAction, organization, defaultValues}: Not
Cancel
</Button>
<ButtonWithLoading isPending={mutationCreateOrganisation.isPending}>
Add Channel
{isCreate ? "Add" : "Save"} Channel
</ButtonWithLoading>
</div>
@@ -2,6 +2,7 @@
import {UseFormReturn} from "react-hook-form";
import {FormControl, FormField, FormItem, FormLabel, FormMessage} from "@/components/ui/form";
import {Input} from "@/components/ui/input";
import {Separator} from "@/components/ui/separator";
type NotifierSmtpFormProps = {
@@ -11,6 +12,7 @@ type NotifierSmtpFormProps = {
export const NotifierSlackForm = ({form}: NotifierSmtpFormProps) => {
return(
<>
<Separator className="my-1"/>
<FormField
control={form.control}
name="config.slackWebhook"
@@ -13,7 +13,7 @@ type NotifierSmtpFormProps = {
export const NotifierSmtpForm = ({form}: NotifierSmtpFormProps) => {
return (
<>
<Separator className="my-4"/>
<Separator className="my-1"/>
<FormField
control={form.control}
name="config.host"