From ad2ea710a448d33d00890325fe4ef3c52848085f Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Thu, 23 Jan 2025 10:35:07 +0100 Subject: [PATCH] Update page.tsx --- frontend/src/app/category-view/page.tsx | 62 +++++-------------------- 1 file changed, 11 insertions(+), 51 deletions(-) diff --git a/frontend/src/app/category-view/page.tsx b/frontend/src/app/category-view/page.tsx index 70121086..9f6e25c7 100644 --- a/frontend/src/app/category-view/page.tsx +++ b/frontend/src/app/category-view/page.tsx @@ -3,68 +3,28 @@ import React, { useEffect, useState } from "react"; import { Card, CardContent, CardHeader } from "@/components/ui/card"; import { Button } from "@/components/ui/button"; -import { Category, Script } from "@/lib/types"; +import { Category } from "@/lib/types"; const CategoryView = () => { const [categories, setCategories] = useState([]); const [selectedCategory, setSelectedCategory] = useState(null); useEffect(() => { - const fetchCategoriesAndScripts = async () => { + const fetchCategories = async () => { try { - const basePath = process.env.NODE_ENV === "production" ? "/ProxmoxVE" : ""; // Dynamischer Basis-Pfad - - // Kategorien laden - const categoriesResponse = await fetch(`${basePath}/json/metadata.json`); - if (!categoriesResponse.ok) { + const response = await fetch("/api/categories"); + if (!response.ok) { throw new Error("Failed to fetch categories"); } - const metadata = await categoriesResponse.json(); - console.log("Raw metadata:", metadata); // Debugging - - if (!metadata.categories) { - throw new Error("Invalid metadata structure: categories missing"); - } - - const categories = metadata.categories.map((category: Category) => ({ - ...category, - scripts: [], - })); - - // Skripte laden - const scriptsResponse = await fetch(`${basePath}/json`); - if (!scriptsResponse.ok) { - throw new Error("Failed to fetch scripts"); - } - - const scriptsList = await scriptsResponse.json(); - const scripts: Script[] = await Promise.all( - scriptsList - .filter((file: string) => file.endsWith(".json") && file !== "metadata.json") - .map(async (file: string) => { - const scriptResponse = await fetch(`${basePath}/json/${file}`); - if (scriptResponse.ok) { - return await scriptResponse.json(); - } - return null; - }) - ).then((results) => results.filter((script) => script !== null)); - - // Kategorien und Skripte verknüpfen - categories.forEach((category: Category) => { - category.scripts = scripts.filter((script: Script) => - script.categories.includes(category.id) - ); - }); - - console.log("Parsed categories with scripts:", categories); // Debugging - setCategories(categories); + const data = await response.json(); + console.log("Fetched categories:", data); // Debugging + setCategories(data); } catch (error) { - console.error("Error fetching categories and scripts:", error); + console.error("Error fetching categories:", error); } }; - fetchCategoriesAndScripts(); + fetchCategories(); }, []); const handleCategoryClick = (category: Category) => { @@ -78,7 +38,7 @@ const CategoryView = () => { return (
{categories.length === 0 && ( -

No categories available. Please check the JSON file.

+

No categories available. Please check the API endpoint.

)} {selectedCategory ? (
@@ -89,7 +49,7 @@ const CategoryView = () => {
{selectedCategory.scripts .sort((a, b) => a.name.localeCompare(b.name)) - .map((script: Script) => ( + .map((script) => (

{script.name}