import { Separator } from "@/components/ui/separator"; import { extractDate } from "@/lib/time"; import { Script, AppVersion } from "@/lib/types"; import { fetchVersions } from "@/lib/data"; import { X } from "lucide-react"; import Image from "next/image"; import { getDisplayValueFromType } from "./ScriptInfoBlocks"; import Alerts from "./ScriptItems/Alerts"; import Buttons from "./ScriptItems/Buttons"; import DefaultPassword from "./ScriptItems/DefaultPassword"; import DefaultSettings from "./ScriptItems/DefaultSettings"; import Description from "./ScriptItems/Description"; import InstallCommand from "./ScriptItems/InstallCommand"; import InterFaces from "./ScriptItems/InterFaces"; import Tooltips from "./ScriptItems/Tooltips"; import { basePath } from "@/config/siteConfig"; import { useEffect, useState } from "react"; function ScriptItem({ item, setSelectedScript, }: { item: Script; setSelectedScript: (script: string | null) => void; }) { const closeScript = () => { window.history.pushState({}, document.title, window.location.pathname); setSelectedScript(null); }; const [versions, setVersions] = useState([]); useEffect(() => { fetchVersions() .then((fetchedVersions) => { console.log("Fetched Versions: ", fetchedVersions); if (Array.isArray(fetchedVersions)) { setVersions(fetchedVersions); } else if (fetchedVersions && typeof fetchedVersions === "object") { setVersions([fetchedVersions]); } else { setVersions([]); } }) .catch((error) => console.error("Error fetching versions:", error)); }, []); const defaultInstallMethod = item.install_methods?.[0]; const os = defaultInstallMethod?.resources?.os || "Proxmox Node"; const version = defaultInstallMethod?.resources?.version || ""; return (

Selected Script

((e.currentTarget as HTMLImageElement).src = `/${basePath}/logo.png`) } height={400} alt={item.name} unoptimized />

{item.name} {getDisplayValueFromType(item.type)}

Date added: {extractDate(item.date_created)}

Default OS: {os} {version}

{versions.length === 0 ? (

Loading versions...

) : (<>

Version:

{versions.find((v) => v.name === item.slug.replace(/[^a-z0-9]/g, '') || v.name.includes(item.slug.replace(/[^a-z0-9]/g, '')) || v.name.replace(/[^a-z0-9]/g, '') === item.slug.replace(/[^a-z0-9]/g, '') )?.version || "No Version information found" }

Latest Version changes(Pulled from newreleases.io):

{(() => { const matchedVersion = versions.find((v) => v.name === item.slug.replace(/[^a-z0-9]/g, '') || v.name.includes(item.slug.replace(/[^a-z0-9]/g, '')) || v.name.replace(/[^a-z0-9]/g, '') === item.slug.replace(/[^a-z0-9]/g, '') ); return matchedVersion?.date ? extractDate(matchedVersion.date as unknown as string) : "No date information found" })()}

) }

How to {item.type == "misc" ? "use" : "install"}

); } export default ScriptItem;