From 9570c9199a3e7b84606d7600a918c39678b77731 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Mon, 3 Mar 2025 09:50:21 +0100 Subject: [PATCH] Feature: Website - show default OS (#2790) * Feature: Website - show default OS * add os fallback * Update ScriptItem.tsx * Update Buttons.tsx * Update Buttons.tsx * fix duplicate type check * fix import deps * add refreshccw --- .../app/scripts/_components/ScriptItem.tsx | 7 +++ .../_components/ScriptItems/Buttons.tsx | 43 ++++++++++++++----- 2 files changed, 40 insertions(+), 10 deletions(-) diff --git a/frontend/src/app/scripts/_components/ScriptItem.tsx b/frontend/src/app/scripts/_components/ScriptItem.tsx index fb9e64e0..973514a0 100644 --- a/frontend/src/app/scripts/_components/ScriptItem.tsx +++ b/frontend/src/app/scripts/_components/ScriptItem.tsx @@ -28,6 +28,10 @@ function ScriptItem({ setSelectedScript(null); }; + const defaultInstallMethod = item.install_methods?.[0]; + const os = defaultInstallMethod?.resources?.os || "Proxmox Node"; + const version = defaultInstallMethod?.resources?.version || ""; + return (
@@ -60,6 +64,9 @@ function ScriptItem({

Date added: {extractDate(item.date_created)}

+

+ Default OS: {os} {version} +

diff --git a/frontend/src/app/scripts/_components/ScriptItems/Buttons.tsx b/frontend/src/app/scripts/_components/ScriptItems/Buttons.tsx index cb46e437..8900a562 100644 --- a/frontend/src/app/scripts/_components/ScriptItems/Buttons.tsx +++ b/frontend/src/app/scripts/_components/ScriptItems/Buttons.tsx @@ -1,14 +1,22 @@ import { Button } from "@/components/ui/button"; import { basePath } from "@/config/siteConfig"; import { Script } from "@/lib/types"; -import { BookOpenText, Code, Globe } from "lucide-react"; +import { BookOpenText, Code, Globe, RefreshCcw } from "lucide-react"; import Link from "next/link"; -const generateSourceUrl = (slug: string, type: string) => { +const generateInstallSourceUrl = (slug: string) => { const baseUrl = `https://raw.githubusercontent.com/community-scripts/${basePath}/main`; - return type === "ct" - ? `${baseUrl}/install/${slug}-install.sh` - : `${baseUrl}/${type}/${slug}.sh`; + return `${baseUrl}/install/${slug}-install.sh`; +}; + +const generateSourceUrl = (slug: string) => { + const baseUrl = `https://raw.githubusercontent.com/community-scripts/${basePath}/main`; + return `${baseUrl}/misc/${slug}.sh`; +}; + +const generateUpdateUrl = (slug: string) => { + const baseUrl = `https://raw.githubusercontent.com/community-scripts/${basePath}/main`; + return `${baseUrl}/update/${slug}-update.sh`; }; interface ButtonLinkProps { @@ -29,20 +37,35 @@ const ButtonLink = ({ href, icon, text }: ButtonLinkProps) => ( ); export default function Buttons({ item }: { item: Script }) { + const isCtOrDefault = ["ct"].includes(item.type); + const installSourceUrl = isCtOrDefault ? generateInstallSourceUrl(item.slug) : null; + const updateSourceUrl = isCtOrDefault ? generateUpdateUrl(item.slug) : null; + const sourceUrl = !isCtOrDefault ? generateSourceUrl(item.slug) : null; + const buttons = [ item.website && { href: item.website, - icon: , + icon: , text: "Website", }, item.documentation && { href: item.documentation, - icon: , + icon: , text: "Documentation", }, - { - href: generateSourceUrl(item.slug, item.type), - icon: , + installSourceUrl && { + href: installSourceUrl, + icon: , + text: "Install-Source", + }, + updateSourceUrl && { + href: updateSourceUrl, + icon: , + text: "Update-Source", + }, + sourceUrl && { + href: sourceUrl, + icon: , text: "Source Code", }, ].filter(Boolean) as ButtonLinkProps[];