diff --git a/main.py b/main.py index 5ff5190..4547521 100644 --- a/main.py +++ b/main.py @@ -662,6 +662,10 @@ async def update_settings( status_code=status.HTTP_403_FORBIDDEN, detail="Admin access required" ) + # Preserve existing GitHub token when the form submits an empty value. + if not github_token.strip(): + github_token = get_setting(GITHUB_TOKEN, "") + set_setting(DISCORD_WEBHOOK_URL, discord_webhook_url) set_setting(GITHUB_TOKEN, github_token) set_setting(SKIP_SELF_UPDATE, "true" if skip_self_update else "false") diff --git a/templates/settings.html b/templates/settings.html index 727d2a4..ce36cb7 100644 --- a/templates/settings.html +++ b/templates/settings.html @@ -134,13 +134,19 @@
Discord Webhook Setup
if (settingsForm && typeof window.AjaxLoader !== 'undefined') { settingsForm.addEventListener('submit', function(e) { AjaxLoader.show('Saving settings...'); - - // Disable form elements - const formElements = settingsForm.querySelectorAll('input, button'); - formElements.forEach(element => { - element.disabled = true; + + // Keep inputs submitted; make them read-only while the request goes out. + const inputs = settingsForm.querySelectorAll('input'); + inputs.forEach(element => { + element.readOnly = true; + }); + + // Disable buttons to prevent double-submit. + const buttons = settingsForm.querySelectorAll('button'); + buttons.forEach(button => { + button.disabled = true; }); - + // Update button text if (settingsBtn) { settingsBtn.innerHTML = 'Saving...'; @@ -149,4 +155,4 @@
Discord Webhook Setup
} }); -{% endblock %} \ No newline at end of file +{% endblock %}