diff --git a/js/posts.js b/js/posts.js index 6baf841..55a44bd 100644 --- a/js/posts.js +++ b/js/posts.js @@ -1,4 +1,7 @@ -socket = new WebSocket("wss://ws.zerotwohub.tk:25566"); +let user +let username + +let socket = new WebSocket("wss://ws.zerotwohub.tk:25566"); socket.addEventListener("message", function (event) { if("wss://ws.zerotwohub.tk:25566" == event.origin) { @@ -7,7 +10,7 @@ socket.addEventListener("message", function (event) { let message = ds[0] if(message == "new_post") { main() - mainNoti(ds[1]) + if(user["username"]!=ds[1])mainNoti(ds[1]) } } }) @@ -15,26 +18,36 @@ function urlify(text) { let textregex = /(([a-z]+:\/\/)?(([a-z0-9\-]+\.)+([a-z]{2}|aero|arpa|biz|com|coop|edu|gov|info|int|jobs|mil|museum|name|nato|net|org|pro|travel|local|internal|tk|ga))(:[0-9]{1,5})?(\/[a-z0-9_\-\.~]+)*(\/([a-z0-9_\-\.]*)(\?[a-z0-9+_\-\.%=&]*)?)?(#[a-zA-Z0-9!$&'()*+.=-_~:@/?]*)?)(\s+|$)/gi return text.replace(textregex,'$1 ') } + function newlineify(text) { let textregex = /(\n)/gi return text.replace(textregex,'
') } + function crossout(text) { let textregex = /~([^~]*)~/gi return text.replace(textregex,'$1') } + function italicify(text) { let textregex = /\*([^\*]*)\*/gi return text.replace(textregex,'$1 ') } + function boldify(text) { let textregex = /\*\*([^\*]*)\*\*/gi return text.replace(textregex,'$1 ') } + function filterMentions(text) { - let textregex = /(@[^\s]*)/gi - return text.replace(textregex,'$1 ') + let textregex = /(@[^\s]*)/gi //if you find an "@" select everything until you find a whitespace (and save as $1) + return text.replace(textregex,`$1 `) } +function filterReplies(text) { + let textregex = /_@_([^\s]*)/gi + return text.replace(textregex,`$1 `) +} + document.getElementById("post-btn").addEventListener("click",async function() { let len = document.getElementById("post-text").value.length if(len >= 1001) { @@ -42,12 +55,15 @@ document.getElementById("post-btn").addEventListener("click",async function() { return } let r = await post("/api/post",{"message":document.getElementById("post-text").value}) - document.getElementById("post-text").value = "" + if(window.location.href.split("?mention=")[1])location.replace('/posts'); + document.getElementById("post-text").value="" }) + function filterPost(text) { text = escape(text) text = newlineify(text) text = urlify(text) + text = filterReplies(text) text = filterMentions(text) text = crossout(text) text = boldify(text) @@ -55,15 +71,16 @@ function filterPost(text) { return text } + +function spacerTextNode() { + return document.createTextNode(" | ") +} + function createPost(username,text,time,specialtext) { - if(specialtext){ - specialtext = ` | ${specialtext}` - } else { - specialtext = "" - } + if(!specialtext)specialtext="" const newDiv = document.createElement("div"); const newP = document.createElement("p"); - const newSpan = document.createElement("span"); + const newA = document.createElement("a"); const newSpan2 = document.createElement("span"); const newSpan3 = document.createElement("span"); @@ -74,33 +91,41 @@ function createPost(username,text,time,specialtext) { time = time.split(" ") time = time[0] + " " + time[1] + " " + time[2] + " " + time[3] + " " + time[4] if(timedate=="Thu Jan 01 1970 01:00:00 GMT+0100 (Central European Standard Time)")time="unknown time" - const newTime = document.createTextNode(` | ${time}`) + const newTime = document.createTextNode(time) const newSpecialText = document.createTextNode(specialtext) newDiv.classList.add("post"); newSpan3.classList.add("specialtext") - newSpan.appendChild(newUsername) + newA.appendChild(newUsername) + + newA.href = `/users/${username}` newSpan2.appendChild(newTime) newSpan3.appendChild(newSpecialText) - newP.appendChild(newSpan) - newP.appendChild(newSpan2) - newP.appendChild(newSpan3) + newP.appendChild(newA) + newP.appendChild(spacerTextNode()) + newP.appendChild(newSpan2) + if(specialtext != "")newP.appendChild(spacerTextNode()) + newP.appendChild(newSpan3) + newP.appendChild(spacerTextNode()) + // |\>.Reply to this Post` newDiv.appendChild(newP) newDiv.innerHTML += filterPost(text) document.getElementById("posts").appendChild(newDiv) - } -async function main() { - let user = await (await fetch("/api/getuser")).json() - let username = user.username - if(!username)username = user.error - document.getElementById("username-self").innerText = username +async function main(){ + if(!user){ + user = await (await fetch("/api/getuser")).json() + username = user.username + if(!username)username = user.error + document.getElementById("username-self").innerText = username + } let index = 0 let last_10_posts = await (await fetch(`/api/getPosts/${index}`)).json() @@ -122,6 +147,18 @@ async function main() { i--; } } + let replies = document.getElementsByClassName("reply") + for (let i = 0; i < replies.length; i++) { + if(replies[i]!=undefined && replies[i].innerText == username) { + replies[i].style="color: red;" + } + } + +} + +function reply(username) { + if(document.getElementById("post-text").value.length >= 5)document.getElementById("post-text").value += "\n" + document.getElementById("post-text").value += `_@_${username} ` } main() @@ -158,3 +195,7 @@ document.addEventListener("visibilitychange", function() { cansendNoti = true } }); + +if(window.location.href.includes("?mention=")) { + document.getElementById("post-text").innerText = `@${window.location.href.split("?mention=")[1]} ` +} diff --git a/views/posts.html b/views/posts.html index 08cdd34..ac54c57 100644 --- a/views/posts.html +++ b/views/posts.html @@ -11,7 +11,8 @@
Username:
-
+ +