Member dashboard: drill-down tree, list view, legend, and strategy-aware referral tool
- "Your team" now covers the member's FULL leg with click-to-drill pyramid, breadcrumb, and a list-view toggle (mirrors the admin matrix). - Legend under both the member tree and admin matrix explaining the qualified checkmark, tier badges, and downline rollup. - "Share this position" card: while under 2/2 it's a personal recruiting tool — per-member QR (vendored qrcode-generator, CSP-safe), copy link, and a join CTA carrying the member's ID as sponsor. At 2/2 the page automatically retires the link and redirects sharing to the team rotator, so personal referrals can't undermine the moving-link strategy. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -266,6 +266,7 @@ async function handleApi(req,res,pathname){
|
||||
if(cached&&Date.now()-cached.ts<120000)return json(res,200,cached.data,{'Cache-Control':'public, max-age=60'});
|
||||
try{
|
||||
const r=await Promise.race([chain.memberPublic(id),new Promise((_,rej)=>setTimeout(()=>rej(new Error('Blockchain lookup timed out — try again.')),20000))]);
|
||||
if(r.registered)r.referralUrl=`${getConfig().dappReferralBaseUrl}${encodeURIComponent(id)}`;
|
||||
memberCache.set(id,{data:r,ts:Date.now()});
|
||||
if(memberCache.size>500)memberCache.delete(memberCache.keys().next().value);
|
||||
return json(res,200,r,{'Cache-Control':'public, max-age=60'});
|
||||
|
||||
Reference in New Issue
Block a user