diff --git a/portal/templates/app/orgs.html b/portal/templates/app/orgs.html
index aea999b..eba56bd 100644
--- a/portal/templates/app/orgs.html
+++ b/portal/templates/app/orgs.html
@@ -365,7 +365,7 @@
if (editingMembers[i]) editingMembers[i][field] = value;
}
- function addGlobalMember() {
+ async function addGlobalMember() {
const name = document.getElementById('newMemberName').value.trim();
const email = document.getElementById('newMemberEmail').value.trim();
const title = document.getElementById('newMemberTitle').value.trim();
@@ -380,11 +380,38 @@
return;
}
errEl.classList.add('hidden');
- editingMembers.push({ name, email, title, phone_business, phone_personal, photo: '', bio: '', linkedin: '' });
+ const newMember = { name, email, title, phone_business, phone_personal, photo: '', bio: '', linkedin: '' };
+ editingMembers.push(newMember);
['newMemberName','newMemberEmail','newMemberTitle','newMemberPhoneBiz','newMemberPhonePersonal'].forEach(id => document.getElementById(id).value = '');
window._memberExpanded = {};
renderMemberList();
document.getElementById('newMemberName').focus();
+ // Save immediately
+ const btn = document.getElementById('saveOrgBtn');
+ const addBtn = document.querySelector('[onclick="addGlobalMember()"]');
+ if (addBtn) { addBtn.disabled = true; addBtn.textContent = 'Saving...'; }
+ try {
+ const freshRes = await fetchAPI('/api/orgs/' + editingOrgId);
+ const freshOrg = await freshRes.json();
+ const version = freshOrg.version || 1;
+ 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');
+ document.getElementById('eVersion').value = mData.version;
+ if (window._orgsMap && window._orgsMap[editingOrgId]) {
+ window._orgsMap[editingOrgId].version = mData.version;
+ window._orgsMap[editingOrgId].members = editingMembers;
+ }
+ } catch(e) {
+ errEl.textContent = 'Save failed: ' + e.message;
+ errEl.classList.remove('hidden');
+ setTimeout(() => errEl.classList.add('hidden'), 4000);
+ } finally {
+ if (addBtn) { addBtn.disabled = false; addBtn.textContent = '+ Add contact'; }
+ }
}
function removeGlobalMember(idx) {