From b0f86ed4bb08fb9e98f18a3e19e4593a1c824f42 Mon Sep 17 00:00:00 2001 From: James Date: Fri, 20 Mar 2026 01:44:42 -0400 Subject: [PATCH] =?UTF-8?q?fix:=20saveOrg=20finally=20block=20=E2=80=94=20?= =?UTF-8?q?button=20always=20resets=20regardless=20of=20success/error/clos?= =?UTF-8?q?e=20order?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- portal/templates/app/orgs.html | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) 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 ----