diff options
| author | RblSb <msrblsb@gmail.com> | 2022-11-07 20:20:14 +0300 |
|---|---|---|
| committer | RblSb <msrblsb@gmail.com> | 2022-11-07 20:20:14 +0300 |
| commit | 9f11055ddfaedaad66fdb9278db3d78f8ef10c0f (patch) | |
| tree | ea2836b7b52fd1e7f67f512f5572599fe8d08c4c | |
| parent | 3cf8531b06ab5647bd86136a1aaab9561d44be32 (diff) | |
Fix dates in chat history
Save without server timezone offset
| -rw-r--r-- | build/server.js | 5 | ||||
| -rw-r--r-- | res/client.js | 38 | ||||
| -rw-r--r-- | src/client/Main.hx | 15 | ||||
| -rw-r--r-- | src/server/Main.hx | 4 |
4 files changed, 52 insertions, 10 deletions
diff --git a/build/server.js b/build/server.js index 88ae775..7987e59 100644 --- a/build/server.js +++ b/build/server.js @@ -4616,7 +4616,8 @@ server_Main.prototype = { } data.message.text = text; data.message.clientName = client.name; - var time = HxOverrides.dateStr(new Date()).split(" ")[1]; + var date = new Date(); + var time = HxOverrides.dateStr(new Date(date.getTime() + date.getTimezoneOffset() * 60 * 1000)); this.messages.push({ text : text, name : client.name, time : time}); if(this.messages.length > this.config.serverChatHistory) { this.messages.shift(); @@ -4895,7 +4896,7 @@ server_Main.prototype = { client.setGroupFlag(ClientGroup.Banned,!isOutdated); if(isOutdated) { HxOverrides.remove(this.userList.bans,ban); - haxe_Log.trace("" + client.name + " ban removed",{ fileName : "src/server/Main.hx", lineNumber : 927, className : "server.Main", methodName : "checkBan"}); + haxe_Log.trace("" + client.name + " ban removed",{ fileName : "src/server/Main.hx", lineNumber : 929, className : "server.Main", methodName : "checkBan"}); this.sendClientList(); } break; diff --git a/res/client.js b/res/client.js index d15aea4..9669afe 100644 --- a/res/client.js +++ b/res/client.js @@ -118,6 +118,28 @@ HxOverrides.dateStr = function(date) { var s = date.getSeconds(); return date.getFullYear() + "-" + (m < 10 ? "0" + m : "" + m) + "-" + (d < 10 ? "0" + d : "" + d) + " " + (h < 10 ? "0" + h : "" + h) + ":" + (mi < 10 ? "0" + mi : "" + mi) + ":" + (s < 10 ? "0" + s : "" + s); }; +HxOverrides.strDate = function(s) { + switch(s.length) { + case 8: + var k = s.split(":"); + var d = new Date(); + d["setTime"](0); + d["setUTCHours"](k[0]); + d["setUTCMinutes"](k[1]); + d["setUTCSeconds"](k[2]); + return d; + case 10: + var k = s.split("-"); + return new Date(k[0],k[1] - 1,k[2],0,0,0); + case 19: + var k = s.split(" "); + var y = k[0].split("-"); + var t = k[1].split(":"); + return new Date(y[0],y[1] - 1,y[2],t[0],t[1],t[2]); + default: + throw haxe_Exception.thrown("Invalid date format : " + s); + } +}; HxOverrides.cca = function(s,index) { var x = s.charCodeAt(index); if(x != x) { @@ -1862,7 +1884,11 @@ client_Main.prototype = { ,clearChat: function() { window.document.querySelector("#messagebuffer").textContent = ""; } - ,addMessage: function(name,text,time) { + ,getLocalDateFromUtc: function(utcDate) { + var date = HxOverrides.strDate(utcDate); + return HxOverrides.dateStr(new Date(date.getTime() - date.getTimezoneOffset() * 60 * 1000)); + } + ,addMessage: function(name,text,date) { var msgBuf = window.document.querySelector("#messagebuffer"); var userDiv = window.document.createElement("div"); userDiv.className = "chat-msg-" + name; @@ -1870,10 +1896,14 @@ client_Main.prototype = { headDiv.className = "head"; var tstamp = window.document.createElement("span"); tstamp.className = "timestamp"; - if(time == null) { - time = HxOverrides.dateStr(new Date()).split(" ")[1]; + if(date == null) { + date = HxOverrides.dateStr(new Date()); + } else { + date = this.getLocalDateFromUtc(date); } - tstamp.textContent = time; + var time = date.split(" ")[1]; + tstamp.textContent = time == null ? date : time; + tstamp.title = date; var nameDiv = window.document.createElement("strong"); nameDiv.className = "username"; nameDiv.textContent = name; diff --git a/src/client/Main.hx b/src/client/Main.hx index fad4e4f..26d4518 100644 --- a/src/client/Main.hx +++ b/src/client/Main.hx @@ -761,7 +761,13 @@ class Main { ge("#messagebuffer").textContent = ""; } - function addMessage(name:String, text:String, ?time:String):Void { + function getLocalDateFromUtc(utcDate:String):String { + final date = Date.fromString(utcDate); + final localTime = date.getTime() - date.getTimezoneOffset() * 60 * 1000; + return Date.fromTime(localTime).toString(); + } + + function addMessage(name:String, text:String, ?date:String):Void { final msgBuf = ge("#messagebuffer"); final userDiv = document.createDivElement(); userDiv.className = 'chat-msg-$name'; @@ -771,8 +777,11 @@ class Main { final tstamp = document.createSpanElement(); tstamp.className = "timestamp"; - if (time == null) time = Date.now().toString().split(" ")[1]; - tstamp.textContent = time; + if (date == null) date = Date.now().toString(); + else date = getLocalDateFromUtc(date); + final time = date.split(" ")[1]; + tstamp.textContent = time == null ? date : time; + tstamp.title = date; final nameDiv = document.createElement("strong"); nameDiv.className = "username"; diff --git a/src/server/Main.hx b/src/server/Main.hx index e9f6e21..f7d61e0 100644 --- a/src/server/Main.hx +++ b/src/server/Main.hx @@ -561,7 +561,9 @@ class Main { } data.message.text = text; data.message.clientName = client.name; - final time = Date.now().toString().split(" ")[1]; + final date = Date.now(); + final utcTime = date.getTime() + date.getTimezoneOffset() * 60 * 1000; + final time = Date.fromTime(utcTime).toString(); messages.push({text: text, name: client.name, time: time}); if (messages.length > config.serverChatHistory) messages.shift(); broadcast(data); |
