aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRblSb <msrblsb@gmail.com>2022-11-07 20:20:14 +0300
committerRblSb <msrblsb@gmail.com>2022-11-07 20:20:14 +0300
commit9f11055ddfaedaad66fdb9278db3d78f8ef10c0f (patch)
treeea2836b7b52fd1e7f67f512f5572599fe8d08c4c
parent3cf8531b06ab5647bd86136a1aaab9561d44be32 (diff)
Fix dates in chat history
Save without server timezone offset
-rw-r--r--build/server.js5
-rw-r--r--res/client.js38
-rw-r--r--src/client/Main.hx15
-rw-r--r--src/server/Main.hx4
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);
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage