refactor: simplify component

This commit is contained in:
ReaJason
2025-05-28 01:22:54 +08:00
parent f734e3c391
commit e31fcdeca9
18 changed files with 250 additions and 184 deletions
+33 -36
View File
@@ -1,6 +1,5 @@
import { TFunction } from "i18next";
import { useEffect, useState } from "react";
import { Fragment } from "react/jsx-runtime";
import { CodeViewer } from "../code-viewer";
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "../ui/select";
@@ -8,11 +7,11 @@ export function MultiPackResult({
allPackResults,
packMethod,
t,
}: {
}: Readonly<{
allPackResults: object | undefined;
packMethod: string;
t: TFunction;
}) {
}>) {
const showCode = packMethod === "JSP";
const packMethods = Object.keys(allPackResults ?? {});
const [selectedMethod, setSelectedMethod] = useState(packMethods[0]);
@@ -26,38 +25,36 @@ export function MultiPackResult({
}, [allPackResults]);
return (
<Fragment>
<CodeViewer
code={packResult ?? ""}
header={
<div className="flex items-center justify-between text-xs gap-2">
<Select
onValueChange={(value) => {
setSelectedMethod(value);
setPackResult(allPackResults?.[value as keyof typeof allPackResults] ?? "");
}}
value={selectedMethod}
>
<SelectTrigger className="h-7 text-xs [&_svg]:h-4 [&_svg]:w-4">
<span className="text-muted-foreground">{t("packageConfig.title")}:&nbsp;</span>
<SelectValue />
</SelectTrigger>
<SelectContent>
{packMethods.map((method) => (
<SelectItem key={method} value={method} className="text-xs">
{method}
</SelectItem>
))}
</SelectContent>
</Select>
<span className="text-muted-foreground">({packResult?.length})</span>
</div>
}
wrapLongLines={!showCode}
showLineNumbers={showCode}
language={showCode ? "java" : "text"}
height={350}
/>
</Fragment>
<CodeViewer
code={packResult ?? ""}
header={
<div className="flex items-center justify-between text-xs gap-2">
<Select
onValueChange={(value) => {
setSelectedMethod(value);
setPackResult(allPackResults?.[value as keyof typeof allPackResults] ?? "");
}}
value={selectedMethod}
>
<SelectTrigger className="h-7 text-xs [&_svg]:h-4 [&_svg]:w-4">
<span className="text-muted-foreground">{t("packageConfig.title")}:&nbsp;</span>
<SelectValue />
</SelectTrigger>
<SelectContent>
{packMethods.map((method) => (
<SelectItem key={method} value={method} className="text-xs">
{method}
</SelectItem>
))}
</SelectContent>
</Select>
<span className="text-muted-foreground">({packResult?.length})</span>
</div>
}
wrapLongLines={!showCode}
showLineNumbers={showCode}
language={showCode ? "java" : "text"}
height={350}
/>
);
}