fix: NPM remote toggle uses onchange handler instead of to prevent spurious saves

This commit is contained in:
2026-04-05 02:33:28 +03:00
parent b54481aff8
commit 0993b3a54e
+7 -14
View File
@@ -130,26 +130,19 @@
} catch { sslCertName = `Certificate #${sslCertificateId}`; } } catch { sslCertName = `Certificate #${sslCertificateId}`; }
} }
let initialized = $state(false); async function handleNpmRemoteChange() {
async function saveNpmRemote(value: boolean) {
try { try {
await updateSettings({ npm_remote: value } as any); await updateSettings({ npm_remote: npmRemote } as any);
toasts.success($t('settingsCredentials.saved')); toasts.success($t('settingsCredentials.saved'));
} catch (err) { } catch (err) {
toasts.error(err instanceof Error ? err.message : $t('settingsCredentials.saveFailed')); toasts.error(err instanceof Error ? err.message : $t('settingsCredentials.saveFailed'));
} }
} }
// Auto-save npm_remote when toggled (skip initial load). async function init() {
$effect(() => { await loadData();
const val = npmRemote; await resolveCertName();
if (initialized) { }
saveNpmRemote(val);
}
});
async function init() { await loadData(); await resolveCertName(); initialized = true; }
$effect(() => { init(); }); $effect(() => { init(); });
</script> </script>
@@ -220,7 +213,7 @@
<!-- NPM Mode --> <!-- NPM Mode -->
<div class="rounded-xl border border-[var(--border-primary)] bg-[var(--surface-card)] p-6 shadow-[var(--shadow-sm)]"> <div class="rounded-xl border border-[var(--border-primary)] bg-[var(--surface-card)] p-6 shadow-[var(--shadow-sm)]">
<div class="flex items-center gap-3"> <div class="flex items-center gap-3">
<ToggleSwitch bind:checked={npmRemote} label={$t('settingsNpm.remoteMode')} /> <ToggleSwitch bind:checked={npmRemote} label={$t('settingsNpm.remoteMode')} onchange={handleNpmRemoteChange} />
<div> <div>
<span class="text-sm font-medium text-[var(--text-primary)]">{$t('settingsNpm.remoteMode')}</span> <span class="text-sm font-medium text-[var(--text-primary)]">{$t('settingsNpm.remoteMode')}</span>
<p class="text-xs text-[var(--text-tertiary)]">{$t('settingsNpm.remoteModeHelp')}</p> <p class="text-xs text-[var(--text-tertiary)]">{$t('settingsNpm.remoteModeHelp')}</p>