Fix node modal form reset when toggling temperature (#713)
This commit is contained in:
parent
d93a2c1053
commit
74c2dbfa15
1 changed files with 58 additions and 43 deletions
|
|
@ -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) => {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue