diff --git a/apps/dispatch/app/_components/navbar/PageAlert.tsx b/apps/dispatch/app/_components/navbar/PageAlert.tsx
index d2f12840..df8927b9 100644
--- a/apps/dispatch/app/_components/navbar/PageAlert.tsx
+++ b/apps/dispatch/app/_components/navbar/PageAlert.tsx
@@ -1,22 +1,13 @@
import { prisma } from "@repo/db";
import { MessageCircleWarning } from "lucide-react";
-const fetchMainMessage = async () => {
- return await prisma.notam.findFirst({
- where: {
- active: true,
- },
- });
-};
export const WarningAlert = async () => {
- const mainMessage = await fetchMainMessage();
-
- if (mainMessage?.showUntilActive && new Date(mainMessage.showUntil) < new Date()) {
- return <>>;
- }
+ const config = await prisma.notam.findFirst({
+ orderBy: [{ createdAt: "desc" }],
+ });
let msgColor;
- switch (mainMessage?.color) {
+ switch (config?.color) {
case "WARNING":
msgColor = "alert alert-soft alert-warning ml-3 py-2 flex items-center gap-2";
break;
@@ -33,15 +24,11 @@ export const WarningAlert = async () => {
msgColor = "alert alert-soft ml-3 py-2 flex items-center gap-2";
}
- if ((mainMessage?.message == "" && !mainMessage?.wartungsmodus) || !mainMessage) {
- return <>>;
- } else {
+ if (config?.message || config?.maintenanceEnabled) {
return (
-
-
-
- {mainMessage?.wartungsmodus ? "Wartungsmodus aktiv!" : mainMessage?.message}
-
+
+
+ {config?.message}
);
}
diff --git a/apps/dispatch/app/layout.tsx b/apps/dispatch/app/layout.tsx
index 38bdc89c..d53bcdd0 100644
--- a/apps/dispatch/app/layout.tsx
+++ b/apps/dispatch/app/layout.tsx
@@ -7,6 +7,7 @@ import { Toaster } from "react-hot-toast";
import { QueryProvider } from "_components/QueryProvider";
import { prisma } from "@repo/db";
import { Error as ErrorComp } from "_components/Error";
+import { Maintenance } from "@repo/shared-components";
const geistSans = localFont({
src: "./fonts/GeistVF.woff",
@@ -29,21 +30,10 @@ export default async function RootLayout({
}>) {
const session = await getServerSession();
- const latestNotam = await prisma.notam.findFirst({
- orderBy: { createdAt: "desc" },
+ const config = await prisma.notam.findFirst({
+ orderBy: [{ createdAt: "desc" }],
});
- let wartungsarbeiten = false;
- if (
- latestNotam &&
- latestNotam.wartungsmodus &&
- latestNotam.active &&
- ((latestNotam.showUntilActive && new Date(latestNotam.showUntil) > new Date()) ||
- !latestNotam.showUntilActive)
- ) {
- wartungsarbeiten = true;
- }
-
return (
)}
+ {config?.maintenanceEnabled && !session?.user.permissions.includes("ADMIN_MESSAGE") && (
+
+ )}
{!session?.user.isBanned &&
- wartungsarbeiten &&
- !session?.user.permissions.includes("ADMIN_MESSAGE") && (
-
- )}
- {!session?.user.isBanned &&
- (!wartungsarbeiten || session?.user.permissions.includes("ADMIN_MESSAGE")) &&
+ (!config?.maintenanceEnabled ||
+ session?.user.permissions.includes("ADMIN_MESSAGE")) &&
children}
diff --git a/apps/hub/app/(app)/admin/message/_components/messageForm.tsx b/apps/hub/app/(app)/admin/config/_components/MessageForm.tsx
similarity index 65%
rename from apps/hub/app/(app)/admin/message/_components/messageForm.tsx
rename to apps/hub/app/(app)/admin/config/_components/MessageForm.tsx
index 4ddac1bb..fa491b89 100644
--- a/apps/hub/app/(app)/admin/message/_components/messageForm.tsx
+++ b/apps/hub/app/(app)/admin/config/_components/MessageForm.tsx
@@ -5,54 +5,39 @@ import { Notam } from "@repo/db";
import { NotamOptionalDefaults, NotamOptionalDefaultsSchema } from "@repo/db/zod";
import { useForm } from "react-hook-form";
import { addMessage, disableMessage } from "../action";
-import { useState } from "react";
-import { DateInput } from "_components/ui/DateInput";
import "react-datepicker/dist/react-datepicker.css"; // <-- Add this line at the top if using react-datepicker
+import { Button } from "_components/ui/Button";
+import { PaginatedTableRef } from "_components/PaginatedTable";
+import { RefObject } from "react";
-export const MessageForm = ({ message }: { message?: Notam }) => {
- const [isSubmitting, setIsSubmitting] = useState(false);
-
- const getDefaultShowUntilDate = () => {
- const date = new Date();
- return date;
- };
-
+export const MessageForm = ({ tableRef }: { tableRef: RefObject }) => {
const disableMessageClient = async () => {
await disableMessage();
- window.location.reload();
+ tableRef?.current?.refresh();
};
const form = useForm({
resolver: zodResolver(NotamOptionalDefaultsSchema),
- defaultValues: {
- message: message?.message,
- color: message?.color,
- active: true,
- wartungsmodus: message?.wartungsmodus,
- disableHPG: message?.disableHPG,
- showUntil: getDefaultShowUntilDate(),
- },
});
return (