fix(frontend): use github-versions.json for version display

- Update AppVersion type to match new format with slug field
- Switch from versions.json to github-versions.json API
- Simplify version matching by direct slug comparison
- Remove 'Loading versions...' text - show nothing if no version found
This commit is contained in:
CanbiZ (MickLesk)
2026-01-28 14:02:20 +01:00
parent 2434e0ab3b
commit 760603da54
4 changed files with 15 additions and 18 deletions

View File

@@ -6,7 +6,6 @@ import Image from "next/image";
import type { AppVersion, Script } from "@/lib/types";
import { cleanSlug } from "@/lib/utils/resource-utils";
import { Separator } from "@/components/ui/separator";
import { useVersions } from "@/hooks/use-versions";
import { basePath } from "@/config/site-config";
@@ -108,13 +107,10 @@ function VersionInfo({ item }: { item: Script }) {
const { data: versions = [], isLoading } = useVersions();
if (isLoading || versions.length === 0) {
return <p className="text-sm text-muted-foreground">Loading versions...</p>;
return null;
}
const matchedVersion = versions.find((v: AppVersion) => {
const cleanName = v.name.replace(/[^a-z0-9]/gi, "").toLowerCase();
return cleanName === cleanSlug(item.slug) || cleanName.includes(cleanSlug(item.slug));
});
const matchedVersion = versions.find((v: AppVersion) => v.slug === item.slug);
if (!matchedVersion)
return null;

View File

@@ -2,7 +2,7 @@
import { useQuery } from "@tanstack/react-query";
import type { AppVersion } from "@/lib/types";
import type { AppVersion, GitHubVersionsResponse } from "@/lib/types";
import { fetchVersions } from "@/lib/data";
@@ -10,14 +10,8 @@ export function useVersions() {
return useQuery<AppVersion[]>({
queryKey: ["versions"],
queryFn: async () => {
const fetchedVersions = await fetchVersions();
if (Array.isArray(fetchedVersions)) {
return fetchedVersions;
}
if (fetchedVersions && typeof fetchedVersions === "object") {
return [fetchedVersions];
}
return [];
const response: GitHubVersionsResponse = await fetchVersions();
return response.versions ?? [];
},
});
}

View File

@@ -10,7 +10,7 @@ export async function fetchCategories() {
}
export async function fetchVersions() {
const response = await fetch(`/ProxmoxVE/api/versions`);
const response = await fetch(`/ProxmoxVE/api/github-versions`);
if (!response.ok) {
throw new Error(`Failed to fetch versions: ${response.statusText}`);
}

View File

@@ -63,7 +63,14 @@ export type OperatingSystem = {
};
export type AppVersion = {
name: string;
slug: string;
repo: string;
version: string;
date: Date;
pinned: boolean;
date: string;
};
export type GitHubVersionsResponse = {
generated: string;
versions: AppVersion[];
};