/* ============================================================ BAN YARO — Öffentliches Züchter-Profil Seiten-Modul: Zeigt das verifizierte Profil eines Züchters. ============================================================ */ window.Page_breeder = (() => { let _container = null; let _appState = null; // ---------------------------------------------------------- // INIT // ---------------------------------------------------------- async function init(container, appState, params = {}) { _container = container; _appState = appState; // Zwingername aus params oder URL-Pfad (/breeder/vom-sonnenfeld) const zwingername = params?.zwingername || decodeURIComponent((window.location.pathname.split('/breeder/')[1] || '').replace(/\/$/, '')); if (!zwingername) { container.innerHTML = '
Kein Zwingername angegeben.
'; return; } container.innerHTML = '
Lade…
'; try { const p = await API.breeder.profile(zwingername); _render(p); } catch (e) { container.innerHTML = `
${_esc(e.message || 'Züchter nicht gefunden.')}
`; } } // ---------------------------------------------------------- // RENDER // ---------------------------------------------------------- function _render(p) { const verifiedDate = p.verified_at ? new Date(p.verified_at).toLocaleDateString('de-DE', { day: '2-digit', month: '2-digit', year: 'numeric' }) : null; const websiteHtml = p.website ? ` ${UI.icon('arrow-square-out')} ${_esc(p.website)} ` : ''; const beschreibungHtml = p.beschreibung ? `

${_esc(p.beschreibung)}

` : ''; _container.innerHTML = `

${UI.icon('certificate')} ${_esc(p.zwingername)}

${UI.icon('seal-check')} Verifizierter Züchter
Rasse
${_esc(p.rasse_text || '–')}
Verein
${_esc(p.verein || '–')}
VDH-Mitglied
${p.vdh_mitglied ? `${UI.icon('check')} Ja` : `Nein`}
Stadt
${_esc(p.stadt || '–')}
${p.website ? `
Website
${websiteHtml}
` : ''} ${verifiedDate ? `
Verifiziert
${verifiedDate}
` : ''}
Züchter
${_esc(p.zuechter_name || '–')}
${beschreibungHtml}
${(() => { if (!p.zuechter_user_id) return ''; const isLoggedIn = !!_appState?.user; const isOwnProfile = _appState?.user?.id === p.zuechter_user_id; if (isOwnProfile) return ''; if (isLoggedIn) { return ``; } return ``; })()}
`; _container.querySelector('.breeder-chat-btn')?.addEventListener('click', () => { _contactBreeder(p.zuechter_user_id); }); _container.querySelector('.breeder-login-btn')?.addEventListener('click', () => { App.navigate('settings'); }); // Öffentliche Fotos nachladen _loadBreederPhotos(p.id); } async function _loadBreederPhotos(breederId) { const section = document.getElementById('breeder-photos-section'); if (!section) return; try { const photos = await API.breederPhotos.list('breeder', breederId); if (!photos || !photos.length) return; section.innerHTML = `

${UI.icon('images')} Fotos

${photos.map(ph => { const thumb = ph.thumbnail_url || ph.url || ''; return ` ${_esc(ph.caption || '')} `; }).join('')}
`; } catch (_) { // Fotos sind nicht kritisch — bei Fehler still ignorieren } } async function _contactBreeder(breederId) { if (!_appState?.user) { App.navigate('settings'); return; } try { await API.chat.start(breederId); App.navigate('chat'); } catch (e) { UI.toast.error(e.message || 'Chat konnte nicht geöffnet werden.'); } } function refresh() {} function onDogChange() {} return { init, refresh, onDogChange }; })();