diff --git a/NetfluxWebsocketSrv.js b/NetfluxWebsocketSrv.js index f5dfc5322..e34843865 100644 --- a/NetfluxWebsocketSrv.js +++ b/NetfluxWebsocketSrv.js @@ -141,17 +141,19 @@ const getHistory = function (ctx, channelName, lastKnownHash, handler, cb) { for (var x = msgBuff2.pop(); x; x = msgBuff2.pop()) { handler(x); } }; var hash = function (msg) { - return Crypto.createHash('md5').update(msg).digest('hex'); + return msg.slice(0,64); //Crypto.createHash('md5').update(msg).digest('hex'); }; var isSent = false; for (startPoint = messageBuf.length - 1; startPoint >= 0; startPoint--) { var msg = messageBuf[startPoint]; msgBuff2.push(msg); - if (msg[2] === 'MSG' && hash(msg[4]) === lastKnownHash) { - msgBuff2.pop(); - sendBuff2(); - isSent = true; - break; + if (lastKnownHash) { + if (msg[2] === 'MSG' && hash(msg[4]) === lastKnownHash) { + msgBuff2.pop(); + sendBuff2(); + isSent = true; + break; + } } else if (msg[2] === 'MSG' && msg[4].indexOf('cp|') === 0) { cpCount++; if (cpCount >= 2) { diff --git a/www/code/main.js b/www/code/main.js index a091b3f76..be2c49969 100644 --- a/www/code/main.js +++ b/www/code/main.js @@ -2,7 +2,7 @@ require.config({ paths: { 'json.sortify': '/bower_components/json.sortify/dist/J define([ '/bower_components/chainpad-crypto/crypto.js', '/bower_components/chainpad-netflux/chainpad-netflux.js', - '/bower_components/textpatcher/TextPatcher.amd.js', + '/bower_components/textpatcher/TextPatcher.js', '/common/toolbar.js', 'json.sortify', '/bower_components/chainpad-json-validator/json-ot.js', @@ -521,12 +521,14 @@ define([ }; var onReady = config.onReady = function (info) { - var realtime = module.realtime = info.realtime; module.users = info.userList.users; - module.patchText = TextPatcher.create({ - realtime: realtime, - //logging: true - }); + if (module.realtime !== info.realtime) { + var realtime = module.realtime = info.realtime; + module.patchText = TextPatcher.create({ + realtime: realtime, + //logging: true + }); + } var userDoc = module.realtime.getUserDoc(); diff --git a/www/pad/main.js b/www/pad/main.js index 9c0cb6b7d..a5a135082 100644 --- a/www/pad/main.js +++ b/www/pad/main.js @@ -8,7 +8,7 @@ define([ '/bower_components/chainpad-json-validator/json-ot.js', '/common/TypingTests.js', 'json.sortify', - '/bower_components/textpatcher/TextPatcher.amd.js', + '/bower_components/textpatcher/TextPatcher.js', '/common/cryptpad-common.js', '/common/visible.js', '/common/notify.js', @@ -656,10 +656,12 @@ define([ } } - module.patchText = TextPatcher.create({ - realtime: info.realtime, - //logging: true, - }); + if (module.realtime !== info.realtime) { + module.patchText = TextPatcher.create({ + realtime: info.realtime, + //logging: true, + }); + } module.users = info.userList.users; module.realtime = info.realtime; diff --git a/www/poll/main.js b/www/poll/main.js index 237581713..95b540edf 100644 --- a/www/poll/main.js +++ b/www/poll/main.js @@ -589,7 +589,7 @@ define([ $description.val(proxy.info.description); } - $('#tableScroll').prepend($table); + $('#tableScroll').html('').prepend($table); updateDisplayedTable(); $table @@ -662,11 +662,17 @@ define([ var disconnect = function (info) { //setEditable(false); // TODO + APP.realtime.toolbar.failed(); Cryptpad.alert(Messages.common_connectionLost, undefined, true); }; + var reconnect = function (info) { + //setEditable(true); // TODO + APP.realtime.toolbar.reconnecting(info.myId); + Cryptpad.findOKButton().click(); + }; + var create = function (info) { - var realtime = APP.realtime = info.realtime; var myID = APP.myID = info.myID; var editHash; @@ -676,10 +682,13 @@ define([ editHash = Cryptpad.getEditHashFromKeys(info.channel, secret.keys); } - APP.patchText = TextPatcher.create({ - realtime: realtime, - logging: true, - }); + if (APP.realtime !== info.realtime) { + APP.realtime = info.realtime; + APP.patchText = TextPatcher.create({ + realtime: info.realtime, + logging: true, + }); + } userList = APP.userList = info.userList; @@ -766,7 +775,8 @@ define([ }); }); }) - .on('disconnect', disconnect); + .on('disconnect', disconnect) + .on('reconnect', reconnect); Cryptpad.getAttribute(HIDE_INTRODUCTION_TEXT, function (e, value) { if (e) { console.error(e); } diff --git a/www/slide/main.js b/www/slide/main.js index 2e1cca8a8..138aae9a7 100644 --- a/www/slide/main.js +++ b/www/slide/main.js @@ -2,7 +2,7 @@ require.config({ paths: { 'json.sortify': '/bower_components/json.sortify/dist/J define([ '/bower_components/chainpad-crypto/crypto.js', '/bower_components/chainpad-netflux/chainpad-netflux.js', - '/bower_components/textpatcher/TextPatcher.amd.js', + '/bower_components/textpatcher/TextPatcher.js', '/common/toolbar.js', 'json.sortify', '/bower_components/chainpad-json-validator/json-ot.js', @@ -678,12 +678,15 @@ define([ }; var onReady = config.onReady = function (info) { - var realtime = module.realtime = info.realtime; module.users = info.userList.users; - module.patchText = TextPatcher.create({ - realtime: realtime, - //logging: true - }); + + if (module.realtime !== info.realtime) { + var realtime = module.realtime = info.realtime; + module.patchText = TextPatcher.create({ + realtime: realtime, + //logging: true + }); + } var userDoc = module.realtime.getUserDoc();