fix: saveOrg also fetches fresh version before writing — same stale version bug

This commit is contained in:
James 2026-03-20 01:30:30 -04:00
parent 8f6c6898c7
commit f8afed6a61
1 changed files with 11 additions and 8 deletions

View File

@ -279,18 +279,21 @@
const domains = domainsRaw ? domainsRaw.split(',').map(d => d.trim().replace(/^@/, '')).filter(Boolean) : undefined;
btn.disabled = true; btn.textContent = 'Saving...'; errEl.classList.add('hidden');
try {
const version = parseInt(document.getElementById('eVersion').value) || 1;
// Single write: details + members together via members endpoint first, then details
// Actually: save details (which preserves existing members in orgData), then members
// To avoid version race, save members FIRST then details (or combine)
// Simplest: save members first with current version, details second with version+1
// Always fetch fresh version to avoid stale version conflicts
const freshRes = await fetchAPI('/api/orgs/' + editingOrgId);
const freshOrg = await freshRes.json();
let version = freshOrg.version || 1;
// Save members first
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 members');
const newVersion = mData.version || version + 1;
if (!mRes.ok) throw new Error(mData.error || 'Failed to save contacts');
version = mData.version;
// Save details with updated version
const res = await fetchAPI('/api/orgs/' + editingOrgId, {
method: 'PUT',
body: JSON.stringify({
@ -304,7 +307,7 @@
address: document.getElementById('eAddress').value.trim(),
state: document.getElementById('eState').value.trim(),
logo: document.getElementById('eLogo').value.trim(),
version: newVersion,
version,
})
});
const data = await res.json();