From 9cbd93e1f550ce459db8076a81387f32340bdac1 Mon Sep 17 00:00:00 2001 From: StyxX65 <150797939+StyxX65@users.noreply.github.com> Date: Wed, 10 Jun 2026 15:32:03 +0200 Subject: [PATCH] Reset all share modal fields after creating a link Create only cleared the label; scope type, user email, date range, and expiry carried over, so the next link silently inherited the previous link's scope. Extracted openShareModal's reset logic into _resetShareForm() and call it after every successful create. Co-Authored-By: Claude Fable 5 --- CHANGELOG.md | 4 ++++ static/js/viewer.js | 12 ++++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f71ab9e..44de6c5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,10 @@ Version numbers follow [Semantic Versioning](https://semver.org/spec/v2.0.0.html ## [Unreleased] +### Fixed + +- **Share modal kept stale input after creating a link** — clicking "Create" only cleared the label field; scope type, user email, date range, and expiry kept their values, so the next link silently inherited the previous link's scope settings. The form-reset logic from `openShareModal()` is now a shared `_resetShareForm()` helper called after every successful create (the generated link row stays visible for copying). + --- ## [1.7.3] — 2026-06-10 diff --git a/static/js/viewer.js b/static/js/viewer.js index 1cd9f9e..3e5871c 100644 --- a/static/js/viewer.js +++ b/static/js/viewer.js @@ -138,9 +138,7 @@ function _shareScopeTypeChanged() { if (type === 'user') _initUserAutocomplete(); } -function openShareModal() { - document.getElementById('shareBackdrop').classList.add('open'); - document.getElementById('shareNewLinkRow').style.display = 'none'; +function _resetShareForm() { document.getElementById('shareLabel').value = ''; document.getElementById('shareExpiry').value = '30'; const scopeType = document.getElementById('shareScopeType'); @@ -152,6 +150,12 @@ function openShareModal() { if (scopeDrop) scopeDrop.style.display = 'none'; const vf = document.getElementById('shareValidFrom'); if (vf) vf.value = ''; const vt = document.getElementById('shareValidTo'); if (vt) vt.value = ''; +} + +function openShareModal() { + document.getElementById('shareBackdrop').classList.add('open'); + document.getElementById('shareNewLinkRow').style.display = 'none'; + _resetShareForm(); _renderTokenList(); fetch('/api/viewer/pin').then(function(r){ return r.json(); }).then(function(d) { const el = document.getElementById('sharePinStatus'); @@ -265,7 +269,7 @@ async function createShareLink() { urlInput.value = url; document.getElementById('shareNewLinkRow').style.display = 'block'; document.getElementById('shareCopyBtn').textContent = t('log_copy', 'Copy'); - document.getElementById('shareLabel').value = ''; + _resetShareForm(); _renderTokenList(); } catch(e) { alert(t('share_create_error', 'Failed to create link:') + ' ' + e.message);