mirror of
https://github.com/Portabase/portabase.git
synced 2026-07-14 11:16:13 +02:00
refactor(notifications): reorganize into components/types/utils
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
import {PageParams} from "@/types/next";
|
import {PageParams} from "@/types/next";
|
||||||
import {Page, PageContent, PageHeader, PageTitle} from "@/features/layout/components/page";
|
import {Page, PageContent, PageHeader, PageTitle} from "@/features/layout/components/page";
|
||||||
import {Metadata} from "next";
|
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 {notFound} from "next/navigation";
|
||||||
import {getNotificationHistory} from "@/db/services/notification-log";
|
import {getNotificationHistory} from "@/db/services/notification-log";
|
||||||
|
|
||||||
|
|||||||
@@ -6,8 +6,8 @@ import {getDatabaseOrThrow, withAgentCheck} from "./helpers";
|
|||||||
import {Backup} from "@/db/schema/07_database";
|
import {Backup} from "@/db/schema/07_database";
|
||||||
import {withUpdatedAt} from "@/db/utils";
|
import {withUpdatedAt} from "@/db/utils";
|
||||||
import {eventEmitter} from "@/lib/event";
|
import {eventEmitter} from "@/lib/event";
|
||||||
import {sendNotificationsBackupRestore} from "@/features/notifications/notifications.helpers";
|
import {sendNotificationsBackupRestore} from "@/features/notifications/utils/notifications.helpers";
|
||||||
import {EventKind} from "@/features/notifications/notifications.types";
|
import {EventKind} from "@/features/notifications/types";
|
||||||
import {logger} from "@/lib/logger";
|
import {logger} from "@/lib/logger";
|
||||||
import {JobLogEntry} from "@/features/logs/types";
|
import {JobLogEntry} from "@/features/logs/types";
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import { NextResponse } from "next/server";
|
|||||||
import * as drizzleDb from "@/db";
|
import * as drizzleDb from "@/db";
|
||||||
import { db as dbClient, db } from "@/db";
|
import { db as dbClient, db } from "@/db";
|
||||||
import { and, eq } from "drizzle-orm";
|
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 { logger } from "@/lib/logger";
|
||||||
import { withUpdatedAt } from "@/db/utils";
|
import { withUpdatedAt } from "@/db/utils";
|
||||||
import { JobLogEntry } from "@/features/logs/types";
|
import { JobLogEntry } from "@/features/logs/types";
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
// import * as React from "react";
|
// import * as React from "react";
|
||||||
// import EmailLayout from "./email-layout";
|
// import EmailLayout from "./email-layout";
|
||||||
// import {Text, Section, Button} from "@react-email/components";
|
// 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 {
|
// export interface EmailNotificationProps {
|
||||||
// payload: EventPayload
|
// payload: EventPayload
|
||||||
@@ -48,7 +48,7 @@
|
|||||||
import * as React from "react";
|
import * as React from "react";
|
||||||
import EmailLayout from "./email-layout";
|
import EmailLayout from "./email-layout";
|
||||||
import {Text, Section, Button} from "@react-email/components";
|
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 {
|
export interface EmailNotificationProps {
|
||||||
payload: EventPayload;
|
payload: EventPayload;
|
||||||
|
|||||||
@@ -3,8 +3,8 @@
|
|||||||
import { db } from "@/db";
|
import { db } from "@/db";
|
||||||
import * as drizzleDb from "@/db";
|
import * as drizzleDb from "@/db";
|
||||||
import { and, eq, gte, isNotNull, lt } from "drizzle-orm";
|
import { and, eq, gte, isNotNull, lt } from "drizzle-orm";
|
||||||
import { dispatchNotification } from "@/features/notifications/notifications.dispatch";
|
import { dispatchNotification } from "@/features/notifications/utils/notifications.dispatch";
|
||||||
import { EventPayload } from "@/features/notifications/notifications.types";
|
import { EventPayload } from "@/features/notifications/types";
|
||||||
import { logger } from "@/lib/logger";
|
import { logger } from "@/lib/logger";
|
||||||
|
|
||||||
const log = logger.child({ module: "tasks/healthcheck" });
|
const log = logger.child({ module: "tasks/healthcheck" });
|
||||||
|
|||||||
@@ -6,8 +6,8 @@ import {toast} from "sonner";
|
|||||||
|
|
||||||
import {Button} from "@/components/ui/button";
|
import {Button} from "@/components/ui/button";
|
||||||
import {NotificationChannel} from "@/db/schema/09_notification-channel";
|
import {NotificationChannel} from "@/db/schema/09_notification-channel";
|
||||||
import {dispatchNotification} from "@/features/notifications/notifications.dispatch";
|
import {dispatchNotification} from "@/features/notifications/utils/notifications.dispatch";
|
||||||
import {EventPayload} from "@/features/notifications/notifications.types";
|
import {EventPayload} from "@/features/notifications/types";
|
||||||
import {useIsMobile} from "@/hooks/use-mobile";
|
import {useIsMobile} from "@/hooks/use-mobile";
|
||||||
import {cn} from "@/lib/utils";
|
import {cn} from "@/lib/utils";
|
||||||
import {StorageChannel} from "@/db/schema/12_storage-channel";
|
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(
|
export async function sendDiscord(
|
||||||
config: { discordWebhook: string },
|
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(
|
export async function sendGotify(
|
||||||
config: { gotifyServerUrl: string; gotifyAppToken: string },
|
config: { gotifyServerUrl: string; gotifyAppToken: string },
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
"use server"
|
"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 {sendSlack} from './slack';
|
||||||
import {sendSmtp} from './smtp';
|
import {sendSmtp} from './smtp';
|
||||||
import {sendDiscord} from "@/features/channel/components/notifications/discord";
|
import {sendDiscord} from "@/features/channel/components/notifications/discord";
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { createHmac, randomBytes } from "crypto";
|
import { createHmac, randomBytes } from "crypto";
|
||||||
import type { EventPayload, DispatchResult } from '@/features/notifications/notifications.types';
|
import type { EventPayload, DispatchResult } from '@/features/notifications/types';
|
||||||
|
|
||||||
type NextcloudConfig = {
|
type NextcloudConfig = {
|
||||||
nextcloudUrl: string;
|
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 => {
|
const getPriority = (level?: string): number => {
|
||||||
switch (level) {
|
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(
|
export async function sendPushover(
|
||||||
config: {
|
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(
|
export async function sendSlack(
|
||||||
config: { slackWebhook: string },
|
config: { slackWebhook: string },
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
"use server";
|
"use server";
|
||||||
import { render } from "@react-email/render";
|
import { render } from "@react-email/render";
|
||||||
import nodemailer from "nodemailer";
|
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";
|
import EmailNotification from "@/components/emails/email-notification";
|
||||||
|
|
||||||
export async function sendSmtp(
|
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(
|
export async function sendTelegram(
|
||||||
config: {
|
config: {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import type { EventPayload, DispatchResult } from '@/features/notifications/notifications.types';
|
import type { EventPayload, DispatchResult } from '@/features/notifications/types';
|
||||||
|
|
||||||
type WebhookConfig = {
|
type WebhookConfig = {
|
||||||
webhookUrl: string;
|
webhookUrl: string;
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ import { getChannelIcon } from "@/features/channel/components/channels-helpers";
|
|||||||
import {
|
import {
|
||||||
getStatusColor,
|
getStatusColor,
|
||||||
getStatusIcon,
|
getStatusIcon,
|
||||||
} from "@/features/notifications/notification-log-columns";
|
} from "@/features/notifications/components/notification-log-columns";
|
||||||
import {
|
import {
|
||||||
createRestorationBackupAction,
|
createRestorationBackupAction,
|
||||||
deleteBackupAction,
|
deleteBackupAction,
|
||||||
|
|||||||
+1
-1
@@ -5,7 +5,7 @@ import {NotificationLogWithRelations} from "@/db/services/notification-log";
|
|||||||
import {humanReadableDate} from "@/utils/date-formatting";
|
import {humanReadableDate} from "@/utils/date-formatting";
|
||||||
import {CheckCircle2, XCircle} from "lucide-react";
|
import {CheckCircle2, XCircle} from "lucide-react";
|
||||||
import {Badge} from "@/components/ui/badge";
|
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";
|
import {getChannelIcon} from "@/features/channel/components/channels-helpers";
|
||||||
|
|
||||||
|
|
||||||
+1
-1
@@ -2,7 +2,7 @@
|
|||||||
import {DataTable} from "@/components/common/data-table";
|
import {DataTable} from "@/components/common/data-table";
|
||||||
import {
|
import {
|
||||||
notificationLogsColumns,
|
notificationLogsColumns,
|
||||||
} from "@/features/notifications/notification-log-columns";
|
} from "@/features/notifications/components/notification-log-columns";
|
||||||
import {NotificationLogWithRelations} from "@/db/services/notification-log";
|
import {NotificationLogWithRelations} from "@/db/services/notification-log";
|
||||||
|
|
||||||
|
|
||||||
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
"use server";
|
"use server";
|
||||||
import {eq} from "drizzle-orm";
|
import {eq} from "drizzle-orm";
|
||||||
import {dispatchViaProvider} from "@/features/channel/notifications";
|
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 * as drizzleDb from "@/db";
|
||||||
import {db} from "@/db";
|
import {db} from "@/db";
|
||||||
import {notificationLog} from "@/db/schema/11_notification-log";
|
import {notificationLog} from "@/db/schema/11_notification-log";
|
||||||
+2
-2
@@ -1,6 +1,6 @@
|
|||||||
import { DatabaseWith } from "@/db/schema/07_database";
|
import { DatabaseWith } from "@/db/schema/07_database";
|
||||||
import { EventKind, EventPayload } from "@/features/notifications/notifications.types";
|
import { EventKind, EventPayload } from "@/features/notifications/types";
|
||||||
import { dispatchNotification } from "@/features/notifications/notifications.dispatch";
|
import { dispatchNotification } from "@/features/notifications/utils/notifications.dispatch";
|
||||||
import {db} from "@/db";
|
import {db} from "@/db";
|
||||||
import {eq} from "drizzle-orm";
|
import {eq} from "drizzle-orm";
|
||||||
import * as drizzleDb from "@/db";
|
import * as drizzleDb from "@/db";
|
||||||
Reference in New Issue
Block a user