diff --git a/portal/templates/app/orgs.html b/portal/templates/app/orgs.html index b006ac7..4045f7d 100644 --- a/portal/templates/app/orgs.html +++ b/portal/templates/app/orgs.html @@ -279,12 +279,9 @@ const domains = domainsRaw ? domainsRaw.split(',').map(d => d.trim().replace(/^@/, '')).filter(Boolean) : undefined; btn.disabled = true; btn.textContent = 'Saving...'; errEl.classList.add('hidden'); try { - // 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 }) @@ -292,8 +289,6 @@ const mData = await mRes.json(); 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({ @@ -314,7 +309,11 @@ if (!res.ok) throw new Error(data.error || 'Failed to save details'); closeEditModal(); loadOrgs(); - } catch(e) { errEl.textContent = e.message; errEl.classList.remove('hidden'); btn.disabled = false; btn.textContent = 'Save Changes'; } + } catch(e) { + errEl.textContent = e.message; errEl.classList.remove('hidden'); + } finally { + btn.disabled = false; btn.textContent = 'Save Changes'; + } } // ---- Members Tab ----