// js/pages/profile.js
function profile(container) {
if (!currentUser) { container.innerHTML = '
'; 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);
}