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 ----