From 55ec4433096ca4b311f1a82a79d26328c18621bc Mon Sep 17 00:00:00 2001 From: sudipnext Date: Tue, 17 Mar 2026 19:50:56 +0545 Subject: [PATCH] Refactor user configuration merging to simplify handling of incoming entries --- electron/app/utils/index.ts | 31 ++--------- .../nextjs/app/api/user-config/route.ts | 52 ++----------------- 2 files changed, 8 insertions(+), 75 deletions(-) diff --git a/electron/app/utils/index.ts b/electron/app/utils/index.ts index 4add319d..7cacb0eb 100644 --- a/electron/app/utils/index.ts +++ b/electron/app/utils/index.ts @@ -10,35 +10,10 @@ export function setUserConfig(userConfig: UserConfig) { const configData = fs.readFileSync(userConfigPath, 'utf-8') existingConfig = JSON.parse(configData) } + const definedIncomingEntries = Object.entries(userConfig).filter(([, value]) => value !== undefined) const mergedConfig: UserConfig = { - CAN_CHANGE_KEYS: userConfig.CAN_CHANGE_KEYS || existingConfig.CAN_CHANGE_KEYS, - LLM: userConfig.LLM || existingConfig.LLM, - OPENAI_API_KEY: userConfig.OPENAI_API_KEY || existingConfig.OPENAI_API_KEY, - OPENAI_MODEL: userConfig.OPENAI_MODEL || existingConfig.OPENAI_MODEL, - GOOGLE_API_KEY: userConfig.GOOGLE_API_KEY || existingConfig.GOOGLE_API_KEY, - GOOGLE_MODEL: userConfig.GOOGLE_MODEL || existingConfig.GOOGLE_MODEL, - ANTHROPIC_API_KEY: userConfig.ANTHROPIC_API_KEY || existingConfig.ANTHROPIC_API_KEY, - ANTHROPIC_MODEL: userConfig.ANTHROPIC_MODEL || existingConfig.ANTHROPIC_MODEL, - OLLAMA_URL: userConfig.OLLAMA_URL || existingConfig.OLLAMA_URL, - OLLAMA_MODEL: userConfig.OLLAMA_MODEL || existingConfig.OLLAMA_MODEL, - CUSTOM_LLM_URL: userConfig.CUSTOM_LLM_URL || existingConfig.CUSTOM_LLM_URL, - CUSTOM_LLM_API_KEY: userConfig.CUSTOM_LLM_API_KEY || existingConfig.CUSTOM_LLM_API_KEY, - CUSTOM_MODEL: userConfig.CUSTOM_MODEL || existingConfig.CUSTOM_MODEL, - PEXELS_API_KEY: userConfig.PEXELS_API_KEY || existingConfig.PEXELS_API_KEY, - PIXABAY_API_KEY: userConfig.PIXABAY_API_KEY || existingConfig.PIXABAY_API_KEY, - IMAGE_PROVIDER: userConfig.IMAGE_PROVIDER || existingConfig.IMAGE_PROVIDER, - DISABLE_IMAGE_GENERATION: userConfig.DISABLE_IMAGE_GENERATION || existingConfig.DISABLE_IMAGE_GENERATION, - EXTENDED_REASONING: userConfig.EXTENDED_REASONING || existingConfig.EXTENDED_REASONING, - TOOL_CALLS: userConfig.TOOL_CALLS || existingConfig.TOOL_CALLS, - DISABLE_THINKING: userConfig.DISABLE_THINKING || existingConfig.DISABLE_THINKING, - WEB_GROUNDING: userConfig.WEB_GROUNDING || existingConfig.WEB_GROUNDING, - DATABASE_URL: userConfig.DATABASE_URL || existingConfig.DATABASE_URL, - DISABLE_ANONYMOUS_TRACKING: userConfig.DISABLE_ANONYMOUS_TRACKING || existingConfig.DISABLE_ANONYMOUS_TRACKING, - COMFYUI_URL: userConfig.COMFYUI_URL || existingConfig.COMFYUI_URL, - COMFYUI_WORKFLOW: userConfig.COMFYUI_WORKFLOW || existingConfig.COMFYUI_WORKFLOW, - DALL_E_3_QUALITY: userConfig.DALL_E_3_QUALITY || existingConfig.DALL_E_3_QUALITY, - GPT_IMAGE_1_5_QUALITY: userConfig.GPT_IMAGE_1_5_QUALITY || existingConfig.GPT_IMAGE_1_5_QUALITY, - CODEX_MODEL: userConfig.CODEX_MODEL || existingConfig.CODEX_MODEL, + ...existingConfig, + ...Object.fromEntries(definedIncomingEntries), CODEX_ACCESS_TOKEN: existingConfig.CODEX_ACCESS_TOKEN, CODEX_REFRESH_TOKEN: existingConfig.CODEX_REFRESH_TOKEN, CODEX_TOKEN_EXPIRES: existingConfig.CODEX_TOKEN_EXPIRES, diff --git a/electron/servers/nextjs/app/api/user-config/route.ts b/electron/servers/nextjs/app/api/user-config/route.ts index b3f95193..80d306bf 100644 --- a/electron/servers/nextjs/app/api/user-config/route.ts +++ b/electron/servers/nextjs/app/api/user-config/route.ts @@ -40,54 +40,12 @@ export async function POST(request: Request) { const configData = fs.readFileSync(userConfigPath, "utf-8"); existingConfig = JSON.parse(configData); } + const definedIncomingEntries = Object.entries(userConfig).filter( + ([, value]) => value !== undefined + ); const mergedConfig: LLMConfig = { - LLM: userConfig.LLM || existingConfig.LLM, - OPENAI_API_KEY: userConfig.OPENAI_API_KEY || existingConfig.OPENAI_API_KEY, - OPENAI_MODEL: userConfig.OPENAI_MODEL || existingConfig.OPENAI_MODEL, - GOOGLE_API_KEY: userConfig.GOOGLE_API_KEY || existingConfig.GOOGLE_API_KEY, - GOOGLE_MODEL: userConfig.GOOGLE_MODEL || existingConfig.GOOGLE_MODEL, - ANTHROPIC_API_KEY: - userConfig.ANTHROPIC_API_KEY || existingConfig.ANTHROPIC_API_KEY, - ANTHROPIC_MODEL: - userConfig.ANTHROPIC_MODEL || existingConfig.ANTHROPIC_MODEL, - OLLAMA_URL: userConfig.OLLAMA_URL || existingConfig.OLLAMA_URL, - OLLAMA_MODEL: userConfig.OLLAMA_MODEL || existingConfig.OLLAMA_MODEL, - CUSTOM_LLM_URL: userConfig.CUSTOM_LLM_URL || existingConfig.CUSTOM_LLM_URL, - CUSTOM_LLM_API_KEY: - userConfig.CUSTOM_LLM_API_KEY || existingConfig.CUSTOM_LLM_API_KEY, - CUSTOM_MODEL: userConfig.CUSTOM_MODEL || existingConfig.CUSTOM_MODEL, - DISABLE_IMAGE_GENERATION: - userConfig.DISABLE_IMAGE_GENERATION === undefined - ? existingConfig.DISABLE_IMAGE_GENERATION - : userConfig.DISABLE_IMAGE_GENERATION, - PIXABAY_API_KEY: - userConfig.PIXABAY_API_KEY || existingConfig.PIXABAY_API_KEY, - IMAGE_PROVIDER: userConfig.IMAGE_PROVIDER || existingConfig.IMAGE_PROVIDER, - PEXELS_API_KEY: userConfig.PEXELS_API_KEY || existingConfig.PEXELS_API_KEY, - COMFYUI_URL: userConfig.COMFYUI_URL || existingConfig.COMFYUI_URL, - COMFYUI_WORKFLOW: - userConfig.COMFYUI_WORKFLOW || existingConfig.COMFYUI_WORKFLOW, - DALL_E_3_QUALITY: - userConfig.DALL_E_3_QUALITY || existingConfig.DALL_E_3_QUALITY, - GPT_IMAGE_1_5_QUALITY: - userConfig.GPT_IMAGE_1_5_QUALITY || existingConfig.GPT_IMAGE_1_5_QUALITY, - TOOL_CALLS: - userConfig.TOOL_CALLS === undefined - ? existingConfig.TOOL_CALLS - : userConfig.TOOL_CALLS, - DISABLE_THINKING: - userConfig.DISABLE_THINKING === undefined - ? existingConfig.DISABLE_THINKING - : userConfig.DISABLE_THINKING, - EXTENDED_REASONING: - userConfig.EXTENDED_REASONING === undefined - ? existingConfig.EXTENDED_REASONING - : userConfig.EXTENDED_REASONING, - WEB_GROUNDING: - userConfig.WEB_GROUNDING === undefined - ? existingConfig.WEB_GROUNDING - : userConfig.WEB_GROUNDING, - CODEX_MODEL: userConfig.CODEX_MODEL || existingConfig.CODEX_MODEL, + ...existingConfig, + ...Object.fromEntries(definedIncomingEntries), CODEX_ACCESS_TOKEN: existingConfig.CODEX_ACCESS_TOKEN, CODEX_REFRESH_TOKEN: existingConfig.CODEX_REFRESH_TOKEN, CODEX_TOKEN_EXPIRES: existingConfig.CODEX_TOKEN_EXPIRES,