From 7e053dd6c8e2b7f34b172b35686ec624f02a1832 Mon Sep 17 00:00:00 2001 From: gunshiz Date: Tue, 7 Jul 2026 19:53:10 +0700 Subject: [PATCH] refactor(admin) : remove auto detect followers and use validPlatforms instead --- app/admin/backend/actions.ts | 9 +-------- app/admin/backend/page.tsx | 10 +--------- 2 files changed, 2 insertions(+), 17 deletions(-) diff --git a/app/admin/backend/actions.ts b/app/admin/backend/actions.ts index 1e9f52d..4169588 100644 --- a/app/admin/backend/actions.ts +++ b/app/admin/backend/actions.ts @@ -1,18 +1,11 @@ "use server"; import { revalidateTag } from "next/cache"; - -import { readdirSync } from "fs"; -import { join } from "path"; +const validPlatforms = ["youtube", "roblox", "discord", "tiktok"]; export async function refetchPlatform( platform: string ): Promise<{ count: number | null }> { - // Validate platform against actual files to prevent path traversal - const dir = join(process.cwd(), "lib", "followers"); - const validPlatforms = readdirSync(dir) - .filter((f) => f.endsWith(".ts") && f !== "index.ts") - .map((f) => f.replace(".ts", "")); if (!validPlatforms.includes(platform)) { throw new Error("Invalid platform"); diff --git a/app/admin/backend/page.tsx b/app/admin/backend/page.tsx index c4a5b62..47e7cf6 100644 --- a/app/admin/backend/page.tsx +++ b/app/admin/backend/page.tsx @@ -1,17 +1,9 @@ import { AdminShellServer } from "@/components/admin-shell-server"; -import { readdirSync } from "fs"; -import { join } from "path"; import { BackendClient } from "./client"; - export const dynamic = "force-dynamic"; +const platforms = ["youtube", "roblox", "discord", "tiktok"]; export default async function BackendPage() { - // Auto-discover platform files from lib/followers/ - const dir = join(process.cwd(), "lib", "followers"); - const platforms = readdirSync(dir) - .filter((f) => f.endsWith(".ts") && f !== "index.ts") - .map((f) => f.replace(".ts", "")); - // Read current cached counts from Redis let counts: Record = {}; try {