Remove old code and add comments

pull/1/head
yflory 6 years ago
parent ec2f21ec64
commit 88d23039b6

@ -136,13 +136,10 @@ define([
// Another tab from our worker has left: remove its id from the list // Another tab from our worker has left: remove its id from the list
var removeClient = function (obj) { var removeClient = function (obj) {
var tabId = metadataMgr.getNetfluxId() + '-' + obj.id; var tabId = metadataMgr.getNetfluxId() + '-' + obj.id;
console.log(tabId);
if (content.ids[tabId]) { if (content.ids[tabId]) {
console.log('delete');
delete content.ids[tabId]; delete content.ids[tabId];
delete content.locks[tabId]; delete content.locks[tabId];
APP.onLocal(); APP.onLocal();
console.log(content.ids);
} }
}; };
@ -226,7 +223,6 @@ define([
return void UI.alert(Messages.oo_saveError); return void UI.alert(Messages.oo_saveError);
} }
var i = Math.floor(ev.index / CHECKPOINT_INTERVAL); var i = Math.floor(ev.index / CHECKPOINT_INTERVAL);
// XXX check if content.hashes[i] already exists?
content.hashes[i] = { content.hashes[i] = {
file: data.url, file: data.url,
hash: ev.hash, hash: ev.hash,
@ -343,17 +339,15 @@ define([
isCloseCoAuthoring:false, isCloseCoAuthoring:false,
view: false view: false
}); });
console.log(p.filter(Boolean));
return { return {
index: i, index: i,
list: p.filter(Boolean) list: p.filter(Boolean)
}; };
}; };
// Update the userlist in onlyoffice
var handleNewIds = function (o, n) { var handleNewIds = function (o, n) {
console.log('handle nw ids');
if (stringify(o) === stringify(n)) { return; } if (stringify(o) === stringify(n)) { return; }
console.log(n);
var p = getParticipants(); var p = getParticipants();
ooChannel.send({ ooChannel.send({
type: "connectState", type: "connectState",
@ -361,57 +355,20 @@ define([
participants: p.list, participants: p.list,
waitAuth: false waitAuth: false
}); });
/*
Object.keys(n).forEach(function (id) {
var nId = id.slice(0,32);
if (!o[id]) {
console.log('new user');
ooChannel.send({
type: "connectState",
state: true,
user: {
id: String(n[id].ooid) + "1",
idOriginal: String(n[id].ooid),
username: (users[nId] || {}).name || Messages.anonymous,
indexUser: n[id].index,
view: false
}
});
return;
}
});
Object.keys(o).forEach(function (id) {
var nId = id.slice(0,32);
if (!n[id]) {
console.log('leaving user');
ooChannel.send({
type: "connectState",
state: false,
user: {
id: String(o[id].ooid) + "1",
idOriginal: String(o[id].ooid),
username: (users[nId] || {}).name || Messages.anonymous,
indexUser: o[id].index,
view: false
}
});
return;
}
});
*/
}; };
// Update the locks status in onlyoffice
var handleNewLocks = function (o, n) { var handleNewLocks = function (o, n) {
Object.keys(n).forEach(function (id) { Object.keys(n).forEach(function (id) {
// New lock
if (!o[id]) { if (!o[id]) {
console.log('new lock');
ooChannel.send({ ooChannel.send({
type: "getLock", type: "getLock",
locks: getLock() locks: getLock()
}); });
return; return;
} }
// Updated lock
if (stringify(n[id]) !== stringify(o[id])) { if (stringify(n[id]) !== stringify(o[id])) {
console.log('changed lock');
ooChannel.send({ ooChannel.send({
type: "releaseLock", type: "releaseLock",
locks: [o[id]] locks: [o[id]]
@ -423,8 +380,8 @@ define([
} }
}); });
Object.keys(o).forEach(function (id) { Object.keys(o).forEach(function (id) {
// Removed lock
if (!n[id]) { if (!n[id]) {
console.log('released lock');
ooChannel.send({ ooChannel.send({
type: "releaseLock", type: "releaseLock",
locks: [o[id]] locks: [o[id]]
@ -436,21 +393,23 @@ define([
var handleAuth = function (obj, send) { var handleAuth = function (obj, send) {
// OO is ready
ooChannel.ready = true; ooChannel.ready = true;
// Get the content pushed after the latest checkpoint
var changes = []; var changes = [];
ooChannel.queue.forEach(function (data) { ooChannel.queue.forEach(function (data) {
Array.prototype.push.apply(changes, data.msg.changes); Array.prototype.push.apply(changes, data.msg.changes);
}); });
var p = getParticipants();
send({ send({
type: "authChanges", type: "authChanges",
changes: changes changes: changes
}); });
// Answer to the auth command
var p = getParticipants();
send({ send({
type: "auth", type: "auth",
result: 1, result: 1,
sessionId: sessionId, //"08e77705-dc5c-477d-b73a-b1a7cbca1e9b", sessionId: sessionId,
// XXX add all users from chainpad
participants: p.list, participants: p.list,
locks: [], locks: [],
changes: [], changes: [],
@ -462,40 +421,28 @@ define([
"g_cAscSpellCheckUrl": "/spellchecker", "g_cAscSpellCheckUrl": "/spellchecker",
"settings":{"spellcheckerUrl":"/spellchecker","reconnection":{"attempts":50,"delay":2000}} "settings":{"spellcheckerUrl":"/spellchecker","reconnection":{"attempts":50,"delay":2000}}
}); });
// Open the document
send({ send({
type: "documentOpen", type: "documentOpen",
data: {"type":"open","status":"ok","data":{"Editor.bin":obj.openCmd.url}} data: {"type":"open","status":"ok","data":{"Editor.bin":obj.openCmd.url}}
}); });
// Update current index
var last = ooChannel.queue.pop(); var last = ooChannel.queue.pop();
ooChannel.lastHash = last.hash; ooChannel.lastHash = last.hash;
ooChannel.cpIndex += ooChannel.queue.length; ooChannel.cpIndex += ooChannel.queue.length;
// Apply existing locks
deleteOfflineLocks(); deleteOfflineLocks();
APP.onLocal(); APP.onLocal();
handleNewLocks(oldLocks, content.locks || {}); handleNewLocks(oldLocks, content.locks || {});
/*setTimeout(function () {
if (ooChannel.queue) {
ooChannel.queue.forEach(function (data) {
send(data.msg);
ooChannel.lastHash = data.hash;
ooChannel.cpIndex++;
});
}
deleteOfflineLocks();
APP.onLocal();
handleNewLocks(oldLocks, content.locks || {});
}, 200);*/
}; };
// Remove locks from offline users
var deleteOfflineLocks = function () { var deleteOfflineLocks = function () {
var locks = content.locks || {}; var locks = content.locks || {};
var users = Object.keys(metadataMgr.getMetadata().users); var users = Object.keys(metadataMgr.getMetadata().users);
console.log('delete offline locks');
console.log(users);
Object.keys(locks).forEach(function (id) { Object.keys(locks).forEach(function (id) {
var nId = id.slice(0,32); var nId = id.slice(0,32);
console.log(nId);
if (users.indexOf(nId) === -1) { if (users.indexOf(nId) === -1) {
console.log('deleted');
ooChannel.send({ ooChannel.send({
type: "releaseLock", type: "releaseLock",
locks: [locks[id]] locks: [locks[id]]
@ -505,40 +452,34 @@ define([
}); });
}; };
// Get all existing locks
var getLock = function () { var getLock = function () {
return Object.keys(content.locks).map(function (id) { return Object.keys(content.locks).map(function (id) {
return content.locks[id]; return content.locks[id];
}); });
}; };
// Add a lock
var handleLock = function (obj, send) { var handleLock = function (obj, send) {
console.log('handle lock');
content.locks = content.locks || {}; content.locks = content.locks || {};
deleteOfflineLocks(); // Send the lock to other users
// XXX store in chainpad
var msg = { var msg = {
time: now(), time: now(),
user: myUniqueOOId, user: myUniqueOOId,
block: obj.block && obj.block[0], block: obj.block && obj.block[0],
} }
var myId = getId(); var myId = getId();
/*if (content.locks[myId]) {
send({
type: "releaseLock",
locks: [content.locks[myId]]
});
}*/
content.locks[myId] = msg; content.locks[myId] = msg;
oldLocks = JSON.parse(JSON.stringify(content.locks)); oldLocks = JSON.parse(JSON.stringify(content.locks));
// Answer to our onlyoffice
send({
type: "getLock",
locks: getLock()
});
// Remove old locks
deleteOfflineLocks();
// Commit
APP.onLocal(); APP.onLocal();
send({
type: "getLock",
locks: getLock()
});
//APP.realtime.onSettle(function () {
console.log(getLock());
console.log(oldLocks);
//});
}; };
var parseChanges = function (changes) { var parseChanges = function (changes) {
@ -552,11 +493,41 @@ define([
docid: "fresh", docid: "fresh",
change: '"' + change + '"', change: '"' + change + '"',
time: now(), time: now(),
user: myUniqueOOId, // XXX get username user: myUniqueOOId,
useridoriginal: String(myOOId) // get user id from worker? useridoriginal: String(myOOId)
}; };
}); });
}; };
var handleChanges = function (obj, send) {
// Allow the changes
send({
type: "unSaveLock",
index: ooChannel.cpIndex,
time: +new Date()
});
// Send the changes
rtChannel.sendMsg({
type: "saveChanges",
changes: parseChanges(obj.changes),
changesIndex: ooChannel.cpIndex || 0,
locks: [content.locks[getId()]],
excelAdditionalInfo: null
}, null, function (err, hash) {
// Increment index and update latest hash
ooChannel.cpIndex++;
ooChannel.lastHash = hash;
// Check if a checkpoint is needed
if (ooChannel.cpIndex % CHECKPOINT_INTERVAL === 0) {
makeCheckpoint();
}
// Remove my lock
delete content.locks[getId()];
oldLocks = JSON.parse(JSON.stringify(content.locks));
APP.onLocal();
});
};
var makeChannel = function () { var makeChannel = function () {
var msgEv = Util.mkEvent(); var msgEv = Util.mkEvent();
var iframe = $('#cp-app-oo-container > iframe')[0].contentWindow; var iframe = $('#cp-app-oo-container > iframe')[0].contentWindow;
@ -591,33 +562,11 @@ define([
handleLock(obj, send); handleLock(obj, send);
break; break;
case "getMessages": case "getMessages":
// OO chat messages?
send({ type: "message" }); send({ type: "message" });
break; break;
case "saveChanges": case "saveChanges":
// XXX lock handleChanges(obj, send);
send({
type: "unSaveLock",
index: ooChannel.cpIndex,
time: +new Date()
});
// Send the change
rtChannel.sendMsg({
type: "saveChanges",
changes: parseChanges(obj.changes),
changesIndex: ooChannel.cpIndex || 0,
locks: [content.locks[getId()]], // XXX take from userdoc?
excelAdditionalInfo: null
}, null, function (err, hash) {
ooChannel.cpIndex++;
ooChannel.lastHash = hash;
if (ooChannel.cpIndex % CHECKPOINT_INTERVAL === 0) {
makeCheckpoint();
}
// Remove my lock
delete content.locks[getId()];
oldLocks = JSON.parse(JSON.stringify(content.locks));
APP.onLocal();
});
break; break;
case "unLockDocument": case "unLockDocument":
if (obj.releaseLocks && content.locks[getId()]) { if (obj.releaseLocks && content.locks[getId()]) {
@ -655,8 +604,7 @@ define([
"title": file.title, "title": file.title,
"url": url, "url": url,
"permissions": { "permissions": {
"download": false, // FIXME: download/export is not working, so we use false "download": false,
// to remove the button
"print": false, "print": false,
} }
}, },
@ -848,7 +796,6 @@ define([
} }
var userDoc = APP.realtime.getUserDoc(); var userDoc = APP.realtime.getUserDoc();
console.log(userDoc);
var isNew = false; var isNew = false;
var newDoc = true; var newDoc = true;
if (userDoc === "" || userDoc === "{}") { isNew = true; } if (userDoc === "" || userDoc === "{}") { isNew = true; }
@ -872,27 +819,6 @@ define([
Title.updateTitle(Title.defaultTitle); Title.updateTitle(Title.defaultTitle);
} }
if (!readOnly) {
// Check if the editor has left
/*var me = common.getMetadataMgr().getNetfluxId();
var members = common.getMetadataMgr().getChannelMembers();
if (locked) {
if (members.indexOf(locked) === -1) {
locked = me;
APP.onLocal();
}
} else {
locked = me;
APP.onLocal();
}
if (!common.isLoggedIn()) {
UI.alert(Messages.oo_locked + Messages.oo_locked_unregistered);
} else if (locked !== me) {
UI.alert(Messages.oo_locked + Messages.oo_locked_edited);
}*/
}
openRtChannel(function () { openRtChannel(function () {
setMyId(); setMyId();
loadDocument(newDoc); loadDocument(newDoc);
@ -911,16 +837,12 @@ define([
metadataMgr.updateMetadata(json.metadata); metadataMgr.updateMetadata(json.metadata);
} }
content = json.content; content = json.content;
console.log(content);
if (content.ids) { if (content.ids) {
handleNewIds(oldIds, content.ids); handleNewIds(oldIds, content.ids);
oldIds = JSON.parse(JSON.stringify(content.ids)); oldIds = JSON.parse(JSON.stringify(content.ids));
} }
if (content.locks) { if (content.locks) {
console.log(content.locks);
console.log(oldLocks);
handleNewLocks(oldLocks, content.locks); handleNewLocks(oldLocks, content.locks);
// XXX send locks to oo
oldLocks = JSON.parse(JSON.stringify(content.locks)); oldLocks = JSON.parse(JSON.stringify(content.locks));
} }
}; };

Loading…
Cancel
Save