"use server"; import { revalidatePath } from "next/cache"; import { createStableId } from "@/lib/password"; import { requireAdminAccess } from "@/lib/session"; import { getSubscriptionSettings, saveProxyGroups, saveSubscriptionSettings, } from "@/lib/store"; export async function saveSubscriptionSettingsAction(formData: FormData) { await requireAdminAccess(); await saveSubscriptionSettings({ template: String(formData.get("template") ?? ""), extraProxyGroups: String(formData.get("extra_proxy_groups") ?? ""), profileName: String(formData.get("profile_name") ?? "").trim() || "FeieProxy", }); revalidatePath("/admin/subscriptions"); } export async function saveProxyGroupAction(formData: FormData) { await requireAdminAccess(); const settings = await getSubscriptionSettings(); const id = String(formData.get("id") ?? "").trim() || createStableId(); const name = String(formData.get("name") ?? "").trim(); const seen = new Set(); const memberSlugs = formData.getAll("member_slugs").flatMap((value) => { const slug = String(value).trim(); if (!slug || seen.has(slug)) { return []; } seen.add(slug); return [slug]; }); if (!name) { return; } const nextGroup = { id, name, type: "select", memberSlugs, } as const; const existingIndex = settings.proxyGroups.findIndex((group) => group.id === id); const proxyGroups = [...settings.proxyGroups]; if (existingIndex === -1) { proxyGroups.push(nextGroup); } else { proxyGroups[existingIndex] = nextGroup; } await saveProxyGroups(proxyGroups); revalidatePath("/admin/subscriptions"); } export async function deleteProxyGroupAction(formData: FormData) { await requireAdminAccess(); const settings = await getSubscriptionSettings(); const id = String(formData.get("id") ?? "").trim(); await saveProxyGroups(settings.proxyGroups.filter((group) => group.id !== id)); revalidatePath("/admin/subscriptions"); }