(function () { function hideTelegramHomeSection() { var wrap = document.getElementById('telegram-home-section'); if (wrap) { wrap.style.display = 'none'; } } function showTelegramHomeSection() { var wrap = document.getElementById('telegram-home-section'); if (wrap) { wrap.style.display = ''; } } function loadTelegramHomePosts() { var container = document.getElementById('telegram-posts-container'); var carousel = document.getElementById('telegram-carousel'); var meta = document.getElementById('telegram-home-meta'); var scrollEl = document.getElementById('telegram-scroll'); var prevBtn = document.getElementById('telegram-prev'); var nextBtn = document.getElementById('telegram-next'); if (!container || !carousel) { return; } function escapeHtml(s) { if (!s) return ''; var d = document.createElement('div'); d.textContent = s; return d.innerHTML; } function captionShort(text, max) { max = max || 100; if (!text) return 'Telegram gönderisi'; var t = text.replace(/\s+/g, ' ').trim(); if (t.length <= max) return t; return t.slice(0, max) + '…'; } function timeLabel(iso) { if (!iso) return ''; try { var d = new Date(iso); if (isNaN(d.getTime())) return ''; var now = new Date(); var sec = Math.floor((now - d) / 1000); if (sec < 60) return 'Az önce'; if (sec < 3600) return Math.floor(sec / 60) + ' dk'; if (sec < 86400) return Math.floor(sec / 3600) + ' sa'; if (sec < 86400 * 7) return Math.floor(sec / 86400) + ' gün'; return d.toLocaleDateString('tr-TR', { day: '2-digit', month: 'short' }); } catch (e) { return ''; } } var telegramIconSvg = ''; var telegramBrokenImg = 'data:image/svg+xml,' + encodeURIComponent( '' ); function createPostCard(post) { var div = document.createElement('div'); div.className = 'instagram-item'; div.setAttribute('role', 'group'); div.setAttribute('aria-roledescription', 'slide'); var cap = captionShort(post.text); var when = timeLabel(post.datetime); var imgHtml; if (post.image) { imgHtml = '' + escapeHtml(cap) + ''; } else { imgHtml = ''; } div.innerHTML = '' + '
' + '
' + imgHtml + '
' + '
' + escapeHtml(cap) + '
' + '
' + telegramIconSvg + '
' + '
' + escapeHtml(when) + '
' + '
'; return div; } function initTelegramScroll() { if (!scrollEl || !prevBtn || !nextBtn) return; var scrollAmount = 320; function updateButtonStates() { var sl = scrollEl.scrollLeft; var maxScroll = scrollEl.scrollWidth - scrollEl.clientWidth; if (sl <= 10) { prevBtn.style.opacity = '0'; prevBtn.style.pointerEvents = 'none'; } else { prevBtn.style.opacity = '1'; prevBtn.style.pointerEvents = 'auto'; } if (sl >= maxScroll - 10) { nextBtn.style.opacity = '0'; nextBtn.style.pointerEvents = 'none'; } else { nextBtn.style.opacity = '1'; nextBtn.style.pointerEvents = 'auto'; } } prevBtn.addEventListener('click', function () { scrollEl.scrollBy({ left: -scrollAmount, behavior: 'smooth' }); setTimeout(updateButtonStates, 350); }); nextBtn.addEventListener('click', function () { scrollEl.scrollBy({ left: scrollAmount, behavior: 'smooth' }); setTimeout(updateButtonStates, 350); }); // rAF-throttled scroll handler — max bir güncelleme/frame var _tgScrollRaf = null; scrollEl.addEventListener('scroll', function () { if (_tgScrollRaf) return; _tgScrollRaf = requestAnimationFrame(function () { _tgScrollRaf = null; updateButtonStates(); }); }, { passive: true }); updateButtonStates(); } fetch('/ajax/get_telegram_posts.php') .then(function (r) { return r.json(); }) .then(function (data) { if (!data.success || !data.data || !data.data.length) { hideTelegramHomeSection(); return; } var metaLink = document.getElementById('telegram-home-meta-link'); if (data.channel_url && meta && metaLink) { var titleText = (data.channel_title && String(data.channel_title).trim()) || ('@' + String(data.channel || '').trim()); metaLink.href = data.channel_url; metaLink.textContent = titleText; meta.style.display = 'inline-flex'; } container.innerHTML = ''; data.data.forEach(function (post) { container.appendChild(createPostCard(post)); }); showTelegramHomeSection(); setTimeout(initTelegramScroll, 80); }) .catch(function () { hideTelegramHomeSection(); }); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', loadTelegramHomePosts); } else { loadTelegramHomePosts(); } })();