const messageIdentifierPrefix = `mintership-forum-message`; let replyToMessageIdentifier = null; document.addEventListener("DOMContentLoaded", async () => { // Identify the link for 'Mintership Forum' const mintershipForumLink = document.querySelector('a[href="MINTERSHIP-FORUM"]'); if (mintershipForumLink) { mintershipForumLink.addEventListener('click', async (event) => { event.preventDefault(); await login(); // Assuming login is an async function await loadForumPage(); }); } }); async function loadForumPage() { // Remove all sections except the menu const allSections = document.querySelectorAll('body > section'); allSections.forEach(section => { if (!section.classList.contains('menu')) { section.remove(); } }); // Check if user is an admin const minterGroupAdmins = await fetchMinterGroupAdmins(); const isUserAdmin = minterGroupAdmins.members.some(admin => admin.member === userState.accountAddress && admin.isAdmin) || await verifyUserIsAdmin(); // Create the forum layout, including a header, sub-menu, and keeping the original background image const mainContent = document.createElement('div'); const backgroundImage = document.querySelector('.header1')?.style.backgroundImage; mainContent.innerHTML = `
No messages found. Be the first to post!
`; return; } let messagesHTML = ""; const fetchMessages = await Promise.all(qdnMessages.map(async (resource) => { try { console.log(`Fetching message with identifier: ${resource.identifier}`); const messageResponse = await qortalRequest({ action: "FETCH_QDN_RESOURCE", name: resource.name, service: "BLOG_POST", identifier: resource.identifier, }); console.log("Fetched message response:", messageResponse); // No need to decode, as qortalRequest returns the decoded data const messageObject = messageResponse; const timestamp = resource.updated || resource.created; const formattedTimestamp = await timestampToHumanReadableDate(timestamp); return { name: resource.name, content: messageObject.messageHtml, date: formattedTimestamp, identifier: resource.identifier, replyTo: messageObject.replyTo }; } catch (error) { console.error(`Failed to fetch message with identifier ${resource.identifier}. Error: ${error.message}`); return null; } })); fetchMessages.forEach(async (message) => { if (message) { let replyHtml = ""; if (message.replyTo) { const repliedMessage = fetchMessages.find(m => m && m.identifier === message.replyTo); if (repliedMessage) { replyHtml = ` `; } } messagesHTML += ` `; } }); messagesContainer.innerHTML = messagesHTML; setTimeout(() => { messagesContainer.scrollTop = messagesContainer.scrollHeight; }, 5000); // Add event listeners to reply buttons const replyButtons = document.querySelectorAll(".reply-button"); replyButtons.forEach(button => { button.addEventListener("click", (event) => { replyToMessageIdentifier = event.target.getAttribute("data-message-identifier"); console.log("Replying to message with identifier:", replyToMessageIdentifier); }); }); } } catch (error) { console.error("Error loading messages from QDN:", error); } }