Alter Maintenance-Screen hinzugefügt
This commit is contained in:
@@ -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 (
|
||||
<div role="alert" className={msgColor}>
|
||||
<MessageCircleWarning />
|
||||
<span className="font-bold m-0">
|
||||
{mainMessage?.wartungsmodus ? "Wartungsmodus aktiv!" : mainMessage?.message}
|
||||
</span>
|
||||
<div className={msgColor}>
|
||||
<MessageCircleWarning className="w-5 h-5" />
|
||||
{config?.message}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -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 (
|
||||
<html lang="de" data-theme="dark">
|
||||
<body
|
||||
@@ -70,19 +60,12 @@ export default async function RootLayout({
|
||||
{session?.user.isBanned && (
|
||||
<ErrorComp title="You are banned from using this service" statusCode={403} />
|
||||
)}
|
||||
{config?.maintenanceEnabled && !session?.user.permissions.includes("ADMIN_MESSAGE") && (
|
||||
<Maintenance message={config?.message} />
|
||||
)}
|
||||
{!session?.user.isBanned &&
|
||||
wartungsarbeiten &&
|
||||
!session?.user.permissions.includes("ADMIN_MESSAGE") && (
|
||||
<ErrorComp
|
||||
title={
|
||||
latestNotam?.message ||
|
||||
"Wir führen aktuell Wartungsarbeiten am System durch, versuche es später erneut."
|
||||
}
|
||||
statusCode={503}
|
||||
/>
|
||||
)}
|
||||
{!session?.user.isBanned &&
|
||||
(!wartungsarbeiten || session?.user.permissions.includes("ADMIN_MESSAGE")) &&
|
||||
(!config?.maintenanceEnabled ||
|
||||
session?.user.permissions.includes("ADMIN_MESSAGE")) &&
|
||||
children}
|
||||
</NextAuthSessionProvider>
|
||||
</QueryProvider>
|
||||
|
||||
Reference in New Issue
Block a user