From 4946a44e3392942a03fced86f9ca28566ff559a6 Mon Sep 17 00:00:00 2001 From: yflory Date: Thu, 24 Jan 2019 16:20:56 +0100 Subject: [PATCH] Pin the realtime channel in the OO apps --- www/common/onlyoffice/inner.js | 19 +++++++++++++++++-- www/common/onlyoffice/main.js | 8 +++++++- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/www/common/onlyoffice/inner.js b/www/common/onlyoffice/inner.js index 2fa4101fa..350faa1ce 100644 --- a/www/common/onlyoffice/inner.js +++ b/www/common/onlyoffice/inner.js @@ -66,6 +66,7 @@ define([ hashes: {}, ids: {} }; + var oldHashes = {}; var oldIds = {}; var oldLocks = {}; var myUniqueOOId; @@ -169,8 +170,8 @@ define([ var now = function () { return +new Date(); }; - var getLastCp = function () { - var hashes = content.hashes; + var getLastCp = function (old) { + var hashes = old ? oldHashes : content.hashes; if (!hashes || !Object.keys(hashes).length) { return {}; } var lastIndex = Math.max.apply(null, Object.keys(hashes).map(Number)); var last = JSON.parse(JSON.stringify(hashes[lastIndex])); @@ -227,6 +228,7 @@ define([ hash: ev.hash, index: ev.index }; + oldHashes = JSON.parse(JSON.stringify(content.hashes)); content.saveLock = undefined; APP.onLocal(); sframeChan.query('Q_OO_COMMAND', { @@ -810,6 +812,10 @@ define([ throw new Error(errorText); } content = hjson.content || content; + var newLatest = getLastCp(); + sframeChan.query('Q_OO_SAVE', { + url: newLatest.file + }, function () { }); newDoc = !content.hashes || Object.keys(content.hashes).length === 0; } else { Title.updateTitle(Title.defaultTitle); @@ -833,6 +839,15 @@ define([ metadataMgr.updateMetadata(json.metadata); } content = json.content; + if (content.hashes) { + var latest = getLastCp(true); + var newLatest = getLastCp(); + if (newLatest.index >= latest.index) { + sframeChan.query('Q_OO_SAVE', { + url: newLatest.file + }, function () { }); + } + } if (content.ids) { handleNewIds(oldIds, content.ids); oldIds = JSON.parse(JSON.stringify(content.ids)); diff --git a/www/common/onlyoffice/main.js b/www/common/onlyoffice/main.js index 2da75c239..331b83621 100644 --- a/www/common/onlyoffice/main.js +++ b/www/common/onlyoffice/main.js @@ -56,7 +56,13 @@ define([ }); }); sframeChan.on('Q_OO_OPENCHANNEL', function (data, cb) { - console.log(data); + Cryptpad.getPadAttribute('rtChannel', function (err, res) { + // If already stored, don't pin it again + if (res && res === data.channel) { return; } + Cryptpad.pinPads([data.channel], function () { + Cryptpad.setPadAttribute('rtChannel', data.channel, function () {}); + }); + }); Cryptpad.onlyoffice.execCommand({ cmd: 'OPEN_CHANNEL', data: {