import { BaseController } from "./base_controller.js"; export class CommentsController extends BaseController { constructor(domain) { super(domain); this.comments_node = document.getElementById("comments-thread"); this.renderForm(); this.renderComments(); } async renderForm() { const form = (await this.get("/api/comments/new"))?.getElementById("comment-form"); if(form != null) { this.comments_node.appendChild(form); this.form_element = document.getElementById("comment-form"); this.form_element.addEventListener("submit", this.submit.bind(this)); } } async renderComments() { const comments = (await this.get(`/api/comments?path=${this.post}`))?.getElementById("comment-section"); if(comments != null) this.comments_node.appendChild(comments_document.getElementById("comment-section")); } async submit(event) { event.preventDefault(); var form = new FormData(event.target); form.append("domain", `${window.location.protocol}//${window.location.host}`); try { const response = await fetch(`${this.server}/api/comments?path=${this.post}`, { method: "POST", body: form }); return response.text().then(this.htmlFromResponse.bind(this)); } catch(error) {} } }