// Public banner wall: a member's line banner plus their upline ladder, with // their join link. The viral surface: members send traffic here, every visit // puts eyes on the whole line. (async function () { await IAP.renderNav(''); const name = location.pathname.split('/').pop(); let w = null; try { w = await (await fetch('/api/wall/' + encodeURIComponent(name))).json(); } catch (e) {} const title = IAP.$('wallTitle'); if (!w || w.error) { title.textContent = 'No wall under that name.'; IAP.$('wallJoin').href = '/my'; return; } const safeName = String(w.name).replace(/[&<>]/g, ''); title.innerHTML = safeName; IAP.$('bioHead').hidden = false; if (w.avatarUrl) { const av = IAP.$('bioAvatar'); av.src = w.avatarUrl; av.hidden = false; } IAP.$('bioText').textContent = w.bio || 'Building a team on InstantAdPay — join through this page and you\'re in my line.'; if (w.qrUrl) IAP.$('bioQr').src = w.qrUrl; IAP.$('wallCtaHead').textContent = 'Join ' + w.name + '’s line'; IAP.$('wallJoin').href = w.joinUrl; const grid = IAP.$('wallGrid'); grid.innerHTML = ''; w.ladder.forEach((m, i) => { const d = document.createElement('div'); d.className = 'wall-card'; const safe = String(m.name || 'member').replace(/[&<>]/g, ''); d.innerHTML = '
Position ' + (i + 1) + (i === 0 ? ' · this wall' : '') + '
' + (m.bannerUrl ? '' + safe + ' banner' : m.targetUrl ? '' + safe + '
visit their site
' : '' + safe + '
banner slot open') + '
' + safe + '
'; grid.appendChild(d); }); })();