From 66e5389dca1cc72f1778007a0ab9586f821c22c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Finn=20B=C3=B6ger?= Date: Fri, 24 Apr 2020 18:12:29 +0200 Subject: [PATCH 1/5] added jetbrains .idea/ to .gitignore --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 7022f129..5fb1b1f8 100644 --- a/.gitignore +++ b/.gitignore @@ -20,3 +20,6 @@ npm-debug.log # Openode .openode wbo-backup.zip + +# Jetbrains +.idea/ \ No newline at end of file From 204ce7f0739755f312a8a9a04fbbd958874a36fa Mon Sep 17 00:00:00 2001 From: Robert Beach Date: Sat, 25 Apr 2020 16:46:29 +0200 Subject: [PATCH 2/5] Move socket event handlers and initial connection to connect function MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Finn Böger --- client-data/js/board.js | 51 +++++++++++++++++++++++++++++------------ 1 file changed, 36 insertions(+), 15 deletions(-) diff --git a/client-data/js/board.js b/client-data/js/board.js index 87e34f93..b4533f47 100644 --- a/client-data/js/board.js +++ b/client-data/js/board.js @@ -38,11 +38,43 @@ Tools.i18n = (function i18n() { Tools.board = document.getElementById("board"); Tools.svg = document.getElementById("canvas"); -Tools.socket = io.connect('', { - "reconnectionDelay": 100, //Make the xhr connections as fast as possible - "timeout": 1000 * 60 * 20 // Timeout after 20 minutes -}); + +//Initialization Tools.curTool = null; + +Tools.socket = null; +Tools.connect = function() { + var self = this; + + // Destroy socket if one already exists + if (self.socket) { + self.socket.destroy(); + delete self.socket; + self.socket = null; + } + + + this.socket = io.connect('', { + "reconnection": true, + "reconnectionDelay": 100, //Make the xhr connections as fast as possible + "timeout": 1000 * 60 * 20 // Timeout after 20 minutes + }); + + //Receive draw instructions from the server + this.socket.on("broadcast", function (msg) { + handleMessage(msg).finally(function afterload() { + var loadingEl = document.getElementById("loadingMessage"); + loadingEl.classList.add("hidden"); + }); + }); + + this.socket.on("reconnect", function onReconnection() { + Tools.socket.emit('joinboard', Tools.boardName); + }); +}; + +Tools.connect(); + Tools.boardName = (function () { var path = window.location.pathname.split("/"); return decodeURIComponent(path[path.length - 1]); @@ -246,17 +278,6 @@ function handleMessage(message) { else return Promise.resolve(); } -//Receive draw instructions from the server -Tools.socket.on("broadcast", function (msg) { - handleMessage(msg).finally(function afterload() { - var loadingEl = document.getElementById("loadingMessage"); - loadingEl.classList.add("hidden"); - }); -}); -Tools.socket.on("reconnect", function onReconnection() { - Tools.socket.emit('joinboard', Tools.boardName); -}); - Tools.unreadMessagesCount = 0; Tools.newUnreadMessage = function () { Tools.unreadMessagesCount++; From b35e0207df4515eeff17a004e31f04b73eea5dfb Mon Sep 17 00:00:00 2001 From: Robert Beach Date: Sat, 25 Apr 2020 17:30:28 +0200 Subject: [PATCH 3/5] Converted await statements to .then() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Finn Böger --- server/sockets.js | 74 +++++++++++++++++++++++++---------------------- 1 file changed, 39 insertions(+), 35 deletions(-) diff --git a/server/sockets.js b/server/sockets.js index ebfc96c2..787d53f8 100644 --- a/server/sockets.js +++ b/server/sockets.js @@ -41,28 +41,30 @@ function getBoard(name) { function socketConnection(socket) { - async function joinBoard(name) { + function joinBoard(name) { // Default to the public board if (!name) name = "anonymous"; // Join the board socket.join(name); - var board = await getBoard(name); - board.users.add(socket.id); - log('board joined', { 'board': board.name, 'users': board.users.size }); - return board; + return getBoard(name).then(board => { + board.users.add(socket.id); + log('board joined', { 'board': board.name, 'users': board.users.size }); + return board; + }); } socket.on("error", noFail(function onError(error) { log("ERROR", error); })); - socket.on("getboard", async function onGetBoard(name) { - var board = await joinBoard(name); - //Send all the board's data as soon as it's loaded - socket.emit("broadcast", { _children: board.getAll() }); - }); + socket.on("getboard", noFail(function onGetBoard(name) { + joinBoard(name).then(board => { + //Send all the board's data as soon as it's loaded + socket.emit("broadcast", { _children: board.getAll() }); + }) + })); socket.on("joinboard", noFail(joinBoard)); @@ -106,37 +108,39 @@ function socketConnection(socket) { socket.on('disconnecting', function onDisconnecting(reason) { Object.keys(socket.rooms).forEach(async function disconnectFrom(room) { if (boards.hasOwnProperty(room)) { - var board = await boards[room]; - board.users.delete(socket.id); - var userCount = board.users.size; - log('disconnection', { 'board': board.name, 'users': board.users.size }); - if (userCount === 0) { - board.save(); - delete boards[room]; - } + boards[room].then(board => { + board.users.delete(socket.id); + var userCount = board.users.size; + log('disconnection', { 'board': board.name, 'users': board.users.size }); + if (userCount === 0) { + board.save(); + delete boards[room]; + } + }); } }); }); } -async function saveHistory(boardName, message) { +function saveHistory(boardName, message) { var id = message.id; - var board = await getBoard(boardName); - switch (message.type) { - case "delete": - if (id) board.delete(id); - break; - case "update": - delete message.type; - if (id) board.update(id, message); - break; - case "child": - board.addChild(message.parent, message); - break; - default: //Add data - if (!id) throw new Error("Invalid message: ", message); - board.set(id, message); - } + getBoard(boardName).then(board => { + switch (message.type) { + case "delete": + if (id) board.delete(id); + break; + case "update": + delete message.type; + if (id) board.update(id, message); + break; + case "child": + board.addChild(message.parent, message); + break; + default: //Add data + if (!id) throw new Error("Invalid message: ", message); + board.set(id, message); + } + }); } function generateUID(prefix, suffix) { From 6e042a3a8272d22a75c7d53e83942fee64faab52 Mon Sep 17 00:00:00 2001 From: Robert Beach Date: Sat, 25 Apr 2020 17:51:43 +0200 Subject: [PATCH 4/5] Toggle tool if clicked again and toggling option exists MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Finn Böger --- client-data/js/board.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/client-data/js/board.js b/client-data/js/board.js index b4533f47..3c7bf001 100644 --- a/client-data/js/board.js +++ b/client-data/js/board.js @@ -180,6 +180,14 @@ Tools.change = function (toolName) { var newtool = Tools.list[toolName]; + if (newtool === Tools.curTool) { + if(newtool.toggle){ + var elem = document.getElementById("toolID-" + newtool.name); + newtool.toggle(elem); + } + return; + } + //Update the GUI var curToolName = (Tools.curTool) ? Tools.curTool.name : ""; try { From f63301b0442314128a377dbcbfc49fa6334ab5a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Finn=20B=C3=B6ger?= Date: Sun, 26 Apr 2020 12:00:34 +0200 Subject: [PATCH 5/5] Revert "Converted await statements to .then()" This reverts commit b35e0207df4515eeff17a004e31f04b73eea5dfb. --- server/sockets.js | 74 ++++++++++++++++++++++------------------------- 1 file changed, 35 insertions(+), 39 deletions(-) diff --git a/server/sockets.js b/server/sockets.js index 787d53f8..ebfc96c2 100644 --- a/server/sockets.js +++ b/server/sockets.js @@ -41,30 +41,28 @@ function getBoard(name) { function socketConnection(socket) { - function joinBoard(name) { + async function joinBoard(name) { // Default to the public board if (!name) name = "anonymous"; // Join the board socket.join(name); - return getBoard(name).then(board => { - board.users.add(socket.id); - log('board joined', { 'board': board.name, 'users': board.users.size }); - return board; - }); + var board = await getBoard(name); + board.users.add(socket.id); + log('board joined', { 'board': board.name, 'users': board.users.size }); + return board; } socket.on("error", noFail(function onError(error) { log("ERROR", error); })); - socket.on("getboard", noFail(function onGetBoard(name) { - joinBoard(name).then(board => { - //Send all the board's data as soon as it's loaded - socket.emit("broadcast", { _children: board.getAll() }); - }) - })); + socket.on("getboard", async function onGetBoard(name) { + var board = await joinBoard(name); + //Send all the board's data as soon as it's loaded + socket.emit("broadcast", { _children: board.getAll() }); + }); socket.on("joinboard", noFail(joinBoard)); @@ -108,39 +106,37 @@ function socketConnection(socket) { socket.on('disconnecting', function onDisconnecting(reason) { Object.keys(socket.rooms).forEach(async function disconnectFrom(room) { if (boards.hasOwnProperty(room)) { - boards[room].then(board => { - board.users.delete(socket.id); - var userCount = board.users.size; - log('disconnection', { 'board': board.name, 'users': board.users.size }); - if (userCount === 0) { - board.save(); - delete boards[room]; - } - }); + var board = await boards[room]; + board.users.delete(socket.id); + var userCount = board.users.size; + log('disconnection', { 'board': board.name, 'users': board.users.size }); + if (userCount === 0) { + board.save(); + delete boards[room]; + } } }); }); } -function saveHistory(boardName, message) { +async function saveHistory(boardName, message) { var id = message.id; - getBoard(boardName).then(board => { - switch (message.type) { - case "delete": - if (id) board.delete(id); - break; - case "update": - delete message.type; - if (id) board.update(id, message); - break; - case "child": - board.addChild(message.parent, message); - break; - default: //Add data - if (!id) throw new Error("Invalid message: ", message); - board.set(id, message); - } - }); + var board = await getBoard(boardName); + switch (message.type) { + case "delete": + if (id) board.delete(id); + break; + case "update": + delete message.type; + if (id) board.update(id, message); + break; + case "child": + board.addChild(message.parent, message); + break; + default: //Add data + if (!id) throw new Error("Invalid message: ", message); + board.set(id, message); + } } function generateUID(prefix, suffix) {