From f46453f1cdc6d9ea51c5e95e9ed9c9b77d72a67b Mon Sep 17 00:00:00 2001 From: /home/neo <158327205+neoapps-dev@users.noreply.github.com> Date: Tue, 7 Jul 2026 17:10:20 +0300 Subject: [PATCH] feat: extended description and required versions (#119) --- src/components/views/WorkshopView.tsx | 84 ++++++++++++++++++--------- src/hooks/useGameManager.ts | 2 +- 2 files changed, 59 insertions(+), 27 deletions(-) diff --git a/src/components/views/WorkshopView.tsx b/src/components/views/WorkshopView.tsx index db25a8f..d2c5e33 100644 --- a/src/components/views/WorkshopView.tsx +++ b/src/components/views/WorkshopView.tsx @@ -25,6 +25,7 @@ import { type CustomEdition, } from "../../services/TauriService"; import { PluginManager } from "../../plugins/PluginManager"; +import { BASE_EDITIONS } from "../../hooks/useGameManager"; const REGISTRY_URL = "https://raw.githubusercontent.com/LCE-Hub/LCE-Workshop/refs/heads/main/registry.json"; const VERSIONS_URL = @@ -75,6 +76,7 @@ interface RegistryPackage { permissions?: string[]; files?: string[]; dependencies?: string[]; + required_versions?: string[]; } interface ServerListing { @@ -1095,6 +1097,8 @@ const WorkshopView = memo(function WorkshopView({ void; playPressSound: () => void; @@ -1668,33 +1676,57 @@ function PackageModal({ ))} - {pkg.dependencies && pkg.dependencies.length > 0 && ( -
- - Required Dependencies - -
- {pkg.dependencies.map((depId) => { - const dep = allPackages.find((p) => p.id === depId); - const isDepInstalled = installedPkgs.some((p) => p.packageId === depId); - return ( - - {dep?.name || depId} - {isDepInstalled ? " (installed)" : ""} - - ); - })} -
-
- )} + {pkg.dependencies && pkg.dependencies.length > 0 && ( +
+ + Required Dependencies + +
+ {pkg.dependencies.map((depId) => { + const dep = allPackages.find((p) => p.id === depId); + const isDepInstalled = installedPkgs.some((p) => p.packageId === depId); + return ( + + {dep?.name || depId} + {isDepInstalled ? " (installed)" : ""} + + ); + })} +
+
+ )} + {pkg.required_versions && pkg.required_versions.length > 0 && ( +
+ + Required Editions + +
+ {pkg.required_versions.map((verId) => { + const builtin = BASE_EDITIONS.find((e) => e.id === verId); + const versionPkg = versionPackages.find((v) => v.id === verId); + const customEd = customEditions.find((e) => e.id === verId); + const displayName = builtin?.name || customEd?.name || versionPkg?.name; + if (!displayName) return null; + return ( + + {displayName} + + ); + })} +
+
+ )} {pkg.zips && Object.keys(pkg.zips).length > 0 && (
diff --git a/src/hooks/useGameManager.ts b/src/hooks/useGameManager.ts index fd38f41..9b3d80e 100644 --- a/src/hooks/useGameManager.ts +++ b/src/hooks/useGameManager.ts @@ -25,7 +25,7 @@ async function imageUrlToBase64(url: string): Promise { reader.readAsDataURL(blob); }); } -const BASE_EDITIONS = [ +export const BASE_EDITIONS = [ { id: "legacy_evolved", name: "neoLegacy",