From 8f6c6898c7aabf985054aa8aaf6d3f2eed88b7c6 Mon Sep 17 00:00:00 2001 From: James Date: Fri, 20 Mar 2026 01:29:51 -0400 Subject: [PATCH] =?UTF-8?q?fix:=20fetch=20fresh=20version=20before=20savin?= =?UTF-8?q?g=20contacts=20=E2=80=94=20rescrape=20bumps=20version=20making?= =?UTF-8?q?=20eVersion=20stale?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- portal/templates/app/orgs.html | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/portal/templates/app/orgs.html b/portal/templates/app/orgs.html index 1b0dfd9..bd6e732 100644 --- a/portal/templates/app/orgs.html +++ b/portal/templates/app/orgs.html @@ -546,21 +546,25 @@ const errEl = document.getElementById('editModalError'); btn.disabled = true; btn.textContent = 'Saving...'; try { - const version = parseInt(document.getElementById('eVersion').value) || 1; + // Always fetch fresh version to avoid stale version conflicts + const freshRes = await fetchAPI('/api/orgs/' + editingOrgId); + const freshOrg = await freshRes.json(); + const version = freshOrg.version || 1; + document.getElementById('eVersion').value = version; const mRes = await fetchAPI('/api/orgs/' + editingOrgId + '/members', { method: 'PUT', body: JSON.stringify({ members: editingMembers, version }) }); const mData = await mRes.json(); if (!mRes.ok) throw new Error(mData.error || 'Failed to save'); - document.getElementById('eVersion').value = mData.version || version + 1; + document.getElementById('eVersion').value = mData.version; btn.disabled = false; btn.textContent = 'Save Changes'; if (window._orgsMap && window._orgsMap[editingOrgId]) { window._orgsMap[editingOrgId].members = editingMembers; - window._orgsMap[editingOrgId].version = mData.version || version + 1; + window._orgsMap[editingOrgId].version = mData.version; } } catch(e) { - errEl.textContent = 'Save failed: ' + e.message + ' — contacts were added locally, click Save Changes to retry.'; + errEl.textContent = 'Save failed: ' + e.message; errEl.classList.remove('hidden'); btn.disabled = false; btn.textContent = 'Save Changes'; }