Final MVP valid

This commit is contained in:
Marcelo
2026-01-21 01:45:57 +00:00
parent c183dda383
commit 511d80b629
29 changed files with 4827 additions and 381 deletions

View File

@@ -0,0 +1,29 @@
import { redirect } from "next/navigation";
import { prisma } from "@/lib/prisma";
import { requireSession } from "@/lib/auth/requireSession";
function isPlainObject(value: unknown): value is Record<string, unknown> {
return !!value && typeof value === "object" && !Array.isArray(value);
}
function getScreenlessMode(defaultsJson: unknown) {
const defaults = isPlainObject(defaultsJson) ? defaultsJson : {};
const modules = isPlainObject(defaults.modules) ? defaults.modules : {};
return modules.screenlessMode === true;
}
export default async function DowntimeLayout({ children }: { children: React.ReactNode }) {
const session = await requireSession();
if (!session) redirect("/login?next=/downtime");
const settings = await prisma.orgSettings.findUnique({
where: { orgId: session.orgId },
select: { defaultsJson: true },
});
if (getScreenlessMode(settings?.defaultsJson)) {
redirect("/overview");
}
return <>{children}</>;
}

View File

@@ -0,0 +1,5 @@
import DowntimePageClient from "@/components/downtime/DowntimePageClient";
export default function DowntimePage() {
return <DowntimePageClient />;
}