'use server' import { revalidatePath, revalidateTag } from 'next/cache' import { redirect } from 'next/navigation' import { CMS_CACHE_TAG } from '@/lib/cms-cache' const CACHE_PATHS = [ '/sitemap.xml', '/en', '/zh', '/en/about', '/zh/about', '/en/where-to-buy', '/zh/where-to-buy', '/en/downloads', '/zh/downloads', '/en/media-assets', '/zh/media-assets', '/en/news', '/zh/news', '/en/products', '/zh/products', '/en/support', '/zh/support', '/en/support/contact', '/zh/support/contact', '/en/support/faq', '/zh/support/faq', '/en/support/warranty', '/zh/support/warranty', ] as const const CACHE_ROUTE_PATTERNS = [ '/en/downloads/[slug]', '/zh/downloads/[slug]', '/en/media-assets/[category]', '/zh/media-assets/[category]', '/en/media-assets/[category]/[subcategory]', '/zh/media-assets/[category]/[subcategory]', '/en/news/[slug]', '/zh/news/[slug]', '/en/products/[slug]', '/zh/products/[slug]', ] as const function normalizeReturnPath(value: FormDataEntryValue | null) { if (typeof value !== 'string') return '/admin' if (!value.startsWith('/admin')) return '/admin' return value } export async function clearFrontendCache(formData: FormData) { const returnTo = normalizeReturnPath(formData.get('returnTo')) revalidateTag(CMS_CACHE_TAG) for (const path of CACHE_PATHS) { revalidatePath(path) } for (const path of CACHE_ROUTE_PATTERNS) { revalidatePath(path, 'page') } redirect(`${returnTo}${returnTo.includes('?') ? '&' : '?'}cache=cleared`) } export async function refreshSitemapCache(formData: FormData) { const returnTo = normalizeReturnPath(formData.get('returnTo')) revalidateTag(CMS_CACHE_TAG) revalidatePath('/sitemap.xml') redirect(`${returnTo}${returnTo.includes('?') ? '&' : '?'}sitemap=refreshed`) }