diff --git a/public/css/user.css b/public/css/user.css index a0ecc09..55b4b89 100644 --- a/public/css/user.css +++ b/public/css/user.css @@ -3,25 +3,26 @@ font-weight: 700; } -.content{ -display: flex; -flex-direction: column; -box-shadow: 0 0 5px 0 #bebebe; -max-width: 900px; -margin: 0 auto; -padding:10px; +.content { + display: flex; + flex-direction: column; + box-shadow: 0 0 5px 0 #bebebe; + max-width: 900px; + margin: 0 auto; + padding: 10px; } -.box{ -display: flex; -align-items: center; -justify-content: space-between; -margin: 0 auto; -max-width: 800px; -width:100%; +.box { + display: flex; + align-items: center; + justify-content: space-between; + margin: 0 auto; + max-width: 800px; + width: 100%; } -.box-title, .box-value{ -color: #606060; -font-weight: 300; -} +.box-title, +.box-value { + color: #606060; + font-weight: 300; +} \ No newline at end of file diff --git a/public/js/thread.js b/public/js/thread.js index 77d9e50..97c0c51 100644 --- a/public/js/thread.js +++ b/public/js/thread.js @@ -1,12 +1,8 @@ import request from "./request.js"; - const message_div = document.getElementById("messages"); -const messages_raw = await fetch(`/api/threads/${message_div.getAttribute("value")}/messages/`).then(res => res.json()); -for (const message of messages_raw) - renderMessage(message); -function renderMessage(message) { +function render_message(message) { const messageElement = document.createElement("div"); messageElement.classList.add("message"); messageElement.setAttribute("id", "message-" + message.id); @@ -16,7 +12,7 @@ function renderMessage(message) {

${new Date(message.time).toLocaleString()}

- ${message.author.name} + ${message.author.name}:

@@ -34,7 +30,7 @@ function renderMessage(message) { }
-

0

+

${message.reactCount}

+🔼 -🔽
@@ -59,7 +55,7 @@ document.getElementById("send").addEventListener("submit", async e => { if (!res) return; form.reset(); res.reactCount = 0; - renderMessage(res); + render_message(res); }); }); diff --git a/routes/threads.js b/routes/threads.js index b1a03f9..c46c982 100644 --- a/routes/threads.js +++ b/routes/threads.js @@ -1,7 +1,7 @@ const { Router } = require("express"); const app = Router(); -const { ThreadModel } = require("../models") +const { ThreadModel,MessageModel } = require("../models") app.get("/", async (req, res) => { @@ -21,11 +21,17 @@ app.get("/:id", async (req, res) => { const thread = await ThreadModel.get(id); thread.views++; - if (thread && (req.user?.admin || !thread.deleted)) - res.reply("thread", { thread, scroll: req.query.scroll || false }); - else + if (thread && (req.user?.admin || !thread.deleted)) { + const messages = await Promise.all(thread.messages.map(async id => { + const message = await MessageModel.get(id) + message.content = message.content.replaceAll("&", "&").replaceAll("<", "<").replaceAll(">", ">").replaceAll("\"", """).replaceAll("'", "'").replaceAll("\n", "
") + return req.user?.admin || !message?.deleted ? message.toObject({ virtuals: true }) : null; + })); + + res.reply("thread", { thread, messages, scroll: req.query.scroll || false }); + } else res.error(404, "We have not got this thread."); - thread.save(); + thread.save(); }); diff --git a/views/thread.ejs b/views/thread.ejs index c9a636a..7c59c47 100644 --- a/views/thread.ejs +++ b/views/thread.ejs @@ -35,33 +35,38 @@
- <% if (!user){ %> -

Guests cant view messages!

- <% }%> + + <% messages.filter(Boolean).forEach(message=>{ %> - -
+
-

26.08.2022 15:37:42

+

<%= new Date(message.time).toLocaleString() %>

- - Akif9748: + + <%=message.author.name %>:

-

Example message for development


-
- DELETE - EDIT +

<%= message.content%>


+
+ + <% if (!message.deleted){ %> + + DELETE + EDIT + <% }else{ %> +

This message has been deleted

+ UNDELETE + <% } %>
-

0

- +🔼 - -🔽 +

<%=message.reactCount %>

+ +🔼 + -🔽
- + <% }); %>