// js/pages/profile.js function profile(container) { if (!currentUser) { container.innerHTML = '

Not signed in.

'; return; } container.innerHTML = `
`; console.log('[profile] loaded for', currentUser.docId); } async function profileSave() { const name = document.getElementById('pf-name')?.value.trim(); const org = document.getElementById('pf-org')?.value.trim(); const role = document.getElementById('pf-role')?.value; const fb = document.getElementById('pf-feedback'); if (!name || !org) { _pfFeedback('Name and Org are required.', true); return; } try { // Update users/ doc await db.collection('users').doc(currentUser.docId).set({ account_name: name, org_id: org, account_role: role, last_seen: firebase.firestore.FieldValue.serverTimestamp(), }, { merge: true }); // Update org accounts await db.collection('organizations').doc(currentUser.org) .collection('accounts').doc(currentUser.docId).set({ account_name: name, org_id: org, role, last_seen: firebase.firestore.FieldValue.serverTimestamp(), }, { merge: true }); // Update session currentUser.name = name; currentUser.org = org; currentUser.role = role; sessionStorage.setItem('gift_user', JSON.stringify(currentUser)); document.getElementById('topbar-user').textContent = name; console.log('[profile] saved', { name, org, role }); _pfFeedback('Saved ✓', false); } catch (e) { console.error('[profile] save error', e); _pfFeedback('Error: ' + e.message, true); } } function _pfFeedback(msg, isErr) { const el = document.getElementById('pf-feedback'); if (!el) return; el.textContent = msg; el.className = 'profile-feedback' + (isErr ? ' err' : ''); el.classList.remove('hidden'); setTimeout(() => el.classList.add('hidden'), 3000); }