From 9c40ab6a58eba39fbe00aab5347fa9756ab2f168 Mon Sep 17 00:00:00 2001 From: a7m-1st Date: Sun, 1 Feb 2026 20:04:02 +0300 Subject: [PATCH] fix: edit secrets --- .../Trigger/DynamicTriggerConfig.tsx | 26 ++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/src/components/Trigger/DynamicTriggerConfig.tsx b/src/components/Trigger/DynamicTriggerConfig.tsx index e017ddc4..27065324 100644 --- a/src/components/Trigger/DynamicTriggerConfig.tsx +++ b/src/components/Trigger/DynamicTriggerConfig.tsx @@ -155,6 +155,7 @@ const TextInputField: React.FC = ({ const [showSecret, setShowSecret] = useState(false); const [isSaving, setIsSaving] = useState(false); const [touched, setTouched] = useState(false); + const [savedValue, setSavedValue] = useState(null); const isSecret = schema["ui:widget:type"] === "secret"; const hasApiEndpoint = !!schema["api:POST"]; @@ -162,12 +163,19 @@ const TextInputField: React.FC = ({ const isSaved = !!savedConfig; useEffect(() => { - if (isSaved) { + if (isSaved && savedConfig) { + // Store the actual saved value for the eye toggle + setSavedValue(savedConfig.config_value); + // Show masked value in the input setLocalValue("••••••••••••••••"); } else if (value) { setLocalValue(value); + setSavedValue(null); + } else { + setLocalValue(""); + setSavedValue(null); } - }, [value, isSaved]); + }, [value, isSaved, savedConfig]); const handleSave = async () => { if (!localValue || localValue === "••••••••••••••••") { @@ -185,6 +193,7 @@ const TextInputField: React.FC = ({ setIsSaving(true); try { await onSaveConfig(fieldKey, localValue); + setSavedValue(localValue); setLocalValue("••••••••••••••••"); setShowSecret(false); } finally { @@ -202,6 +211,17 @@ const TextInputField: React.FC = ({ onValidate(fieldKey, newValue); }; + const handleToggleSecret = () => { + setShowSecret(!showSecret); + if (!showSecret && savedValue) { + // When showing, display the actual saved value + setLocalValue(savedValue); + } else if (showSecret && isSaved) { + // When hiding and saved, show mask + setLocalValue("••••••••••••••••"); + } + }; + const label = schema["ui:label"] ? t(schema["ui:label"]) : (schema.title || fieldKey); const notice = schema["ui:notice"] ? t(schema["ui:notice"]) : schema.description; const placeholder = schema["ui:placeholder"] ? t(schema["ui:placeholder"]) : undefined; @@ -229,7 +249,7 @@ const TextInputField: React.FC = ({ {isSecret && (