function commentForm(parentId) {
return `
`;
}
function commentDisplay(comment, replies) {
return ``;
}
const container = document.getElementById("soudan");
container.style.display = "none";
container.innerHTML = `Make a comment
${commentForm()}
`;
const md = window.markdownit().disable("image");
const url = "http://localhost:8080";
const form = document.getElementById("soudan-comment-form");
const commentContainer = document.getElementById("soudan-comments");
const commentContainerHeader = document.getElementById("soudan-comments-header");
const contentId = document.querySelector("meta[name=\"soudan-content-id\"]").getAttribute("content");
function submitForm(form, e) {
let data = {
url: window.location.href,
comment: { contentId }
};
new FormData(form).forEach((value, key) => {
data.comment[key] = value === "" ? null : value;
});
if (data.comment.parent) {
data.comment.parent = parseInt(data.comment.parent);
}
fetch(url, {
method: "POST",
body: JSON.stringify(data),
headers: { "Content-Type": "application/json" }
})
.then(response => {
if (!response.ok) {
Promsise.reject();
}
form.querySelector("textarea").value = "";
reloadComments();
})
.catch(error => alert("Something went wrong posting your comment!"))
e.preventDefault();
}
function reloadComments(jump) {
fetch(`${url}/${contentId}`)
.then(response => {
return response.json().then(json => {
return response.ok ? json : Promise.reject(json);
});
})
.then(comments => {
let commentCount = comments.length;
comments.forEach(comment => {
if (comment.replies) {
commentCount += comment.replies.length;
}
});
commentContainerHeader.innerHTML = `${commentCount} Comment${commentCount == 1 ? "" : "s"}`;
let html = "";
if (comments.length == 0) {
html = "No comments yet! Be the first to make one.
";
} else {
comments.forEach(comment => {
if (comment.replies) {
let replies = "";
comment.replies.forEach(reply => {
replies += commentDisplay(reply);
});
html += commentDisplay(comment, replies);
} else {
html += commentDisplay(comment, "");
}
});
}
commentContainer.innerHTML = html;
soudan.style.display = "";
if (jump && window.location.hash) {
const target = document.getElementById(window.location.hash.substring(1));
if (target) {
window.scrollTo(0, target.offsetTop);
target.classList.add("soudan-highlighted");
}
}
})
}
function reply(id) {
const replies = document.getElementById(id).querySelector(".soudan-replies");
replies.innerHTML = `Reply
${commentForm(id)}${replies.innerHTML}`;
}
reloadComments(true);