fix: NPM remote toggle uses onchange handler instead of to prevent spurious saves
This commit is contained in:
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user