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}`; }
}
let initialized = $state(false);
async function saveNpmRemote(value: boolean) {
async function handleNpmRemoteChange() {
try {
await updateSettings({ npm_remote: value } as any);
await updateSettings({ npm_remote: npmRemote } as any);
toasts.success($t('settingsCredentials.saved'));
} catch (err) {
toasts.error(err instanceof Error ? err.message : $t('settingsCredentials.saveFailed'));
}
}
// Auto-save npm_remote when toggled (skip initial load).
$effect(() => {
const val = npmRemote;
if (initialized) {
saveNpmRemote(val);
}
});
async function init() { await loadData(); await resolveCertName(); initialized = true; }
async function init() {
await loadData();
await resolveCertName();
}
$effect(() => { init(); });
</script>
@@ -220,7 +213,7 @@
<!-- NPM Mode -->
<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">
<ToggleSwitch bind:checked={npmRemote} label={$t('settingsNpm.remoteMode')} />
<ToggleSwitch bind:checked={npmRemote} label={$t('settingsNpm.remoteMode')} onchange={handleNpmRemoteChange} />
<div>
<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>