/* SPDX-License-Identifier: AGPL-3.0-or-later SPDX-FileCopyrightText: 2019 Max Mehl SPDX-FileCopyrightText: 2019 Björn Schießle */ // Debug logging helper var debugEnabled = false; function debugLog(message, data) { if (debugEnabled) { if (data !== undefined) { console.log('[Mastodon Comments] ' + message, data); } else { console.log('[Mastodon Comments] ' + message); } } } $(document).ready(function() { // check if we show a blog post or not. Regex is defined in site-wide config var patt = new RegExp(BlogRegex); var isArticle = patt.test(RelPermalink); if (isArticle === false) { console.log("Not a blog post, no need to search for comments"); return; } debugLog('Searching for comments for: ' + RelPermalink); $.ajax({ url: "/comments/getcomments.php", type: "get", data: { search : RelPermalink }, success: function(data) { // Enable debug logging if backend has debug enabled if (data.debug === true) { debugEnabled = true; debugLog('Debug mode enabled'); } debugLog('Received data from backend', data); var stats = data.stats; var root = data.stats.root; debugLog('Stats - Favs: ' + stats.favs + ', Reblogs: ' + stats.reblogs + ', Replies: ' + stats.replies); debugLog('Root toot ID: ' + root); $("#like-count-container").append('
' + stats.favs + '
'); $("#reblog-count-container").append('
' + stats.reblogs + '
'); $("#reply-count-container").append('
' + stats.replies + '
'); var comments = data.comments; var commentCount = Object.keys(comments).length; debugLog('Processing ' + commentCount + ' comments'); $.each(comments, function(key, value) { debugLog('Adding comment: ' + key, value); var timestamp = Date.parse(value.date); var date = new Date(timestamp); var comment = "
"; comment += ""; comment += ""; comment += "
" + value.toot + "
"; comment += "
"; var parentComment = document.getElementById(value.reply_to); if (value.reply_to === root || parentComment === null) { $("#comments").append(comment); debugLog(' → Added as top-level comment'); } else { var selector = '#'+value.reply_to; $(selector).append(comment); debugLog(' → Added as reply to: ' + value.reply_to); } }); if (parseInt(root) > 0) { $("#reference").append("Join the discussion on Mastodon!"); debugLog('Added Mastodon discussion link for root: ' + root); } else { $("#comments").empty(); $("#statistics").empty(); $("#reference").append("Comments are handled by my Mastodon account. Sadly this article wasn't published at Mastodon. Feel free to send me a mail if you want to share your thoughts regarding this topic."); debugLog('No Mastodon toot found for this article'); } }, error: function(xhr, status, error) { console.error('[Mastodon Comments] AJAX Error:', status, error); console.error('[Mastodon Comments] Response:', xhr.responseText); } }); });