import { checkConsent, showConsentPopup, setUserConsent } from '../components/consentManager.js'; export async function loadPostwall() { const container = document.getElementById('postswall-container'); // Überprüfe, ob Consent erteilt wurde if (!checkConsent()) { // Consent nicht erteilt – alternative Kachel anzeigen renderConsentRequest(); return; // Beende die Funktion, kein weiterer Datenabruf } // 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'; postElement.rel = 'noopener noreferrer'; postElement.setAttribute('aria-label', 'Zum Originalpost auf Mastodon'); // Zeitstempel berechnen const postDate = new Date(post.created_at); const timeAgo = getTimeAgo(postDate); let content = post.content || 'Kein Inhalt verfügbar.'; const author = post.account.display_name || post.account.username; const username = `@${post.account.acct}`; const avatar = post.account.avatar || 'src/assets/default-avatar.png'; // Links deaktivieren const tempContainer = document.createElement('div'); tempContainer.innerHTML = content; const links = tempContainer.querySelectorAll('a'); links.forEach(link => { link.removeAttribute('href'); link.style.pointerEvents = 'none'; link.style.color = 'blue'; link.style.textDecoration = 'underline'; }); // Bilder bearbeiten const images = tempContainer.querySelectorAll('img'); images.forEach(img => { img.style.maxHeight = '200px'; img.style.width = 'auto'; img.style.display = 'block'; img.style.margin = '10px 0'; }); content = tempContainer.innerHTML; const mediaAttachments = post.media_attachments || []; let mediaHTML = ''; mediaAttachments.forEach(media => { if (media.type === 'image') { mediaHTML += `Du musst zuerst zustimmen, um Inhalte anzuzeigen.