{
if(document.hidden){ stopMojePolling(); }
else if(tab==='moje'){ odswiezMojeCicho(); startMojePolling(); }
});
if(token)start();else renderLogin();
// ============ USTAWIENIA KONTA KLIENTA ============
function _podswietlMotyw(){
var akt=document.documentElement.getAttribute('data-theme')==='jasny'?'jasny':'ciemny';
var j=document.getElementById('motywJasny'), c=document.getElementById('motywCiemny');
var ON='flex:1;background:var(--akcent);color:#fff;border-color:var(--akcent);font-weight:600;';
var OFF='flex:1;background:var(--karta2);color:var(--tekst2);border:1px solid var(--border);';
if(j) j.style.cssText=(akt==='jasny'?ON:OFF);
if(c) c.style.cssText=(akt==='ciemny'?ON:OFF);
}
function wybierzMotyw(m){ ustawMotyw(m); setTimeout(_podswietlMotyw,30); }
// d56-subkonta-ui: zarzadzanie subkontami (tylko konto glowne)
async function ladujMojeSubkonta(){
const box = document.getElementById('ustSubkonta');
const sekcja = document.getElementById('ustSubkontaSekcja');
try{
const r = await api('GET','/api/subkonta');
// sukces = jestesmy kontem glownym -> pokaz sekcje
if(sekcja) sekcja.style.display='';
const suby = (r&&r.subkonta)||[];
if(!box) return;
if(!suby.length){ box.innerHTML='Brak subkont. Dodaj pierwsze dla podwykonawcy.
'; return; }
box.innerHTML = suby.map(s=>`
${esc(s.nazwa_firmy||s.imie||s.email)}
${esc(s.email)} \u00b7 ${s.pokazuj_ceny?'ceny widoczne':'ceny ukryte'}
`).join('');
}catch(e){
// 403 = jestesmy subkontem -> sekcja zostaje ukryta (subkonto nie zarzadza subkontami)
if(sekcja) sekcja.style.display='none';
}
}
function dodajSubkontoModal(){
const tlo = document.getElementById('modalTlo') || document.body;
let modal = document.getElementById('subkontoModal');
if(!modal){
modal = document.createElement('div');
modal.id='subkontoModal';
modal.style.cssText='position:fixed;inset:0;background:rgba(0,0,0,.5);display:flex;align-items:center;justify-content:center;z-index:9999;padding:16px;';
document.body.appendChild(modal);
}
modal.innerHTML = ``;
}
async function zapiszSubkonto(){
const email=(document.getElementById('subEmail')||{}).value||'';
const haslo=(document.getElementById('subHaslo')||{}).value||'';
const nazwa=(document.getElementById('subNazwa')||{}).value||'';
const imie=(document.getElementById('subImie')||{}).value||'';
const st=document.getElementById('subStatus');
if(!email.trim()||haslo.length<6){ if(st){st.style.color='#e0241b';st.textContent='Email + haslo min. 6 znakow';} return; }
try{
await api('POST','/api/subkonta',{email:email.trim(),haslo,nazwa_firmy:nazwa.trim()||null,imie:imie.trim()||null});
const m=document.getElementById('subkontoModal'); if(m) m.remove();
toast('Subkonto utworzone \u2713');
ladujMojeSubkonta();
}catch(e){ if(st){st.style.color='#e0241b';st.textContent='Blad: '+(e.message||'');} }
}
async function renderUstawienia(){
const w=document.getElementById('widok'); if(!w) return;
w.innerHTML='Ustawienia ';
try{
const p=await api('GET','/api/konto/profil');
setTimeout(_podswietlMotyw, 50);
document.getElementById('ustTresc').innerHTML=`
Motyw aplikacji
\u2600\uFE0F Jasny
\u{1F319} Ciemny
Konto
E-mail ${esc(p.email||'')}
${p.nazwa_firmy?`
Firma ${esc(p.nazwa_firmy)}
`:''}
\ud83d\udccd Moje adresy
+ Dodaj adres
\ud83d\udc65 Moje subkonta
Konta dla Twoich podwykonawcow/instalatorow. Widza tylko swoje zamowienia.
+ Dodaj subkonto
Bezpieczeństwo
Wyloguj ze wszystkich urządzeń
Wylogowuje Cię też z tego urządzenia — trzeba będzie zalogować się ponownie.
Wyloguj się `;
odswiezUstPush(p.push_wlaczony);
ladujMojeAdresy(); /* d47-adresy */
ladujMojeSubkonta(); /* d56-subkonta-ui */
}catch(e){ document.getElementById('ustTresc').innerHTML='Błąd: '+esc(e.message)+'
'; }
}
function odswiezUstPush(wlaczony){
const box=document.getElementById('ustPushStan'); if(!box) return;
if(!('Notification' in window)||!('serviceWorker' in navigator)||!('PushManager' in window)){
box.innerHTML='Powiadomienia niedostępne na tym urządzeniu.
'; return; }
if(Notification.permission==='denied'){
box.innerHTML='Powiadomienia zablokowane w ustawieniach przeglądarki. Odblokuj je tam, aby włączyć.
'; return; }
if(wlaczony && Notification.permission==='granted'){
box.innerHTML='\u{1F514} Powiadomienia włączone
'+
'Wyłącz powiadomienia ';
}else{
box.innerHTML='\u{1F514} Włącz powiadomienia o statusie zamówień ';
}
}
async function zapiszTelefon(){
const tel=document.getElementById('ustTelefon').value.trim();
try{ await api('POST','/api/konto/telefon',{telefon:tel}); toast('Telefon zapisany \u2713'); }
catch(e){ toast('Błąd: '+e.message); }
}
async function zmienHaslo(){
const stare=document.getElementById('ustStare').value;
const nowe=document.getElementById('ustNowe').value;
const nowe2=document.getElementById('ustNowe2').value;
if(!stare||!nowe){ toast('Wypełnij wszystkie pola'); return; }
if(nowe.length<6){ toast('Nowe hasło min. 6 znaków'); return; }
if(nowe!==nowe2){ toast('Hasła nie są takie same'); return; }
try{
await api('POST','/api/konto/haslo',{stare_haslo:stare,nowe_haslo:nowe});
toast('Hasło zmienione \u2713');
document.getElementById('ustStare').value='';
document.getElementById('ustNowe').value='';
document.getElementById('ustNowe2').value='';
}catch(e){ toast(e.message||'Błąd zmiany hasła'); }
}
async function wlaczPushUst(){
await wlaczPowiadomienia();
try{ const p=await api('GET','/api/konto/profil'); odswiezUstPush(p.push_wlaczony); }catch(e){}
}
async function wylaczPush(){
if(!confirm('Wyłączyć powiadomienia o statusie zamówień?')) return;
try{
await api('POST','/api/konto/push-wylacz',{});
try{ const reg=await navigator.serviceWorker.ready; const sub=await reg.pushManager.getSubscription(); if(sub) await sub.unsubscribe(); }catch(e){}
toast('Powiadomienia wyłączone');
odswiezUstPush(false);
}catch(e){ toast('Błąd: '+e.message); }
}
async function wylogujWszedzie(){
if(!confirm('Wylogować ze wszystkich urządzeń? Trzeba będzie zalogować się ponownie.')) return;
try{
await api('POST','/api/konto/wyloguj-wszedzie',{});
toast('Wylogowano ze wszystkich urządzeń');
setTimeout(wyloguj, 800);
}catch(e){ toast('Błąd: '+e.message); }
}