export async function loadPostwall() { const container = document.getElementById('postswall-container'); // Mastodon API-URL für Hashtag-Suche const apiUrl = 'https://libori.social/api/v1/timelines/tag/fedikirche?limit=20'; // Posts laden async function fetchPosts() { try { const response = await fetch(apiUrl); if (!response.ok) { throw new Error('Fehler beim Laden der Posts'); } const posts = await response.json(); renderPosts(posts); // Button hinzufügen addReadMoreButton(); } catch (error) { console.error('Fehler:', error); container.innerHTML = '
Fehler beim Laden der Posts.
'; } } // Posts rendern function renderPosts(posts) { container.innerHTML = ''; // Vorherige Inhalte leeren posts.forEach(post => { const postElement = document.createElement('a'); postElement.classList.add('post'); postElement.href = post.url; // Link zum Originalpost postElement.target = '_blank'; // Link in neuem Tab öffnen postElement.rel = 'noopener noreferrer'; // Sicherheit für externe Links postElement.setAttribute('aria-label', 'Zum Originalpost auf Mastodon'); // Accessibility // Zeitstempel berechnen const postDate = new Date(post.created_at); // Datum des Posts const timeAgo = getTimeAgo(postDate); // Funktion zur Berechnung der Zeitspanne let content = post.content || 'Kein Inhalt verfügbar.'; const author = post.account.display_name || post.account.username; const username = `@${post.account.acct}`; // Adresse hinzufügen (@nutzer@instanz) const avatar = post.account.avatar || 'src/assets/default-avatar.png'; // Fallback-Bild // Alle anderen Links deaktivieren const tempContainer = document.createElement('div'); tempContainer.innerHTML = content; // Links deaktivieren const links = tempContainer.querySelectorAll('a'); links.forEach(link => { link.removeAttribute('href'); // Entfernt den Link link.style.pointerEvents = 'none'; // Deaktiviert Klickbarkeit link.style.color = 'blue'; // Behält Linkfarbe bei link.style.textDecoration = 'underline'; // Behält Unterstreichung bei }); // Bilder bearbeiten const images = tempContainer.querySelectorAll('img'); images.forEach(img => { img.style.maxHeight = '200px'; // Maximale Höhe festlegen img.style.width = 'auto'; // Automatische Breite für Proportionen img.style.display = 'block'; // Sicherstellen, dass Bilder Blöcke sind img.style.margin = '10px 0'; // Abstand zu Text einfügen }); content = tempContainer.innerHTML; // Medien-Anhänge (Bilder, Videos, etc.) hinzufügen const mediaAttachments = post.media_attachments || []; let mediaHTML = ''; mediaAttachments.forEach(media => { if (media.type === 'image') { mediaHTML += `