refactor(notifications): reorganize into components/types/utils

This commit is contained in:
Théo LAGACHE
2026-06-23 16:06:17 +02:00
parent 80e468b26d
commit 740a58679e
24 changed files with 27 additions and 27 deletions
@@ -1,7 +1,7 @@
import {PageParams} from "@/types/next";
import {Page, PageContent, PageHeader, PageTitle} from "@/features/layout/components/page";
import {Metadata} from "next";
import {NotificationLogsList} from "@/features/notifications/notification-logs-list";
import {NotificationLogsList} from "@/features/notifications/components/notification-logs-list";
import {notFound} from "next/navigation";
import {getNotificationHistory} from "@/db/services/notification-log";
+2 -2
View File
@@ -6,8 +6,8 @@ import {getDatabaseOrThrow, withAgentCheck} from "./helpers";
import {Backup} from "@/db/schema/07_database";
import {withUpdatedAt} from "@/db/utils";
import {eventEmitter} from "@/lib/event";
import {sendNotificationsBackupRestore} from "@/features/notifications/notifications.helpers";
import {EventKind} from "@/features/notifications/notifications.types";
import {sendNotificationsBackupRestore} from "@/features/notifications/utils/notifications.helpers";
import {EventKind} from "@/features/notifications/types";
import {logger} from "@/lib/logger";
import {JobLogEntry} from "@/features/logs/types";
+1 -1
View File
@@ -2,7 +2,7 @@ import { NextResponse } from "next/server";
import * as drizzleDb from "@/db";
import { db as dbClient, db } from "@/db";
import { and, eq } from "drizzle-orm";
import { sendNotificationsBackupRestore } from "@/features/notifications/notifications.helpers";
import { sendNotificationsBackupRestore } from "@/features/notifications/utils/notifications.helpers";
import { logger } from "@/lib/logger";
import { withUpdatedAt } from "@/db/utils";
import { JobLogEntry } from "@/features/logs/types";
+2 -2
View File
@@ -1,7 +1,7 @@
// import * as React from "react";
// import EmailLayout from "./email-layout";
// import {Text, Section, Button} from "@react-email/components";
// import type {EventPayload} from "@/features/notifications/notifications.types";
// import type {EventPayload} from "@/features/notifications/types";
//
// export interface EmailNotificationProps {
// payload: EventPayload
@@ -48,7 +48,7 @@
import * as React from "react";
import EmailLayout from "./email-layout";
import {Text, Section, Button} from "@react-email/components";
import type {EventPayload} from "@/features/notifications/notifications.types";
import type {EventPayload} from "@/features/notifications/types";
export interface EmailNotificationProps {
payload: EventPayload;
+2 -2
View File
@@ -3,8 +3,8 @@
import { db } from "@/db";
import * as drizzleDb from "@/db";
import { and, eq, gte, isNotNull, lt } from "drizzle-orm";
import { dispatchNotification } from "@/features/notifications/notifications.dispatch";
import { EventPayload } from "@/features/notifications/notifications.types";
import { dispatchNotification } from "@/features/notifications/utils/notifications.dispatch";
import { EventPayload } from "@/features/notifications/types";
import { logger } from "@/lib/logger";
const log = logger.child({ module: "tasks/healthcheck" });
@@ -6,8 +6,8 @@ import {toast} from "sonner";
import {Button} from "@/components/ui/button";
import {NotificationChannel} from "@/db/schema/09_notification-channel";
import {dispatchNotification} from "@/features/notifications/notifications.dispatch";
import {EventPayload} from "@/features/notifications/notifications.types";
import {dispatchNotification} from "@/features/notifications/utils/notifications.dispatch";
import {EventPayload} from "@/features/notifications/types";
import {useIsMobile} from "@/hooks/use-mobile";
import {cn} from "@/lib/utils";
import {StorageChannel} from "@/db/schema/12_storage-channel";
@@ -1,4 +1,4 @@
import type {EventPayload, DispatchResult} from '@/features/notifications/notifications.types';
import type {EventPayload, DispatchResult} from '@/features/notifications/types';
export async function sendDiscord(
config: { discordWebhook: string },
@@ -1,4 +1,4 @@
import type {EventPayload, DispatchResult} from '@/features/notifications/notifications.types';
import type {EventPayload, DispatchResult} from '@/features/notifications/types';
export async function sendGotify(
config: { gotifyServerUrl: string; gotifyAppToken: string },
@@ -1,5 +1,5 @@
"use server"
import type {ProviderKind, EventPayload, DispatchResult} from '@/features/notifications/notifications.types';
import type {ProviderKind, EventPayload, DispatchResult} from '@/features/notifications/types';
import {sendSlack} from './slack';
import {sendSmtp} from './smtp';
import {sendDiscord} from "@/features/channel/components/notifications/discord";
@@ -1,5 +1,5 @@
import { createHmac, randomBytes } from "crypto";
import type { EventPayload, DispatchResult } from '@/features/notifications/notifications.types';
import type { EventPayload, DispatchResult } from '@/features/notifications/types';
type NextcloudConfig = {
nextcloudUrl: string;
@@ -1,4 +1,4 @@
import type {EventPayload, DispatchResult} from '@/features/notifications/notifications.types';
import type {EventPayload, DispatchResult} from '@/features/notifications/types';
const getPriority = (level?: string): number => {
switch (level) {
@@ -1,4 +1,4 @@
import type {EventPayload, DispatchResult} from '@/features/notifications/notifications.types';
import type {EventPayload, DispatchResult} from '@/features/notifications/types';
export async function sendPushover(
config: {
@@ -1,4 +1,4 @@
import type {EventPayload, DispatchResult} from '@/features/notifications/notifications.types';
import type {EventPayload, DispatchResult} from '@/features/notifications/types';
export async function sendSlack(
config: { slackWebhook: string },
@@ -1,7 +1,7 @@
"use server";
import { render } from "@react-email/render";
import nodemailer from "nodemailer";
import type { EventPayload, DispatchResult } from '@/features/notifications/notifications.types';
import type { EventPayload, DispatchResult } from '@/features/notifications/types';
import EmailNotification from "@/components/emails/email-notification";
export async function sendSmtp(
@@ -1,4 +1,4 @@
import type { EventPayload, DispatchResult } from '@/features/notifications/notifications.types';
import type { EventPayload, DispatchResult } from '@/features/notifications/types';
@@ -1,4 +1,4 @@
import type { EventPayload, DispatchResult } from '@/features/notifications/notifications.types';
import type { EventPayload, DispatchResult } from '@/features/notifications/types';
export async function sendTelegram(
config: {
@@ -1,4 +1,4 @@
import type { EventPayload, DispatchResult } from '@/features/notifications/notifications.types';
import type { EventPayload, DispatchResult } from '@/features/notifications/types';
type WebhookConfig = {
webhookUrl: string;
@@ -16,7 +16,7 @@ import { getChannelIcon } from "@/features/channel/components/channels-helpers";
import {
getStatusColor,
getStatusIcon,
} from "@/features/notifications/notification-log-columns";
} from "@/features/notifications/components/notification-log-columns";
import {
createRestorationBackupAction,
deleteBackupAction,
@@ -5,7 +5,7 @@ import {NotificationLogWithRelations} from "@/db/services/notification-log";
import {humanReadableDate} from "@/utils/date-formatting";
import {CheckCircle2, XCircle} from "lucide-react";
import {Badge} from "@/components/ui/badge";
import {NotificationLogModal} from "@/features/notifications/notification-log-modal";
import {NotificationLogModal} from "@/features/notifications/components/notification-log-modal";
import {getChannelIcon} from "@/features/channel/components/channels-helpers";
@@ -2,7 +2,7 @@
import {DataTable} from "@/components/common/data-table";
import {
notificationLogsColumns,
} from "@/features/notifications/notification-log-columns";
} from "@/features/notifications/components/notification-log-columns";
import {NotificationLogWithRelations} from "@/db/services/notification-log";
@@ -1,7 +1,7 @@
"use server";
import {eq} from "drizzle-orm";
import {dispatchViaProvider} from "@/features/channel/notifications";
import type {EventPayload, DispatchResult, EventKind} from "@/features/notifications/notifications.types";
import type {EventPayload, DispatchResult, EventKind} from "@/features/notifications/types";
import * as drizzleDb from "@/db";
import {db} from "@/db";
import {notificationLog} from "@/db/schema/11_notification-log";
@@ -1,6 +1,6 @@
import { DatabaseWith } from "@/db/schema/07_database";
import { EventKind, EventPayload } from "@/features/notifications/notifications.types";
import { dispatchNotification } from "@/features/notifications/notifications.dispatch";
import { EventKind, EventPayload } from "@/features/notifications/types";
import { dispatchNotification } from "@/features/notifications/utils/notifications.dispatch";
import {db} from "@/db";
import {eq} from "drizzle-orm";
import * as drizzleDb from "@/db";