From f4dce4985d4ca54d7ffa27517ab2d3b2c2e6da4a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A8=8B=E5=BA=8F=E5=91=98=E9=98=BF=E6=B1=9F=28Relakkes?= =?UTF-8?q?=29?= Date: Tue, 7 Apr 2026 14:03:50 +0800 Subject: [PATCH] feat: parse pasted JSON to auto-fill provider form fields --- desktop/src/pages/Settings.tsx | 38 +++++++++++++++++++++++++++++++--- 1 file changed, 35 insertions(+), 3 deletions(-) diff --git a/desktop/src/pages/Settings.tsx b/desktop/src/pages/Settings.tsx index 48fa4abc..6fc481da 100644 --- a/desktop/src/pages/Settings.tsx +++ b/desktop/src/pages/Settings.tsx @@ -1,4 +1,4 @@ -import { useState, useEffect } from 'react' +import { useState, useEffect, useRef } from 'react' import { useSettingsStore } from '../stores/settingsStore' import { useProviderStore } from '../stores/providerStore' import { useUIStore } from '../stores/uiStore' @@ -232,9 +232,15 @@ function ProviderFormModal({ open, onClose, mode, provider }: ProviderFormProps) const [isTesting, setIsTesting] = useState(false) const [settingsJson, setSettingsJson] = useState('') const [settingsJsonError, setSettingsJsonError] = useState(null) + const jsonPastedRef = useRef(false) // Load current settings.json and merge provider env vars useEffect(() => { + // Skip if JSON was just populated by user paste + if (jsonPastedRef.current) { + jsonPastedRef.current = false + return + } import('../api/settings').then(({ settingsApi }) => { settingsApi.getUser().then((settings) => { const merged = { @@ -423,10 +429,36 @@ function ProviderFormModal({ open, onClose, mode, provider }: ProviderFormProps)