Files
sass-mohfarawati/app/_admin/maintenance/actions.ts
T
MOH c18128c965
CI / quality (push) Waiting to run
Fix runtime default locale resolution
2026-03-15 06:02:27 +01:00

45 lines
1.6 KiB
TypeScript

"use server";
import { revalidatePath } from "next/cache";
import { redirect } from "next/navigation";
import { routing } from "@/i18n/routing";
import { getAdminAppPath, toInternalAdminPath } from "@/lib/admin-routing";
import { clearAdminSessionCookie, isAdminAuthenticated } from "@/lib/admin-auth";
import { getLocalizedPath } from "@/lib/locale";
import { getSiteSettings, setMaintenanceMode } from "@/lib/app-config";
async function ensureAdmin() {
if (!(await isAdminAuthenticated())) {
await clearAdminSessionCookie();
redirect(getAdminAppPath("/"));
}
}
export async function updateMaintenanceModeAction(formData: FormData) {
await ensureAdmin();
const nextValue = formData.get("enabled") === "true";
const redirectPath = String(formData.get("redirectPath") ?? getAdminAppPath("/"));
const redirectUrl = new URL(redirectPath, "http://localhost");
redirectUrl.searchParams.set(
"success",
nextValue ? "Wartungsmodus aktiviert." : "Wartungsmodus deaktiviert.",
);
await setMaintenanceMode(nextValue);
revalidatePath("/", "layout");
revalidatePath("/coming-soon");
revalidatePath(toInternalAdminPath("/"));
revalidatePath(toInternalAdminPath("/maintenance"));
revalidatePath(toInternalAdminPath(redirectUrl.pathname));
const siteSettings = await getSiteSettings();
for (const appLocale of routing.locales) {
revalidatePath(getLocalizedPath(appLocale, "/", siteSettings.defaultLocale), "layout");
revalidatePath(getLocalizedPath(appLocale, "/coming-soon", siteSettings.defaultLocale));
}
redirect(`${redirectUrl.pathname}${redirectUrl.search}`);
}