fix ui: custom transformer error

This commit is contained in:
musistudio
2025-08-04 13:18:57 +08:00
parent 38c6cf0c9a
commit 7bb816ad03
4 changed files with 27 additions and 28 deletions

View File

@@ -75,7 +75,7 @@ export function ConfigProvider({ children }: ConfigProviderProps) {
APIKEY: typeof data.APIKEY === 'string' ? data.APIKEY : '', APIKEY: typeof data.APIKEY === 'string' ? data.APIKEY : '',
API_TIMEOUT_MS: typeof data.API_TIMEOUT_MS === 'string' ? data.API_TIMEOUT_MS : '600000', API_TIMEOUT_MS: typeof data.API_TIMEOUT_MS === 'string' ? data.API_TIMEOUT_MS : '600000',
PROXY_URL: typeof data.PROXY_URL === 'string' ? data.PROXY_URL : '', PROXY_URL: typeof data.PROXY_URL === 'string' ? data.PROXY_URL : '',
Transformers: Array.isArray(data.Transformers) ? data.Transformers : [], transformers: Array.isArray(data.transformers) ? data.transformers : [],
Providers: Array.isArray(data.Providers) ? data.Providers : [], Providers: Array.isArray(data.Providers) ? data.Providers : [],
Router: data.Router && typeof data.Router === 'object' ? { Router: data.Router && typeof data.Router === 'object' ? {
default: typeof data.Router.default === 'string' ? data.Router.default : '', default: typeof data.Router.default === 'string' ? data.Router.default : '',
@@ -109,7 +109,7 @@ export function ConfigProvider({ children }: ConfigProviderProps) {
APIKEY: '', APIKEY: '',
API_TIMEOUT_MS: '600000', API_TIMEOUT_MS: '600000',
PROXY_URL: '', PROXY_URL: '',
Transformers: [], transformers: [],
Providers: [], Providers: [],
Router: { Router: {
default: '', default: '',

View File

@@ -47,7 +47,7 @@ export function TransformerList({ transformers, onEdit, onRemove }: TransformerL
const transformerPath = transformer.path || "Unnamed Transformer"; const transformerPath = transformer.path || "Unnamed Transformer";
// Handle case where transformer.parameters might be null or undefined // Handle case where transformer.parameters might be null or undefined
const options = transformer.parameters || {}; const options = transformer.options || {};
// Render parameters as tags in a single line // Render parameters as tags in a single line
const renderParameters = () => { const renderParameters = () => {

View File

@@ -21,7 +21,7 @@ export function Transformers() {
const { config, setConfig } = useConfig(); const { config, setConfig } = useConfig();
const [editingTransformerIndex, setEditingTransformerIndex] = useState<number | null>(null); const [editingTransformerIndex, setEditingTransformerIndex] = useState<number | null>(null);
const [deletingTransformerIndex, setDeletingTransformerIndex] = useState<number | null>(null); const [deletingTransformerIndex, setDeletingTransformerIndex] = useState<number | null>(null);
const [newTransformer, setNewTransformer] = useState<{ name: string; path: string; project: string; parameters: { [key: string]: string } } | null>(null); const [newTransformer, setNewTransformer] = useState<{ name?: string; path: string; options: { [key: string]: string } } | null>(null);
// Handle case where config is null or undefined // Handle case where config is null or undefined
if (!config) { if (!config) {
@@ -38,10 +38,10 @@ export function Transformers() {
} }
// Validate config.Transformers to ensure it's an array // Validate config.Transformers to ensure it's an array
const validTransformers = Array.isArray(config.Transformers) ? config.Transformers : []; const validTransformers = Array.isArray(config.transformers) ? config.transformers : [];
const handleAddTransformer = () => { const handleAddTransformer = () => {
const newTransformer = { name: "", path: "", project: "", parameters: {} }; const newTransformer = { name: "", path: "", options: {} };
setNewTransformer(newTransformer); setNewTransformer(newTransformer);
setEditingTransformerIndex(validTransformers.length); // Use the length as index for the new item setEditingTransformerIndex(validTransformers.length); // Use the length as index for the new item
}; };
@@ -49,7 +49,7 @@ export function Transformers() {
const handleRemoveTransformer = (index: number) => { const handleRemoveTransformer = (index: number) => {
const newTransformers = [...validTransformers]; const newTransformers = [...validTransformers];
newTransformers.splice(index, 1); newTransformers.splice(index, 1);
setConfig({ ...config, Transformers: newTransformers }); setConfig({ ...config, transformers: newTransformers });
setDeletingTransformerIndex(null); setDeletingTransformerIndex(null);
}; };
@@ -58,17 +58,17 @@ export function Transformers() {
// Editing an existing transformer // Editing an existing transformer
const newTransformers = [...validTransformers]; const newTransformers = [...validTransformers];
if (parameterKey !== undefined) { if (parameterKey !== undefined) {
newTransformers[index].parameters![parameterKey] = value; newTransformers[index].options![parameterKey] = value;
} else { } else {
(newTransformers[index] as unknown as Record<string, unknown>)[field] = value; (newTransformers[index] as unknown as Record<string, unknown>)[field] = value;
} }
setConfig({ ...config, Transformers: newTransformers }); setConfig({ ...config, transformers: newTransformers });
} else { } else {
// Editing the new transformer // Editing the new transformer
if (newTransformer) { if (newTransformer) {
const updatedTransformer = { ...newTransformer }; const updatedTransformer = { ...newTransformer };
if (parameterKey !== undefined) { if (parameterKey !== undefined) {
updatedTransformer.parameters![parameterKey] = value; updatedTransformer.options![parameterKey] = value;
} else { } else {
(updatedTransformer as Record<string, unknown>)[field] = value; (updatedTransformer as Record<string, unknown>)[field] = value;
} }
@@ -87,7 +87,7 @@ export function Transformers() {
if (newTransformer && editingTransformerIndex === validTransformers.length) { if (newTransformer && editingTransformerIndex === validTransformers.length) {
// Saving a new transformer // Saving a new transformer
const newTransformers = [...validTransformers, newTransformer]; const newTransformers = [...validTransformers, newTransformer];
setConfig({ ...config, Transformers: newTransformers }); setConfig({ ...config, transformers: newTransformers });
} }
// Close the dialog // Close the dialog
setEditingTransformerIndex(null); setEditingTransformerIndex(null);
@@ -137,16 +137,16 @@ export function Transformers() {
variant="outline" variant="outline"
size="sm" size="sm"
onClick={() => { onClick={() => {
const parameters = editingTransformer.parameters || {}; const parameters = editingTransformer.options || {};
const newKey = `param${Object.keys(parameters).length + 1}`; const newKey = `param${Object.keys(parameters).length + 1}`;
if (editingTransformerIndex !== null) { if (editingTransformerIndex !== null) {
const newParameters = { ...parameters, [newKey]: "" }; const newParameters = { ...parameters, [newKey]: "" };
if (editingTransformerIndex < validTransformers.length) { if (editingTransformerIndex < validTransformers.length) {
const newTransformers = [...validTransformers]; const newTransformers = [...validTransformers];
newTransformers[editingTransformerIndex].parameters = newParameters; newTransformers[editingTransformerIndex].options = newParameters;
setConfig({ ...config, Transformers: newTransformers }); setConfig({ ...config, transformers: newTransformers });
} else if (newTransformer) { } else if (newTransformer) {
setNewTransformer({ ...newTransformer, parameters: newParameters }); setNewTransformer({ ...newTransformer, options: newParameters });
} }
} }
}} }}
@@ -154,22 +154,22 @@ export function Transformers() {
<Plus className="h-4 w-4" /> <Plus className="h-4 w-4" />
</Button> </Button>
</div> </div>
{Object.entries(editingTransformer.parameters || {}).map(([key, value]) => ( {Object.entries(editingTransformer.options || {}).map(([key, value]) => (
<div key={key} className="flex items-center gap-2"> <div key={key} className="flex items-center gap-2">
<Input <Input
value={key} value={key}
onChange={(e) => { onChange={(e) => {
const parameters = editingTransformer.parameters || {}; const parameters = editingTransformer.options || {};
const newParameters = { ...parameters }; const newParameters = { ...parameters };
delete newParameters[key]; delete newParameters[key];
newParameters[e.target.value] = value; newParameters[e.target.value] = value;
if (editingTransformerIndex !== null) { if (editingTransformerIndex !== null) {
if (editingTransformerIndex < validTransformers.length) { if (editingTransformerIndex < validTransformers.length) {
const newTransformers = [...validTransformers]; const newTransformers = [...validTransformers];
newTransformers[editingTransformerIndex].parameters = newParameters; newTransformers[editingTransformerIndex].options = newParameters;
setConfig({ ...config, Transformers: newTransformers }); setConfig({ ...config, transformers: newTransformers });
} else if (newTransformer) { } else if (newTransformer) {
setNewTransformer({ ...newTransformer, parameters: newParameters }); setNewTransformer({ ...newTransformer, options: newParameters });
} }
} }
}} }}
@@ -189,15 +189,15 @@ export function Transformers() {
size="icon" size="icon"
onClick={() => { onClick={() => {
if (editingTransformerIndex !== null) { if (editingTransformerIndex !== null) {
const parameters = editingTransformer.parameters || {}; const parameters = editingTransformer.options || {};
const newParameters = { ...parameters }; const newParameters = { ...parameters };
delete newParameters[key]; delete newParameters[key];
if (editingTransformerIndex < validTransformers.length) { if (editingTransformerIndex < validTransformers.length) {
const newTransformers = [...validTransformers]; const newTransformers = [...validTransformers];
newTransformers[editingTransformerIndex].parameters = newParameters; newTransformers[editingTransformerIndex].options = newParameters;
setConfig({ ...config, Transformers: newTransformers }); setConfig({ ...config, transformers: newTransformers });
} else if (newTransformer) { } else if (newTransformer) {
setNewTransformer({ ...newTransformer, parameters: newParameters }); setNewTransformer({ ...newTransformer, options: newParameters });
} }
} }
}} }}

View File

@@ -22,16 +22,15 @@ export interface RouterConfig {
} }
export interface Transformer { export interface Transformer {
name: string; name?: string;
path: string; path: string;
project: string; options?: Record<string, any>;
parameters?: Record<string, any>;
} }
export interface Config { export interface Config {
Providers: Provider[]; Providers: Provider[];
Router: RouterConfig; Router: RouterConfig;
Transformers: Transformer[]; transformers: Transformer[];
// Top-level settings // Top-level settings
LOG: boolean; LOG: boolean;
CLAUDE_PATH: string; CLAUDE_PATH: string;