From bf05e9ae89a73a1ceead364c42a2f66744c75723 Mon Sep 17 00:00:00 2001 From: anugu-chegg Date: Sat, 10 Feb 2018 22:30:22 +0530 Subject: [PATCH] Handle client reconnect properly --- src/node/handler/PadMessageHandler.js | 76 +++++++++++++++++++++++++++ src/static/js/collab_client.js | 57 ++++++++++++++++++-- src/static/js/pad.js | 4 +- 3 files changed, 131 insertions(+), 6 deletions(-) diff --git a/src/node/handler/PadMessageHandler.js b/src/node/handler/PadMessageHandler.js index 060bca7b..1d9b5cf1 100644 --- a/src/node/handler/PadMessageHandler.js +++ b/src/node/handler/PadMessageHandler.js @@ -1153,6 +1153,82 @@ function handleClientReady(client, message) client.join(padIds.padId); //Save the revision in sessioninfos, we take the revision from the info the client send to us sessioninfos[client.id].rev = message.client_rev; + + var changesetsNeeded = []; + var changesets = {}; + var changesetsAuthor = {}; + var changesetsTimestamp = {}; + + var startNum = message.client_rev + 1; + var endNum = pad.getHeadRevisionNumber() + 1; + + async.series([ + //fetch all changesets we need + function(callback) + { + var headNum = pad.getHeadRevisionNumber(); + if (endNum > headNum+1) + endNum = headNum+1; + if (startNum < 0) + startNum = 0; + //create a array for all changesets, we will + //replace the values with the changeset later + for(var r=startNum;r