Fix obvious issues in cba

pull/1/head
yflory 5 years ago
parent 9c5f0c0d6f
commit 026bf6a425

@ -135,6 +135,7 @@ define([
// in the comments, "I" am "first" // in the comments, "I" am "first"
var fixMarks = function (first, last, content, toKeepEnd) { var fixMarks = function (first, last, content, toKeepEnd) {
var toKeep = []; var toKeep = [];
console.log(first, last, JSON.stringify(toKeepEnd));
// Get their start position compared to the authDoc // Get their start position compared to the authDoc
var lastAuthOffset = last.offset + last.total; var lastAuthOffset = last.offset + last.total;
@ -175,6 +176,10 @@ define([
toJoin = parseMark(toJoinMark); toJoin = parseMark(toJoinMark);
} }
console.log('to keep, to join');
console.warn(JSON.stringify(toKeep));
console.warn(JSON.stringify(toJoin));
// Add the new markers to the result // Add the new markers to the result
Array.prototype.unshift.apply(toKeepEnd, toKeep); Array.prototype.unshift.apply(toKeepEnd, toKeep);
@ -199,12 +204,13 @@ define([
} }
}); });
if (toKeep.length && toJoin) { if (toKeep.length && toJoin && toJoin.endLine && toJoin.startLine) {
// Make sure the marks are joined correctly: // Make sure the marks are joined correctly:
// fix the start position of the marks to keep // fix the start position of the marks to keep
toKeepEnd[0][1] = toJoin.endLine; toKeepEnd[0][1] = toJoin.endLine;
toKeepEnd[0][2] = toJoin.endCh; toKeepEnd[0][2] = toJoin.endCh;
} }
console.warn(JSON.stringify(toKeepEnd));
}; };
var checkMarks = function (Env, userDoc) { var checkMarks = function (Env, userDoc) {
@ -212,10 +218,11 @@ define([
var chainpad = Env.framework._.cpNfInner.chainpad; var chainpad = Env.framework._.cpNfInner.chainpad;
var editor = Env.editor; var editor = Env.editor;
var CodeMirror = Env.CodeMirror; var CodeMirror = Env.CodeMirror;
var oldMarks = Env.oldMarks;
setAuthorMarks(Env, userDoc.authormarks); setAuthorMarks(Env, userDoc.authormarks);
var oldMarks = Env.oldMarks;
if (!Env.enabled) { return; } if (!Env.enabled) { return; }
var authDoc = JSON.parse(chainpad.getAuthDoc() || '{}'); var authDoc = JSON.parse(chainpad.getAuthDoc() || '{}');
@ -229,7 +236,13 @@ define([
var commonParent = chainpad.getAuthBlock().getParent().getContent().doc; var commonParent = chainpad.getAuthBlock().getParent().getContent().doc;
var content = JSON.parse(commonParent || '{}').content || ''; var content = JSON.parse(commonParent || '{}').content || '';
console.error("BEGIN");
console.log(JSON.stringify(oldMarks.marks));
console.log(JSON.stringify(authDoc.authormarks.marks));
var theirOps = ChainPad.Diff.diff(content, authDoc.content); var theirOps = ChainPad.Diff.diff(content, authDoc.content);
console.warn(theirOps, chainpad.getAuthBlock().getPatch().operations);
var myOps = ChainPad.Diff.diff(content, localDoc); var myOps = ChainPad.Diff.diff(content, localDoc);
if (!myOps.length || !theirOps.length) { return; } if (!myOps.length || !theirOps.length) { return; }
@ -263,7 +276,8 @@ define([
theirOps.forEach(parseOp(false)); theirOps.forEach(parseOp(false));
var sorted = Object.keys(ops).map(Number); var sorted = Object.keys(ops).map(Number);
sorted.sort().reverse(); sorted.sort(function (a, b) { return a-b; }).reverse();
console.warn(ops, sorted);
// We start from the end so that we don't have to fix the offsets everytime // We start from the end so that we don't have to fix the offsets everytime
var prev; var prev;
@ -289,6 +303,10 @@ define([
// Prepend the markers placed before this operation // Prepend the markers placed before this operation
var first = ops[sorted[sorted.length - 1]]; var first = ops[sorted[sorted.length - 1]];
if (first) { Array.prototype.unshift.apply(toKeepEnd, first.marks); } if (first) { Array.prototype.unshift.apply(toKeepEnd, first.marks); }
console.error(JSON.stringify(first.marks));
console.error(JSON.stringify(toKeepEnd));
console.error("END");
// Commit our new markers // Commit our new markers
Env.authormarks.marks = toKeepEnd; Env.authormarks.marks = toKeepEnd;
@ -329,6 +347,8 @@ define([
mark.clear(); mark.clear();
}); });
} catch (e) { } catch (e) {
console.warn(mark, JSON.stringify(authormarks.marks));
console.error(from, to);
console.error(e); console.error(e);
} }
@ -515,7 +535,12 @@ define([
if (Env.ready) { Env.framework.localChange(); } if (Env.ready) { Env.framework.localChange(); }
} }
if (!Env.enabled) { return; } // If the markers are disabled or if I haven't pushed content since the last reset,
// don't update my data
if (!Env.enabled || !Env.myAuthorId || !Env.authormarks.authors[Env.myAuthorId]) {
return;
}
// Update my data // Update my data
var changed = setMyData(Env); var changed = setMyData(Env);
if (changed) { if (changed) {

Loading…
Cancel
Save