From 90c69ef126ed8ef768edceba61c6a2cbbf435c86 Mon Sep 17 00:00:00 2001 From: Mystikfluu Date: Sat, 27 Aug 2022 18:22:00 +0200 Subject: [PATCH] add prototype emoji system --- images/emoji/eyes.png | Bin 0 -> 1749 bytes images/emoji/moyai.png | Bin 0 -> 778 bytes js/markdown.js | 8 +++++- js/posts.js | 55 +++++++++++++++++++++++++++++++++++++++-- routes/api/post.js | 14 +++++++---- server.js | 18 +------------- views/posts.html | 6 ++--- 7 files changed, 72 insertions(+), 29 deletions(-) create mode 100644 images/emoji/eyes.png create mode 100644 images/emoji/moyai.png diff --git a/images/emoji/eyes.png b/images/emoji/eyes.png new file mode 100644 index 0000000000000000000000000000000000000000..77c633f5ee3fc7c26ee57ac506570eb963a64c92 GIT binary patch literal 1749 zcmbtUk5|%J7Dqxu(F8?h6n}x{kFe2`(>nedNDx$VkT`1j3(Yg&WJOA=)y(>HtU=Ul zm@p_|qDIC>bfWSHW(KI0O_;VdNTsg17HeUOTE@hF-QE9S-#Pbv?mh3kd)|GYdq3aP zQprvZo(>=o$SH|Jqyt#FVbD#$Zk}#_4}eW6oxBUAcz}Kd1P~TsHvt6ttqEqyw*}&H z8kIo;5RFDVIyyoi5C(&x)9I{M>&cTR0|Ekyi;IJUgV)y9pit<@$Ow%_BNB-e3MD)| zysfS6%9SffB(kuukj-YRRH_djJ_v=vsi`Rx3gzeLS6^S>)YKFi8F}m0EsaKFGMT7U zDwoSGFE1C1#ZggFv$M0Yv9WkOJ~K0u!{Jm^R7fNenM|foC;|fmF&GRMi}m#M9336? z@bK{Q@$vHV>hJG27z{NvHQCwO^Yin|%gb;$9EZboc6KV2%87{yCX)%2Q=^}~4?rT9 zp1KF9<^NxxqO-&?Afr8pvbPij+M?Mon~}rvLJ-I{I*CYNl;^${9n5kiBkP>^qObv> zF7O`&r+EI;DIG&M9;auCtX5&P_}i_^S9i>#w+-_PPQ6gCOc;&%+4UtP zx++x)z(*1|>)Lk}ZfV4QY}@0E35^QJqu5=>lMFFmvBaVMIwp1)wew6u5ba@H*3*^~ zb4xsm`;U0Zn@*lrsbu{fj)1r;bCEuaV@w&sit#E6Y7g(l!`jV}#Dn|mA_vPr_eeq)U|;gUp+u(BJiD-&}-s<=u8_Bz*^pBR;DmpWBUWb}8XXd}N0- zHm~;=Hel#PcWHAB#B(*V;~={>f*eC9`g2aTH_C2QqC+rS*IwDTN4H*LiT*72`1PTL zPqZ<5%jB~?!eU|^zkHnX$zJJzR$JT#F1f_VEh0aQ`*M%X=k!E}MmAs68qpBmSMcb$ z?LsP?gbJ_`Nek{oP9`Jr;kJ{v4zI(uVH__GmdQ~iF0eZYJO97PSb(3rgP-+PZ_eNw z2%$Csjv6aPIv(@MeJlH=k{lBPhp=HQ1?n6sV&*g?SDH(Wnxhe;0;+^^k5YGsJBTew z({9G0eh1qZ(9OQ$i4fz^`Ej(p*KJlvyjl&TzC_OzJSeKJZJ1Ufee-8*<-4v6zP@<@ zqsBm~X<um7G~ zl7?HlbMcK`P_T&>HusyyX)LbTsD5BKOm-EaFS}}3+!@U3v(RxzNDs6rfK&N+!lu1? zrMJf&4@o${oi9jdCQoIUpSxFl`J*ZA5x>ZYSrwdw4x_iLu}}-%m%S6cJ$~#Ew+0D? zARMb3pkqypHI`!GfEmlrNf}R!$1Fwk;$HQg{T1()-V`)d>vT|il}GbeYwFU6ijEvz z85_`gcxU7wX40Thv~GWQ4zp|Kiy*jeKnZ>iJShC@WWy7SPu)zN;Sc+Yji3kN4z)ZD zSlBi^m4V=yqaVIpbmc{>>zgC4PiW4L}sfIV6)zD(ev;0>KN?j09S%TmiQAk z8(y|_Uoxi*w{a)NJH{_$v)D8&JVETMi~E#jJkz1mW(%oLaP9+b>fhH? z%pIiK1ed6Un=SG^p=6+c7Js@HWON$^`p2*0^hyGd+h4n+gZ<4}SR`om2+k;hf|U#T z;f}tk!q%2xNnT1G@`98}S-MYY3_k_#B^SIsnz+%{C92GCL>WZXrKiIC+IO+J7vBbU zyUH_;oVs`}BqLf+C*HdQmZVMm@Ns|#Ob%0^@MVXMu{)-F?s{&C_~USgG-|hyY&OK) zw#%ShV_kTy{~4H1|I-$`5vw^=)M?&)Z>J?GFXCzBErCV9`RQg4TD)o@FiTR<&}HO3VDvI+)iO+J1j>b8P$K zaNFt~^t63n#2M22qllbb@xM|OD=h4)N!g5^>?zP+!<-?QPK+EF pJ>2jgY5SkT0WfXd-j)5)>Dvd4ZR?@uwScsOl1QmU#V%&`zX69DB;Ei3 literal 0 HcmV?d00001 diff --git a/images/emoji/moyai.png b/images/emoji/moyai.png new file mode 100644 index 0000000000000000000000000000000000000000..350e25e92748f081d7ed22e09c67c8a0fffcaf64 GIT binary patch literal 778 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H3?#oinD`S&F%}28J29*~C-V}>VM%xNb!1@J z*w6hZkrl}24DbnY1=0--4M6f>&hL#tin%1nFZlm|hU=$zfod5z3p^r=85sBufiR<} zh8IvNQ?;jyV@O5Z+esIbniY6lcmMnEu77a#qmUxzg?D$&XV4J!M+EZ9N#6) zXOzF-V_|w^KNIUFZ-uyt);CffaAkg9`eOf3R3?=`GV5Pv(Rx~pc6?1q_H1)oJ31@5xEIKGncgGSZPrs$^(abf}D56<0b zXkHO;he>bhb+#A-!-k9N8SiAoGd$O4d?UDn$>aYPhL8JA8@~B-J@{M9B=b*`(XPIt z!M&du=&ikn<>elH?T(s$I-VyZN&nNU)(Z`M|AiFl4HtE8U2$Aq^1@>MHi{7d}r(pvV|BaJB{2Nb- z+(>%FwS!?7bHx!uDFYw26bH7H1NHnBcKaEfUS%3v-oJPYm^K+aUHx3vIVCg!09U*@ AoB#j- literal 0 HcmV?d00001 diff --git a/js/markdown.js b/js/markdown.js index 0455b6e..86182ba 100644 --- a/js/markdown.js +++ b/js/markdown.js @@ -28,7 +28,12 @@ function filterMentions(text) { return text.replace(mentionregex,`$1 `) } -const allregex = /(```([^```]*)```)|(\n)|(~([^~]*)~)|(\*\*([^\*]*)\*\*)|(\*([^\*]*)\*)|(@[^\s]*)/gi +const emojiregex = /:([^:\s]*):/gi +function emojify(text) { + return text.replace(emojiregex,"$1") +} + +const allregex = /(```([^```]*)```)|(\n)|(~([^~]*)~)|(\*\*([^\*]*)\*\*)|(\*([^\*]*)\*)|(@[^\s]*)|(:([^:\s]*):)/gi const cdblregex = /```([^```]*)```/gi @@ -49,6 +54,7 @@ function filterPost(text){ out = newlineify(out) out = urlify(out) + out = emojify(out) out = filterMentions(out) out = crossout(out) out = boldify(out) diff --git a/js/posts.js b/js/posts.js index 29ec25d..0e621fe 100644 --- a/js/posts.js +++ b/js/posts.js @@ -20,7 +20,7 @@ socket.addEventListener("message", async function (event) { let message = ds.message let item = ds.data let username = decodeURIComponent(item.post_user_name) - if(message == "new_post") { + if(message == "new_post" && decodeURIComponent(item.post_receiver_name) == currentChannel) { await createPost(decodeURIComponent(item.post_user_name),decodeURIComponent(item.post_text),item.post_time,item.post_special_text,highest_id+1,item.post_from_bot,item.post_reply_id,true) if(user["username"]!=username)mainNoti(username) @@ -49,7 +49,21 @@ async function postMessage() { setTimeout(function(){ cd = true },400) - let r = await post("/api/post",{"message":document.getElementById("post-text").value,"reply_id":reply_id,"receiver":currentChannel,"pid": posting_id}) + let formdata = new FormData() + + formdata.append("message",document.getElementById("post-text").value) + formdata.append("reply_id",reply_id) + formdata.append("receiver",currentChannel) + formdata.append("pid",posting_id) + for(let i in files) { + console.log("processed file",files[i].name); + formdata.append("file_"+i,files[i]) + } + files = [] + + let r = await fetch("/api/post", { + method: "POST", body: formdata + }); posting_id = undefined update_pid() if(window.location.href.split("?mention=")[1])location.replace('/posts'); @@ -365,6 +379,43 @@ async function loadChannels() { } } +var files = [] + +function addFile(file) { + if(file.size > 100000) { + console.log("file is too big: ", file.name, file.type, file.size); + return; + } + if(files.length >= 5) { + console.log("too many files already: ", files); + return; + } + files[files.length]=file + console.log("File added: ", file.name, file.type, file.size); +} + +function dropHandler(ev) { + console.log("file dropped"); + + ev.preventDefault(); + + if (ev.dataTransfer.items) { + // Use DataTransferItemList interface to access the file(s) + [...ev.dataTransfer.items].forEach((item, i) => { + // If dropped items aren't files, reject them + if (item.kind === 'file') { + const file = item.getAsFile(); + addFile(file) + } + }); + } else { + // Use DataTransfer interface to access the file(s) + [...ev.dataTransfer.files].forEach((file, i) => { + addFile(file) + }); + } +} + function init() { setInterval(update_pid,30000) if(posting_id=="")update_pid() diff --git a/routes/api/post.js b/routes/api/post.js index 6dce3e9..0f19ef0 100644 --- a/routes/api/post.js +++ b/routes/api/post.js @@ -43,7 +43,14 @@ export const setup = function (router, con, server) { else { reply_id = req.body.reply_id; } - if ((typeof req.body.reply_id) != "number") { + if(typeof reply_id == "string") { + reply_id = parseInt(reply_id) + if(isNaN(reply_id)) { + res.json({ "error": "no valid reply id given" }); + return; + } + } + if ((typeof reply_id) != "number") { res.json({ "error": "no valid reply id given" }); return; } @@ -82,11 +89,8 @@ export const setup = function (router, con, server) { data: post_obj }; let messagestr = JSON.stringify(message); - let channel = decodeURIComponent(req.body.receiver); server.wss.clients.forEach(async function (ws) { - if (ws.channel == channel) { - ws.send(messagestr); - } + ws.send(messagestr); }); res.json({ "success": "successfully posted message" }); console.log(5, `posted new message by ${res.locals.username} : ${req.body.message}`); diff --git a/server.js b/server.js index 1020ba9..7c578ce 100644 --- a/server.js +++ b/server.js @@ -433,23 +433,7 @@ settingshandlersetup(router, con, commonfunctions); const get_pid = postsetup(router, con, commonfunctions); dmsPersonalMessagessetup(router, con, commonfunctions); const get_dmpid = dmspostsetup(router, con, commonfunctions); -// const toLoad = [ -// "api/options.js", -// "api/all.js", -// "api/settingshandler.js", -// "api/post.js", -// "api/dms/PersonalMessages.js", -// "api/dms/post.js", -// ] -// for (let i = 0; i < toLoad.length; i++) { -// require("./routes/"+toLoad[i]).setup(router,con,commonfunctions) -// } -// let options = require("./routes/api/options.js") -// options.setup(router,con,commonfunctions) -// let apiALL = require("./routes/api/all.js") -// apiALL.setup(router,con,commonfunctions) -// let settingshandler = require("./routes/api/settingshandler.js") -// settingshandler.setup(router,con,commonfunctions) + router.get("/api/search", async function (req, res) { res.set("Access-Control-Allow-Origin", ""); let type = req.query.type; diff --git a/views/posts.html b/views/posts.html index efb9dcc..b1054c4 100644 --- a/views/posts.html +++ b/views/posts.html @@ -12,9 +12,7 @@ <%- htmlescapejs %> <%- markdownjs %> <%- warnmessagejs %> - let channels = <%- JSON.stringify(await getChannels()) %> - let user = <%- JSON.stringify(user) %> - var posting_id = "<%- getPID() %>" + let channels = <%- JSON.stringify(await getChannels()) %>,user = <%- JSON.stringify(user) %>,posting_id = "<%- getPID() %>" @@ -30,7 +28,7 @@ To log in, please visit The login page
If you are new to here, please visit The register page
-