From dfaf22248a94ed657c19415287da5fac742088f3 Mon Sep 17 00:00:00 2001 From: Deluan Date: Mon, 29 Dec 2025 11:19:20 -0500 Subject: [PATCH] feat(plugins): update config handling in PluginShow to track last record state Signed-off-by: Deluan --- ui/src/plugin/PluginList.test.jsx | 1 + ui/src/plugin/PluginShow.jsx | 15 ++++++++------- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/ui/src/plugin/PluginList.test.jsx b/ui/src/plugin/PluginList.test.jsx index e1fb7eb5f..1abe056b7 100644 --- a/ui/src/plugin/PluginList.test.jsx +++ b/ui/src/plugin/PluginList.test.jsx @@ -41,6 +41,7 @@ vi.mock('../common', async () => { SimpleList: ({ primaryText, secondaryText }) => (
), + useResourceRefresh: vi.fn(), } }) diff --git a/ui/src/plugin/PluginShow.jsx b/ui/src/plugin/PluginShow.jsx index 93e93baf1..628170646 100644 --- a/ui/src/plugin/PluginShow.jsx +++ b/ui/src/plugin/PluginShow.jsx @@ -32,7 +32,7 @@ const PluginShowLayout = () => { const [configPairs, setConfigPairs] = useState([]) const [isDirty, setIsDirty] = useState(false) - const [configInitialized, setConfigInitialized] = useState(false) + const [lastRecordConfig, setLastRecordConfig] = useState(null) // Convert JSON config to key-value pairs const jsonToPairs = useCallback((jsonString) => { @@ -65,13 +65,14 @@ const PluginShowLayout = () => { return JSON.stringify(obj) }, []) - // Initialize config when record loads + // Initialize/update config when record loads or changes (e.g., from SSE refresh) React.useEffect(() => { - if (record && !configInitialized) { - setConfigPairs(jsonToPairs(record.config || '')) - setConfigInitialized(true) + const recordConfig = record?.config || '' + if (record && recordConfig !== lastRecordConfig && !isDirty) { + setConfigPairs(jsonToPairs(recordConfig)) + setLastRecordConfig(recordConfig) } - }, [record, configInitialized, jsonToPairs]) + }, [record, lastRecordConfig, isDirty, jsonToPairs]) const handleConfigPairsChange = useCallback( (newPairs) => { @@ -93,7 +94,7 @@ const PluginShowLayout = () => { onSuccess: () => { refresh() setIsDirty(false) - setConfigInitialized(false) // Reset to reinitialize from server + setLastRecordConfig(null) // Reset to reinitialize from server notify('resources.plugin.notifications.updated', 'info') }, onFailure: (err) => {