From e5e43b87c639e16fb2f46e27ce329bfb75b28ffe Mon Sep 17 00:00:00 2001 From: Finn Krein Date: Fri, 21 May 2021 18:18:27 +0200 Subject: [PATCH] Make batch messages consistent. --- client-data/tools/hand/hand.js | 20 ++++++----------- server/boardData.js | 4 +--- server/sockets.js | 39 +++++++++++++++++++--------------- 3 files changed, 29 insertions(+), 34 deletions(-) diff --git a/client-data/tools/hand/hand.js b/client-data/tools/hand/hand.js index 743d63b9..57158937 100644 --- a/client-data/tools/hand/hand.js +++ b/client-data/tools/hand/hand.js @@ -140,8 +140,7 @@ } }) var msg = { - type: "batch", - msgs: msgs + _children: msgs }; { let tmatrix = get_translate_matrix(selectionRect); @@ -184,19 +183,11 @@ } function draw(data) { + if (data._children) { + batchCall(draw, data._children); + } + else { switch (data.type) { - case "batch": - for ([i,msg] of data.msgs.entries()) { - switch (msg.type) { - case "update": - let tmatrix = get_translate_matrix(Tools.svg.getElementById(msg.id)); - tmatrix.e = msg.deltax || 0; - tmatrix.f = msg.deltay || 0; - break; - // Eventually also "delete"? - } - } - break; case "update": var elem = Tools.svg.getElementById(data.id); if (!elem) throw new Error("Mover: Tried to move an element that does not exist."); @@ -208,6 +199,7 @@ throw new Error("Mover: 'move' instruction with unknown type. ", data); } } + } function clickSelector(x ,y , evt) { var scale = Tools.drawingArea.getCTM().a diff --git a/server/boardData.js b/server/boardData.js index f99f4554..8e5ead31 100644 --- a/server/boardData.js +++ b/server/boardData.js @@ -113,7 +113,7 @@ class BoardData { * @param {envelope} array of messages to be delegated to the other methods */ batch(envelope) { - for (const message of envelope.msgs) { + for (const message of envelope._children) { let id = message.id; switch (message.type) { case "delete": @@ -125,8 +125,6 @@ class BoardData { case "child": this.addChild(message.parent, message); break; - case "batch": - throw new Error("Nested batch message: ", message); default: //Add data if (!id) throw new Error("Invalid message: ", message); diff --git a/server/sockets.js b/server/sockets.js index 5fcd7c8d..0e4391e8 100644 --- a/server/sockets.js +++ b/server/sockets.js @@ -160,24 +160,29 @@ function handleMessage(boardName, message, socket) { async function saveHistory(boardName, message) { var id = message.id; + if (!message.tool && !message._children) { + console.error("Received a badly formatted message (no tool). ", message); + } var board = await getBoard(boardName); - switch (message.type) { - case "delete": - if (id) board.delete(id); - break; - case "update": - if (id) board.update(id, message); - break; - case "child": - board.addChild(message.parent, message); - break; - case "batch": - board.batch(message); - break; - default: - //Add data - if (!id) throw new Error("Invalid message: ", message); - board.set(id, message); + if (message._children) { + board.batch(message); + } + else { + switch (message.type) { + case "delete": + if (id) board.delete(id); + break; + case "update": + 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); + } } }