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

View File

@@ -47,7 +47,7 @@ export function TransformerList({ transformers, onEdit, onRemove }: TransformerL
const transformerPath = transformer.path || "Unnamed Transformer";
// 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
const renderParameters = () => {

View File

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

View File

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