Profile

/* ✏️ EDIT ONLY THIS BLOCK — keep it identical in all 5 files */ window.CW_CONFIG={ wa:'919911705515', /* WhatsApp number, country code first, no + */ email:'support@cookwala.in', phone:'+919911705515', urls:{ /* your real page links (start with /) */ home:'/', book:'/booking/', /* page that has the booking form */ bookings:'/elementor-1341/', /* Bottom-nav 'Bookings' isi page par jata hai — isi page me bookings code hona chahiye */ profile:'/profile/', support:'/support/' } }; .cwp{font-family:'Plus Jakarta Sans',sans-serif;width:100%;display:block;color:#0D0D0D} .cwp *{box-sizing:border-box;-webkit-tap-highlight-color:transparent} .cwp .wrap{max-width:480px;margin:0 auto;padding:18px 18px 110px} .cwp h2{font-size:26px;font-weight:800;text-align:center;color:#4B5563;margin:6px 0 14px} .cwp .av{width:120px;height:120px;border-radius:50%;background:#C9CED8;margin:0 auto 12px;display:flex;align-items:center;justify-content:center;overflow:hidden;font-size:44px;font-weight:800;color:#fff;background-size:cover;background-position:center} .cwp .editimg{display:flex;margin:0 auto 14px;background:#F5C400;color:#0D0D0D;border:none;border-radius:6px;font-family:inherit;font-weight:700;font-size:12px;padding:7px 14px;cursor:pointer;gap:6px;align-items:center} .cwp .type{display:flex;justify-content:center;gap:22px;margin-bottom:18px;font-size:14px;font-weight:600} .cwp .type label{display:flex;align-items:center;gap:6px;cursor:pointer} .cwp .type input{accent-color:#F5C400;width:17px;height:17px} .cwp .row{margin-bottom:14px} .cwp .tg{font-size:13px;font-weight:700;color:#0A84FF;text-decoration:none;cursor:pointer;background:none;border:none;font-family:inherit;padding:4px 0} .cwp .ok{display:flex;align-items:center;gap:6px;color:#10B981;font-size:13px;font-weight:700;margin:8px 0 4px} .cwp .extra{display:flex;gap:8px;align-items:center;margin-top:8px} .cwp .extra .cwx-mob{flex:1} .cwp .rm{width:38px;height:44px;border:1.5px solid #EBEBEB;border-radius:12px;background:#fff;color:#EF4444;cursor:pointer;flex-shrink:0} .cwp .hd{display:flex;align-items:baseline;gap:10px;margin:34px 0 12px} .cwp .hd h3{font-size:22px;font-weight:800;color:#4B5563} .cwp .ad{border:1px solid #93C5FD;border-radius:6px;overflow:hidden;margin-bottom:14px;background:#fff} .cwp .ad-b{background:#F8F8F6;padding:14px;position:relative} .cwp .ad-l{font-size:13px;font-weight:800;margin-bottom:6px;display:flex;gap:8px;align-items:center} .cwp .tag{font-size:10px;font-weight:800;background:#FFFAE8;border:1px solid rgba(245,196,0,.5);color:#C49B00;border-radius:20px;padding:2px 8px} .cwp .ad-t{font-size:13px;color:#374151;line-height:1.55} .cwp .ad-x{position:absolute;top:10px;right:12px;border:none;background:none;color:#6B7280;font-size:16px;cursor:pointer;padding:6px} .cwp .ad-f{display:flex;border-top:1px solid #E5E7EB} .cwp .ad-f button{flex:1;padding:12px;border:none;background:#fff;font-family:inherit;font-size:13px;font-weight:600;cursor:pointer;color:#6B7280} .cwp .ad-f button.e{color:#0A84FF} .cwp .ad-f button.d{color:#10B981;font-weight:800} .cwp .chips{display:flex;gap:8px;margin-bottom:14px} .cwp .chip{flex:1;padding:10px;border:1.5px solid #EBEBEB;border-radius:10px;background:#fff;font-family:inherit;font-size:13px;font-weight:700;cursor:pointer;color:#6B7280} .cwp .chip.on{border-color:#F5C400;background:#FFFAE8;color:#0D0D0D} .cwp .mt{margin-top:14px} .cwp .empty{text-align:center;padding:30px 16px} .cwp .empty .ic{width:64px;height:64px;border-radius:50%;background:#FFFAE8;display:flex;align-items:center;justify-content:center;margin:0 auto 14px;font-size:26px} .cwp .empty h3{font-size:16px;font-weight:800;margin-bottom:6px} .cwp .empty p{font-size:13px;color:#6B7280;line-height:1.55;margin-bottom:16px} .cwp .empty .cwx-btn{max-width:260px;margin:0 auto} .cwp .none{font-size:13px;color:#6B7280;background:#F8F8F6;border-radius:10px;padding:14px;text-align:center} .cwp .who{text-align:center;font-size:12px;color:#6B7280;margin:-6px 0 14px} .cwp .who a{color:#C49B00;font-weight:700;cursor:pointer;margin-left:6px}
/* ===== COOKWALA SHARED CORE (identical in every file; loads only once per page) ===== */ (function(){ 'use strict'; if(window.CWCORE)return; var D=window.CW_CONFIG||{}; var apiLink=null; try{apiLink=document.querySelector('link[rel="https://api.w.org/"]');}catch(e){} var CFG={ wa:D.wa||'919911705515', email:D.email||'support@cookwala.in', phone:D.phone||'+919911705515', api:D.api||((apiLink&&apiLink.href?apiLink.href:'/wp-json/')+'cookwala/v1/'), urls:Object.assign({home:'/',book:'/booking/',bookings:'/elementor-1341/',profile:'/profile/',support:'/support/'},D.urls||{}) }; var K={sess:'cw_session_mobile',last:'cw_last_mobile',keep:'cw_keep_login',prof:'cw_profiles',book:'cw_bookings',gate:'cw_gate_shown'}; /* ---------- storage (never throws) ---------- */ function st(n){try{return n==='s'?window.sessionStorage:window.localStorage;}catch(e){return null;}} function get(n,k,d){var s=st(n);if(!s)return d;try{var v=s.getItem(k);return v?JSON.parse(v):d;}catch(e){return d;}} function set(n,k,v){var s=st(n);if(!s)return false;try{s.setItem(k,JSON.stringify(v));return true;}catch(e){return false;}} function del(n,k){var s=st(n);if(s){try{s.removeItem(k);}catch(e){}}} /* ---------- helpers ---------- */ function esc(s){return String(s==null?'':s).replace(/[&"']/g,function(c){return {'&':'&','':'>','"':'"',"'":'''}[c];});} function norm(v){return String(v||'').replace(/\D/g,'').slice(-10);} function valid(m){ var seq='01234567890123456789',rev='98765432109876543210'; return m.length===10&&parseInt(m.charAt(0),10)>=6&&!/^(\d)\1{9}$/.test(m)&&seq.indexOf(m)<0&&rev.indexOf(m)<0; } function pretty(m){return m&&m.length===10?'+91 '+m.slice(0,5)+' '+m.slice(5):m||'';} function pad(n){return n<10?'0'+n:''+n;} function isoOf(d){return d.getFullYear()+'-'+pad(d.getMonth()+1)+'-'+pad(d.getDate());} function todayISO(){return isoOf(new Date());} function dateOf(iso){var p=String(iso).split('-');return new Date(+p[0],+p[1]-1,+p[2]);} function fmtDate(iso,long){ try{return dateOf(iso).toLocaleDateString('en-IN',long?{weekday:'short',day:'numeric',month:'short',year:'numeric'}:{day:'numeric',month:'short'});}catch(e){return iso;} } function fmtDates(dates){ if(!dates||!dates.length)return 'Date to be confirmed'; var s=dates.slice().sort(); if(s.length===1)return fmtDate(s[0],true); var range=true; for(var i=0;i<s.length-1;i++){if(Math.round((dateOf(s[i+1])-dateOf(s[i]))/86400000)!==1){range=false;break;}} var y=' '+dateOf(s[s.length-1]).getFullYear(); if(range)return fmtDate(s[0])+' – '+fmtDate(s[s.length-1])+y+' ('+s.length+' days)'; return s.length<=3?s.map(function(x){return fmtDate(x);}).join(', ')+y:s.length+' dates, '+fmtDate(s[0])+' onwards'; } function waLink(text){return 'https://wa.me/'+CFG.wa+'?text='+encodeURIComponent(text||'Hi Cookwala!');} /* ---------- session (asked once per browser session) ---------- */ /* FIX: login ab sirf sessionStorage par nahi tikta. sessionStorage naye tab / WhatsApp redirect / in-app browser me kho jata tha, isse Profile & Support me booking-data gayab ho jata tha. Ab device par 30 din yaad rehta hai. */ function sessionMobile(){ var m=get('s',K.sess,'');if(valid(m))return m; var k=get('l',K.keep,null); if(k&&valid(k.m)&&(Date.now()-(k.t||0))-1;});} function addBooking(b){ var all=allBookings().filter(function(x){return x.id!==b.id;}); all.push(b);set('l',K.book,all);return b; } function updateBooking(id,patch){ var all=allBookings(); for(var i=0;i<all.length;i++){if(all[i].id===id){for(var k in patch){all[i][k]=patch[k];}break;}} set('l',K.book,all); } function bucket(b){ if(b.status==='cancelled')return 'past'; var d=(b.dates||[]).slice().sort(),last=d.length?d[d.length-1]:''; if(last&&last<todayISO())return 'past'; return b.status==='confirmed'?'current':'cart'; } /* ---------- server sync (WordPress plugin: cookwala-sync) ---------- */ function api(path,opts){ return fetch(CFG.api+path,opts).then(function(r){if(!r.ok)throw new Error('http');return r.json();}); } function post(path,data){ return api(path,{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify(data),credentials:'omit'}); } function register(m,name,source){ var p=ensureProfile(m,name); if(p.srv)return; post('register',{mobile:m,name:p.name||name||'',source:source||'web'}) .then(function(){saveProfile(m,{srv:true});}).catch(function(){}); } function pushBooking(b){ post('booking',b).then(function(){updateBooking(b.id,{srv:true});}).catch(function(){}); } function retrySync(){ var m=sessionMobile();if(!m)return; register(m,'','retry'); bookingsFor(m).forEach(function(b){if(!b.srv)pushBooking(b);}); } function refreshStatuses(cb){ var m=sessionMobile(); var ids=(m?bookingsFor(m):[]).filter(function(b){return b.srv&&bucket(b)!=='past';}).map(function(b){return b.id;}); if(!ids.length){if(cb)cb();return;} api('status?ids='+encodeURIComponent(ids.join(','))).then(function(res){ var map=(res&&res.status)||{}; ids.forEach(function(id){ var b=allBookings().filter(function(x){return x.id===id;})[0]; if(b&&map[id]&&b.status!=='cancelled'&&map[id]!==b.status)updateBooking(id,{status:map[id]}); }); if(cb)cb(); }).catch(function(){if(cb)cb();}); } /* ---------- UI: styles, toast, sheet, gate ---------- */ function injectCss(){ if(document.getElementById('cwxCoreCss'))return; if(!document.querySelector('link[href*="Plus+Jakarta"]')){ var l=document.createElement('link');l.rel='stylesheet'; l.href='https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&display=swap'; document.head.appendChild(l); } var s=document.createElement('style');s.id='cwxCoreCss'; s.textContent= '.cwx-bd{position:fixed;inset:0;background:rgba(0,0,0,.6);z-index:999990;display:none;align-items:flex-end;justify-content:center;font-family:"Plus Jakarta Sans",sans-serif}'+ '.cwx-bd.open{display:flex;animation:cwxF .2s ease}'+ '@keyframes cwxF{from{opacity:0}to{opacity:1}}@keyframes cwxU{from{transform:translateY(60px);opacity:0}to{transform:none;opacity:1}}'+ '.cwx-sheet{background:#fff;width:100%;max-width:480px;border-radius:22px 22px 0 0;padding:22px 20px max(24px,env(safe-area-inset-bottom));max-height:calc(100vh - 30px);max-height:calc(100dvh - 30px);overflow-y:auto;position:relative;animation:cwxU .28s ease;box-sizing:border-box}'+ '@media(min-width:768px){.cwx-bd{align-items:center}.cwx-sheet{border-radius:22px}}'+ '.cwx-sheet *{box-sizing:border-box;font-family:inherit}'+ '.cwx-x{position:absolute;top:12px;right:12px;width:34px;height:34px;border-radius:50%;border:none;background:#F8F8F6;color:#6B7280;font-size:18px;line-height:1;cursor:pointer;touch-action:manipulation}'+ '.cwx-brand{text-align:center;font-size:13px;font-weight:800;letter-spacing:1px;color:#C49B00;margin-top:6px}'+ '.cwx-h{font-size:21px;font-weight:800;color:#0D0D0D;text-align:center;margin:6px 0 4px;line-height:1.25}'+ '.cwx-sub{font-size:13px;color:#6B7280;text-align:center;line-height:1.55;margin-bottom:18px}'+ '.cwx-lbl{display:block;font-size:11px;font-weight:700;color:#6B7280;text-transform:uppercase;letter-spacing:.7px;margin:0 0 7px}'+ '.cwx-in{width:100%;padding:13px 15px;border:1.5px solid #EBEBEB;border-radius:14px;font-size:15px;font-weight:500;color:#0D0D0D;background:#fff;outline:none;-webkit-appearance:none;appearance:none}'+ '.cwx-in:focus{border-color:#F5C400;box-shadow:0 0 0 3px rgba(245,196,0,.15)}'+ '.cwx-in.bad{border-color:#EF4444}'+ '.cwx-mob{display:flex;align-items:stretch}'+ '.cwx-cc{display:flex;align-items:center;background:#F8F8F6;border:1.5px solid #EBEBEB;border-right:none;border-radius:14px 0 0 14px;padding:0 12px;font-size:13px;font-weight:700;color:#0D0D0D;white-space:nowrap}'+ '.cwx-mob .cwx-in{border-radius:0 14px 14px 0;font-size:18px;font-weight:700;letter-spacing:2px;min-width:0}'+ '.cwx-err{display:none;font-size:11px;font-weight:600;color:#EF4444;margin-top:6px}.cwx-err.show{display:block}'+ '.cwx-btn{width:100%;padding:15px;border:none;border-radius:14px;font-size:15px;font-weight:800;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px;text-decoration:none;touch-action:manipulation;-webkit-appearance:none;appearance:none;line-height:1.2}'+ '.cwx-btn.y{background:#F5C400;color:#0D0D0D;box-shadow:0 4px 14px rgba(245,196,0,.35)}.cwx-btn.y:active{background:#C49B00}'+ '.cwx-btn.k{background:#0D0D0D;color:#fff}.cwx-btn.g{background:#fff;color:#0D0D0D;border:1.5px solid #EBEBEB}'+ '.cwx-btn.w{background:#25D366;color:#fff}'+ '.cwx-note{font-size:11px;color:#6B7280;text-align:center;line-height:1.5;margin-top:12px}'+ '.cwx-toast{position:fixed;bottom:100px;left:50%;transform:translateX(-50%) translateY(16px);background:#0D0D0D;color:#fff;padding:12px 20px;border-radius:30px;font-size:13px;font-weight:600;font-family:"Plus Jakarta Sans",sans-serif;z-index:9999999;opacity:0;transition:opacity .3s,transform .3s;pointer-events:none;max-width:90vw;text-align:center}'+ '.cwx-toast.show{opacity:1;transform:translateX(-50%) translateY(0)}'; document.head.appendChild(s); } var _tt=null; function toast(msg){ injectCss(); var t=document.getElementById('cwxToast'); if(!t){t=document.createElement('div');t.id='cwxToast';t.className='cwx-toast';document.body.appendChild(t);} t.textContent=msg;t.classList.add('show'); clearTimeout(_tt);_tt=setTimeout(function(){t.classList.remove('show');},3000); } function sheet(html,opts){ injectCss();opts=opts||{}; var bd=document.createElement('div');bd.className='cwx-bd';if(opts.id)bd.id=opts.id; bd.innerHTML='
'+html+'
'; document.body.appendChild(bd); var api_={el:bd,close:function(){if(bd.parentNode)bd.parentNode.removeChild(bd);document.body.style.overflow=prev;if(opts.onClose)opts.onClose();}}; var prev=document.body.style.overflow;document.body.style.overflow='hidden'; bd.querySelector('.cwx-x').addEventListener('click',api_.close); bd.addEventListener('click',function(e){if(e.target===bd)api_.close();}); requestAnimationFrame(function(){bd.classList.add('open');}); return api_; } /* "Enter your WhatsApp number" popup */ function gate(opts){ opts=opts||{}; if(document.getElementById('cwxGate'))return; var last=lastMobile(); var sh=sheet( '
🍳 COOKWALA
'+ '
'+esc(opts.title||'Cook at your doorstep')+'
'+ '
'+esc(opts.sub||"India's first cooking services at home")+'
'+ ''+ '
🇮🇳 +91
'+ '
'+ '
Please enter a valid 10-digit WhatsApp number.
'+ ''+ '
We use this number for booking updates on WhatsApp.
', {id:'cwxGate',onClose:function(){if(!done&&opts.onCancel)opts.onCancel();}} ); var done=false,inp=sh.el.querySelector('#cwxGateIn'),err=sh.el.querySelector('#cwxGateErr'); inp.addEventListener('input',function(){inp.value=inp.value.replace(/\D/g,'').slice(0,10);err.classList.remove('show');inp.classList.remove('bad');}); function go(){ var m=norm(inp.value); if(!valid(m)){err.classList.add('show');inp.classList.add('bad');return;} done=true;setSession(m); var isNew=!getProfile(m); ensureProfile(m,'');register(m,'',opts.source||'popup'); sh.close(); toast(isNew?'Welcome! Your account is ready.':'Welcome back'+(nameFor(m)?', '+nameFor(m):'')+'!'); try{document.dispatchEvent(new CustomEvent('cw:login',{detail:{mobile:m}}));}catch(e){} if(opts.done)opts.done(m); } sh.el.querySelector('#cwxGateGo').addEventListener('click',go); inp.addEventListener('keydown',function(e){if(e.key==='Enter')go();}); setTimeout(function(){try{inp.focus();}catch(e){}},300); } /* site-wide: ask once per session on first landing */ function autoGate(){ function run(){ if(sessionMobile())return; if(document.querySelector('[data-cw-page],.cw-embed'))return; if(get('s',K.gate,false))return; setTimeout(function(){ if(sessionMobile()||document.getElementById('cwxGate'))return; set('s',K.gate,true);gate({source:'site-visit'}); },1200); } if(document.readyState==='loading')document.addEventListener('DOMContentLoaded',run);else run(); } window.CWCORE={ cfg:CFG,K:K,get:get,set:set,del:del,esc:esc,norm:norm,valid:valid,pretty:pretty,todayISO:todayISO,isoOf:isoOf,dateOf:dateOf, fmtDate:fmtDate,fmtDates:fmtDates,waLink:waLink, sessionMobile:sessionMobile,setSession:setSession,logout:logout,lastMobile:lastMobile, getProfile:getProfile,ensureProfile:ensureProfile,saveProfile:saveProfile,numbersFor:numbersFor,nameFor:nameFor, allBookings:allBookings,bookingsFor:bookingsFor,addBooking:addBooking,updateBooking:updateBooking,bucket:bucket, register:register,pushBooking:pushBooking,retrySync:retrySync,refreshStatuses:refreshStatuses, injectCss:injectCss,toast:toast,sheet:sheet,gate:gate,autoGate:autoGate }; injectCss(); if(document.readyState==='loading')document.addEventListener('DOMContentLoaded',retrySync);else setTimeout(retrySync,500); }()); (function(){ 'use strict'; var C=window.CWCORE;if(!C)return; var root=document.getElementById('cwpRoot'),E=C.esc; var extraDraft=[]; function openGate(){C.gate({source:'profile',done:function(){render();}});} function render(){ var m=C.sessionMobile(); if(!m){ root.innerHTML='

My Profile

📱

Enter your WhatsApp number

'+ '

We need your WhatsApp number to open your profile.

'+ '
'; root.querySelector('#cwpGate').onclick=openGate;return; } var p=C.ensureProfile(m,''),name=p.name||''; extraDraft=(p.extra||[]).slice(); var initial=(name||'C').trim().charAt(0).toUpperCase(); var avStyle=p.avatar?' style="background-image:url('+E(p.avatar)+')"':''; root.innerHTML= '

My Profile

'+ '
'+(p.avatar?'':E(initial))+'
'+ ''+ ''+ '
'+ '
'+ '
'+ '
'+ '
Please enter a valid email.
'+ '
'+ '
🇮🇳 +91
'+ '
Registered
'+ '
'+ '
'+ '
'+ ['','Male','Female','Other','Prefer not to say'].map(function(g){return ''+(g||'Select gender')+'';}).join('')+'
'+ ''+ '

My Addresses

'+ '
'; drawExtra();drawAds(); root.querySelector('#cwpChg').onclick=function(){C.logout();render();openGate();}; root.querySelector('#cwpImgBtn').onclick=function(){root.querySelector('#cwpFile').click();}; root.querySelector('#cwpFile').onchange=pickImage; root.querySelectorAll('input[name=cwpType]').forEach(function(r){r.onchange=function(){root.querySelector('#cwpBizRow').style.display=r.value==='business'&&r.checked?'block':'none';};}); root.querySelector('#cwpAddNum').onclick=function(){extraDraft.push('');drawExtra();var l=root.querySelectorAll('#cwpExtra input');if(l.length)l[l.length-1].focus();}; root.querySelector('#cwpSave').onclick=save; root.querySelector('#cwpAddAd').onclick=function(){addrForm(null);}; } function drawExtra(){ var box=root.querySelector('#cwpExtra'); box.innerHTML=extraDraft.map(function(n,i){ return '
🇮🇳 +91
'+ '
'; }).join(''); box.querySelectorAll('input').forEach(function(inp){inp.oninput=function(){inp.value=inp.value.replace(/\D/g,'').slice(0,10);extraDraft[+inp.getAttribute('data-i')]=inp.value;inp.classList.remove('bad');};}); box.querySelectorAll('[data-r]').forEach(function(b){b.onclick=function(){extraDraft.splice(+b.getAttribute('data-r'),1);drawExtra();};}); } function pickImage(e){ var f=e.target.files&&e.target.files[0];if(!f)return; var rd=new FileReader(); rd.onload=function(){ var img=new Image(); img.onload=function(){ var s=240,cv=document.createElement('canvas');cv.width=cv.height=s; var ctx=cv.getContext('2d'),r=Math.min(img.width,img.height),sx=(img.width-r)/2,sy=(img.height-r)/2; ctx.drawImage(img,sx,sy,r,r,0,0,s,s); var url=cv.toDataURL('image/jpeg',0.8),av=root.querySelector('#cwpAv'); av.style.backgroundImage='url('+url+')';av.textContent=''; C.saveProfile(C.sessionMobile(),{avatar:url});C.toast('Photo updated'); }; img.onerror=function(){C.toast('Could not read that image');}; img.src=rd.result; }; rd.readAsDataURL(f); } function save(){ var m=C.sessionMobile();if(!m)return; var email=root.querySelector('#cwpEmail').value.trim(),eErr=root.querySelector('#cwpEmailErr'),ok=true; eErr.classList.remove('show'); if(email&&!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email)){eErr.classList.add('show');ok=false;} var extras=[],inputs=root.querySelectorAll('#cwpExtra input'); inputs.forEach(function(inp,i){ var v=C.norm(inp.value); if(!v&&!inp.value)return; if(!C.valid(v)||v===m||extras.indexOf(v)>-1){inp.classList.add('bad');ok=false;}else extras.push(v); }); if(!ok){C.toast('Please fix the highlighted fields');return;} var type=(root.querySelector('input[name=cwpType]:checked')||{}).value||'individual'; var name=root.querySelector('#cwpName').value.trim(); C.saveProfile(m,{ name:name,email:email,type:type,bizName:type==='business'?root.querySelector('#cwpBiz').value.trim():'', dob:root.querySelector('#cwpDob').value,gender:root.querySelector('#cwpGender').value,extra:extras,srv:false }); C.register(m,name,'profile'); var av=root.querySelector('#cwpAv');if(av&&!av.style.backgroundImage)av.textContent=(name||'C').charAt(0).toUpperCase(); C.toast('Profile saved ✓'); } function drawAds(){ var m=C.sessionMobile(),p=C.getProfile(m),list=(p&&p.addresses)||[],box=root.querySelector('#cwpAds'); if(!list.length){box.innerHTML='
No saved addresses yet. Tap +Add Address to add one.
';return;} box.innerHTML=list.map(function(a){ return '
'+ '
'+E(a.label||'Home')+(a.isDefault?' DEFAULT':'')+'
'+ '
'+E(a.line1)+(a.line2?', '+E(a.line2):'')+'
'+E(a.city)+(a.pin?' - '+E(a.pin):'')+'
'+ '
'+ '
'; }).join(''); box.querySelectorAll('[data-del]').forEach(function(b){b.onclick=function(){ if(!confirm('Delete this address?'))return; var id=b.getAttribute('data-del'),l=list.filter(function(a){return a.id!==id;}); if(l.length&&!l.some(function(a){return a.isDefault;}))l[0].isDefault=true; C.saveProfile(m,{addresses:l});drawAds(); };}); box.querySelectorAll('[data-def]').forEach(function(b){b.onclick=function(){ var id=b.getAttribute('data-def'); C.saveProfile(m,{addresses:list.map(function(a){a.isDefault=a.id===id;return a;})});drawAds();C.toast('Default address set'); };}); box.querySelectorAll('[data-edit]').forEach(function(b){b.onclick=function(){ addrForm(list.filter(function(a){return a.id===b.getAttribute('data-edit');})[0]); };}); } function addrForm(a){ var m=C.sessionMobile(),p=C.getProfile(m),list=(p&&p.addresses)||[]; var _c='';try{_c=localStorage.getItem('cw_city')||'';if(_c.charAt(0)==='"'){_c=JSON.parse(_c);}}catch(e){} var cityDefault=a?a.city:_c; var label=a?a.label:'Home'; var sh=C.sheet( '
'+(a?'Edit Address':'Add Address')+'
'+ '
'+['Home','Work','Other'].map(function(l){return '';}).join('')+'
'+ '
'+ '
'+ '
'+ '
'+ '
Please fill house/flat and city. Pincode must be 6 digits.
'+ '' ); var el=sh.el; el.querySelectorAll('.chip').forEach(function(c){c.onclick=function(){label=c.getAttribute('data-l');el.querySelectorAll('.chip').forEach(function(x){x.classList.toggle('on',x===c);});};}); el.querySelector('#adPin').oninput=function(){this.value=this.value.replace(/\D/g,'').slice(0,6);}; el.querySelector('#adSave').onclick=function(){ var l1=el.querySelector('#adL1').value.trim(),l2=el.querySelector('#adL2').value.trim(), city=el.querySelector('#adCity').value.trim(),pin=el.querySelector('#adPin').value.trim(); if(!l1||!city||(pin&&pin.length!==6)){el.querySelector('#adErr').classList.add('show');return;} var rec={id:a?a.id:'ad'+Date.now(),label:label,line1:l1,line2:l2,city:city,pin:pin,isDefault:a?a.isDefault:!list.length}; var out=a?list.map(function(x){return x.id===a.id?rec:x;}):list.concat([rec]); C.saveProfile(m,{addresses:out});sh.close();drawAds();C.toast('Address saved ✓'); }; } render(); if(!C.sessionMobile())openGate(); window.addEventListener('storage',function(){}); }());
Scroll to Top