Fix node modal form reset when toggling temperature (#713)

This commit is contained in:
rcourtman 2025-11-18 22:28:49 +00:00
parent d93a2c1053
commit 74c2dbfa15

View file

@ -206,6 +206,7 @@ export const NodeModal: Component<NodeModalProps> = (props) => {
// Track previous state to detect changes // Track previous state to detect changes
let previousResetKey: number | undefined = undefined; let previousResetKey: number | undefined = undefined;
let previousNodeType: string | undefined = undefined; let previousNodeType: string | undefined = undefined;
let previousFormSourceSignature: string | null = null;
// Reset form when conditions change // Reset form when conditions change
createEffect(() => { createEffect(() => {
@ -222,6 +223,7 @@ export const NodeModal: Component<NodeModalProps> = (props) => {
setQuickSetupToken(''); setQuickSetupToken('');
setQuickSetupExpiry(null); setQuickSetupExpiry(null);
setTestResult(null); setTestResult(null);
previousFormSourceSignature = null;
return; return;
} }
@ -233,6 +235,7 @@ export const NodeModal: Component<NodeModalProps> = (props) => {
setQuickSetupToken(''); setQuickSetupToken('');
setQuickSetupExpiry(null); setQuickSetupExpiry(null);
setTestResult(null); setTestResult(null);
previousFormSourceSignature = null;
return; return;
} }
previousNodeType = nodeType; previousNodeType = nodeType;
@ -244,6 +247,7 @@ export const NodeModal: Component<NodeModalProps> = (props) => {
setQuickSetupToken(''); setQuickSetupToken('');
setQuickSetupExpiry(null); setQuickSetupExpiry(null);
setTestResult(null); setTestResult(null);
previousFormSourceSignature = null;
} }
}); });
@ -254,8 +258,12 @@ export const NodeModal: Component<NodeModalProps> = (props) => {
createEffect(() => { createEffect(() => {
// Only populate form if we have an editing node AND it matches the current node type // Only populate form if we have an editing node AND it matches the current node type
// This prevents PVE data from being used when adding a PBS node // This prevents PVE data from being used when adding a PBS node
if (props.editingNode && props.editingNode.type === props.nodeType) {
const node = props.editingNode; const node = props.editingNode;
if (!node || node.type !== props.nodeType) {
previousFormSourceSignature = null;
return;
}
let username = ('user' in node ? node.user : '') || ''; let username = ('user' in node ? node.user : '') || '';
let tokenName = node.tokenName || ''; let tokenName = node.tokenName || '';
@ -276,12 +284,12 @@ export const NodeModal: Component<NodeModalProps> = (props) => {
}) })
: undefined; : undefined;
setFormData({ const formSource = {
name: node.name || '', name: node.name || '',
host: node.host || '', host: node.host || '',
guestURL: ('guestURL' in node ? node.guestURL : '') || '', guestURL: ('guestURL' in node ? node.guestURL : '') || '',
authType: node.hasPassword ? 'password' : 'token', authType: node.hasPassword ? 'password' : 'token',
setupMode: 'auto', setupMode: 'auto' as const,
user: username, user: username,
password: '', password: '',
tokenName: tokenName, tokenName: tokenName,
@ -296,8 +304,15 @@ export const NodeModal: Component<NodeModalProps> = (props) => {
monitorQueues: pmgConfig?.monitorQueues ?? true, monitorQueues: pmgConfig?.monitorQueues ?? true,
monitorQuarantine: pmgConfig?.monitorQuarantine ?? true, monitorQuarantine: pmgConfig?.monitorQuarantine ?? true,
monitorDomainStats: pmgConfig?.monitorDomainStats ?? false, monitorDomainStats: pmgConfig?.monitorDomainStats ?? false,
}); };
const formSourceSignature = JSON.stringify(formSource);
if (formSourceSignature === previousFormSourceSignature) {
return;
} }
previousFormSourceSignature = formSourceSignature;
setFormData(formSource);
}); });
const handleSubmit = (e: Event) => { const handleSubmit = (e: Event) => {