pad

minimal etherpad alternative  https://pad.ce9e.org
git clone https://git.ce9e.org/pad.git

commit
431c9337e3eccd117e34422cb36b6aadf81c7a2e
parent
a549d7ec148a43c9e80fea34626d0447e0c298fc
Author
Tobias Bengfort <tobias.bengfort@posteo.de>
Date
2020-10-15 10:40
implement history optimization

Diffstat

M static/pad.js 4 ++++
M static/via.js 14 +++++++++++++-

2 files changed, 17 insertions, 1 deletions


diff --git a/static/pad.js b/static/pad.js

@@ -74,6 +74,10 @@ el.addEventListener('input', function() {
   74    74 via.listen(room, function(msg) {
   75    75 	if (msg[1] === 'open') {
   76    76 		el.readOnly = false;
   -1    77 	} else if (msg[1] === 'optimize' && !el.readOnly) {
   -1    78 		var change = diff.diff('', el.value, 3);
   -1    79 		var data = [id, 'changes', [change]];
   -1    80 		via.put(room, data, msg[2]);
   77    81 	} else if (msg[1] === 'changes' && !el.readOnly) {
   78    82 		if (msg[0] === id) {
   79    83 			stagedChanges = [];

diff --git a/static/via.js b/static/via.js

@@ -6,8 +6,20 @@ export var send = function(key, data) {
    6     6 	return fetch(url, {method: 'POST', body: body});
    7     7 };
    8     8 
   -1     9 export var put = function(key, data, lastEventId) {
   -1    10 	var url = baseUrl + 'hmsg/' + key;
   -1    11 	var body = JSON.stringify(data);
   -1    12 	return fetch(url, {method: 'PUT', body: body, headers: {'Last-Event-ID': lastEventId}});
   -1    13 };
   -1    14 
    9    15 export var listen = function(key, fn) {
   10    16 	var evtSource = new EventSource(baseUrl + 'hmsg/' + key);
   11    -1 	evtSource.onmessage = msg => fn(JSON.parse(msg.data));
   -1    17 	evtSource.onmessage = function(msg) {
   -1    18 		fn(JSON.parse(msg.data));
   -1    19 
   -1    20 		if (Math.random() < 0.05) {
   -1    21 			fn([null, 'optimize', msg.lastEventId]);
   -1    22 		}
   -1    23 	};
   12    24 	evtSource.onopen = () => fn([null, 'open']);
   13    25 };