From 7df8a33c7b1c6cc7d18bde2586a3224b02686a95 Mon Sep 17 00:00:00 2001 From: RblSb Date: Wed, 29 Jul 2020 18:09:20 +0300 Subject: Exit messages --- build/server.js | 31 +++++++++++++++++++------------ res/client.js | 2 +- src/client/Main.hx | 2 +- src/server/Main.hx | 11 ++++++++--- 4 files changed, 29 insertions(+), 17 deletions(-) diff --git a/build/server.js b/build/server.js index 70054d6..8504332 100644 --- a/build/server.js +++ b/build/server.js @@ -3739,7 +3739,6 @@ var server_Main = function() { continue; } client.ws.terminate(); - _gthis.onMessage(client,{ type : "Disconnected"},true); } }; }; @@ -3799,7 +3798,7 @@ server_Main.prototype = { var field = _g1[_g]; ++_g; if(Reflect.field(config,field) == null) { - haxe_Log.trace("Warning: config field \"" + field + "\" is unknown",{ fileName : "src/server/Main.hx", lineNumber : 156, className : "server.Main", methodName : "getUserConfig"}); + haxe_Log.trace("Warning: config field \"" + field + "\" is unknown",{ fileName : "src/server/Main.hx", lineNumber : 153, className : "server.Main", methodName : "getUserConfig"}); } config[field] = Reflect.field(customConfig,field); } @@ -3810,14 +3809,14 @@ server_Main.prototype = { var emote = _g1[_g]; ++_g; if(emoteCopies_h[emote.name]) { - haxe_Log.trace("Warning: emote name \"" + emote.name + "\" has copy",{ fileName : "src/server/Main.hx", lineNumber : 161, className : "server.Main", methodName : "getUserConfig"}); + haxe_Log.trace("Warning: emote name \"" + emote.name + "\" has copy",{ fileName : "src/server/Main.hx", lineNumber : 158, className : "server.Main", methodName : "getUserConfig"}); } emoteCopies_h[emote.name] = true; if(!this.verbose) { continue; } if(emoteCopies_h[emote.image]) { - haxe_Log.trace("Warning: emote url of name \"" + emote.name + "\" has copy",{ fileName : "src/server/Main.hx", lineNumber : 164, className : "server.Main", methodName : "getUserConfig"}); + haxe_Log.trace("Warning: emote url of name \"" + emote.name + "\" has copy",{ fileName : "src/server/Main.hx", lineNumber : 161, className : "server.Main", methodName : "getUserConfig"}); } emoteCopies_h[emote.image] = true; } @@ -3836,7 +3835,7 @@ server_Main.prototype = { js_node_Fs.writeFileSync("" + folder + "/users.json",JSON.stringify(users,null,"\t")); } ,saveState: function() { - haxe_Log.trace("Saving state...",{ fileName : "src/server/Main.hx", lineNumber : 186, className : "server.Main", methodName : "saveState"}); + haxe_Log.trace("Saving state...",{ fileName : "src/server/Main.hx", lineNumber : 183, className : "server.Main", methodName : "saveState"}); var json = JSON.stringify({ videoList : this.videoList, isPlaylistOpen : this.isPlaylistOpen, itemPos : this.itemPos, messages : this.messages, timer : { time : this.videoTimer.getTime(), paused : this.videoTimer.isPaused()}},null,"\t"); js_node_Fs.writeFileSync(this.statePath,json); } @@ -3844,7 +3843,7 @@ server_Main.prototype = { if(!sys_FileSystem.exists(this.statePath)) { return; } - haxe_Log.trace("Loading state...",{ fileName : "src/server/Main.hx", lineNumber : 203, className : "server.Main", methodName : "loadState"}); + haxe_Log.trace("Loading state...",{ fileName : "src/server/Main.hx", lineNumber : 200, className : "server.Main", methodName : "loadState"}); var data = JSON.parse(js_node_Fs.readFileSync(this.statePath,{ encoding : "utf8"})); this.videoList.length = 0; this.messages.length = 0; @@ -3861,7 +3860,7 @@ server_Main.prototype = { this.videoTimer.pause(); } ,logError: function(type,data) { - haxe_Log.trace(type,{ fileName : "src/server/Main.hx", lineNumber : 217, className : "server.Main", methodName : "logError", customParams : [data]}); + haxe_Log.trace(type,{ fileName : "src/server/Main.hx", lineNumber : 214, className : "server.Main", methodName : "logError", customParams : [data]}); var crashesFolder = "" + this.rootDir + "/user/crashes"; server_Utils.ensureDir(crashesFolder); js_node_Fs.writeFileSync("" + crashesFolder + "/" + (DateTools.format(new Date(),"%Y-%m-%d_%H_%M_%S") + "-" + type) + ".json",JSON.stringify(data,null,"\t")); @@ -3877,7 +3876,7 @@ server_Main.prototype = { if(_gthis.clients.length == 0) { return; } - haxe_Log.trace("Ping " + url,{ fileName : "src/server/Main.hx", lineNumber : 232, className : "server.Main", methodName : "initIntergationHandlers"}); + haxe_Log.trace("Ping " + url,{ fileName : "src/server/Main.hx", lineNumber : 229, className : "server.Main", methodName : "initIntergationHandlers"}); js_node_Http.get(url,null,function(r) { }); }; @@ -3891,7 +3890,7 @@ server_Main.prototype = { } this.userList.admins.push({ name : name, hash : hash}); this.writeUsers(this.userList); - haxe_Log.trace("Admin " + name + " added.",{ fileName : "src/server/Main.hx", lineNumber : 247, className : "server.Main", methodName : "addAdmin"}); + haxe_Log.trace("Admin " + name + " added.",{ fileName : "src/server/Main.hx", lineNumber : 244, className : "server.Main", methodName : "addAdmin"}); } ,replayLog: function(events) { var _gthis = this; @@ -3935,7 +3934,7 @@ server_Main.prototype = { var ip = req.connection.remoteAddress; var id = this.freeIds.length > 0 ? this.freeIds.shift() : this.clients.length; var name = "Guest " + (id + 1); - haxe_Log.trace("" + name + " connected (" + ip + ")",{ fileName : "src/server/Main.hx", lineNumber : 285, className : "server.Main", methodName : "onConnect"}); + haxe_Log.trace("" + name + " connected (" + ip + ")",{ fileName : "src/server/Main.hx", lineNumber : 282, className : "server.Main", methodName : "onConnect"}); var client = new Client(ws,req,id,name,0); client.setGroupFlag(ClientGroup.Admin,this.config.localAdmins && req.connection.localAddress == ip); this.clients.push(client); @@ -3947,7 +3946,7 @@ server_Main.prototype = { var obj = _gthis.wsEventParser.fromJson(data); if(_gthis.wsEventParser.errors.length > 0 || _gthis.noTypeObj(obj)) { var errors = "" + ("Wrong request for type \"" + obj.type + "\":") + "\n" + json2object_ErrorUtils.convertErrorArray(_gthis.wsEventParser.errors); - haxe_Log.trace(errors,{ fileName : "src/server/Main.hx", lineNumber : 301, className : "server.Main", methodName : "onConnect"}); + haxe_Log.trace(errors,{ fileName : "src/server/Main.hx", lineNumber : 298, className : "server.Main", methodName : "onConnect"}); _gthis.serverMessage(client,errors); return; } @@ -4044,7 +4043,7 @@ server_Main.prototype = { if(!internal) { return; } - haxe_Log.trace("Client " + client.name + " disconnected",{ fileName : "src/server/Main.hx", lineNumber : 356, className : "server.Main", methodName : "onMessage"}); + haxe_Log.trace("Client " + client.name + " disconnected",{ fileName : "src/server/Main.hx", lineNumber : 353, className : "server.Main", methodName : "onMessage"}); server_Utils.sortedPush(this.freeIds,client.id); HxOverrides.remove(this.clients,client); this.sendClientList(); @@ -4059,6 +4058,14 @@ server_Main.prototype = { } this.videoTimer.pause(); } + haxe_Timer.delay(function() { + if(Lambda.exists(_gthis.clients,function(i) { + return i.name == client.name; + })) { + return; + } + _gthis.broadcast({ type : "ServerMessage", serverMessage : { textId : "" + client.name + " has left"}}); + },5000); break; case "GetTime": if(this.videoList.length == 0) { diff --git a/res/client.js b/res/client.js index 73c0671..e0ad935 100644 --- a/res/client.js +++ b/res/client.js @@ -1091,7 +1091,7 @@ client_Main.prototype = { first = items.shift(); } items.reverse(); - if(this.player.isListEmpty()) { + if(first != null) { items.unshift(first); } } diff --git a/src/client/Main.hx b/src/client/Main.hx index 31bd580..73f733c 100644 --- a/src/client/Main.hx +++ b/src/client/Main.hx @@ -224,7 +224,7 @@ class Main { var first:Null = null; if (player.isListEmpty()) first = items.shift(); items.reverse(); - if (player.isListEmpty()) items.unshift(first); + if (first != null) items.unshift(first); } function addVideoArray(links:Array, atEnd:Bool, isTemp:Bool):Void { diff --git a/src/server/Main.hx b/src/server/Main.hx index 85006c7..8a5f381 100644 --- a/src/server/Main.hx +++ b/src/server/Main.hx @@ -110,9 +110,6 @@ class Main { continue; } client.ws.terminate(); - onMessage(client, { - type: Disconnected - }, true); } }; } @@ -364,6 +361,14 @@ class Main { if (waitVideoStart != null) waitVideoStart.stop(); videoTimer.pause(); } + Timer.delay(() -> { + if (clients.exists(i -> i.name == client.name)) return; + broadcast({ + type: ServerMessage, serverMessage: { + textId: '${client.name} has left' + } + }); + }, 5000); case UpdateClients: sendClientList(); -- cgit v1.2.3