feat: add contact saves immediately without needing Save Changes
This commit is contained in:
parent
f8afed6a61
commit
579047a54d
|
|
@ -365,7 +365,7 @@
|
||||||
if (editingMembers[i]) editingMembers[i][field] = value;
|
if (editingMembers[i]) editingMembers[i][field] = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
function addGlobalMember() {
|
async function addGlobalMember() {
|
||||||
const name = document.getElementById('newMemberName').value.trim();
|
const name = document.getElementById('newMemberName').value.trim();
|
||||||
const email = document.getElementById('newMemberEmail').value.trim();
|
const email = document.getElementById('newMemberEmail').value.trim();
|
||||||
const title = document.getElementById('newMemberTitle').value.trim();
|
const title = document.getElementById('newMemberTitle').value.trim();
|
||||||
|
|
@ -380,11 +380,38 @@
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
errEl.classList.add('hidden');
|
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 = '');
|
['newMemberName','newMemberEmail','newMemberTitle','newMemberPhoneBiz','newMemberPhonePersonal'].forEach(id => document.getElementById(id).value = '');
|
||||||
window._memberExpanded = {};
|
window._memberExpanded = {};
|
||||||
renderMemberList();
|
renderMemberList();
|
||||||
document.getElementById('newMemberName').focus();
|
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) {
|
function removeGlobalMember(idx) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue