XWR-190: Make CryptPad version with rtwiki/CodeMirror
This commit is contained in:
parent
9626dfc365
commit
af80bed07b
@ -4,11 +4,13 @@ define([
|
|||||||
//'RTWiki_ErrorBox',
|
//'RTWiki_ErrorBox',
|
||||||
//'RTWiki_WebHome_chainpad'
|
//'RTWiki_WebHome_chainpad'
|
||||||
'/common/crypto.js',
|
'/common/crypto.js',
|
||||||
'/bower_components/jquery/dist/jquery.min.js',
|
|
||||||
'/code/errorbox.js',
|
'/code/errorbox.js',
|
||||||
|
'/common/messages.js',
|
||||||
|
'/common/toolbar.js',
|
||||||
'/common/chainpad.js',
|
'/common/chainpad.js',
|
||||||
'/common/otaml.js'
|
'/common/otaml.js',
|
||||||
], function(Crypto, TextArea, ErrorBox) {
|
'/bower_components/jquery/dist/jquery.min.js'
|
||||||
|
], function(Crypto, ErrorBox, Messages, Toolbar) {
|
||||||
var $ = window.jQuery;
|
var $ = window.jQuery;
|
||||||
var ChainPad = window.ChainPad;
|
var ChainPad = window.ChainPad;
|
||||||
var Otaml = window.Otaml;
|
var Otaml = window.Otaml;
|
||||||
@ -643,21 +645,19 @@ define([
|
|||||||
userName,
|
userName,
|
||||||
channel,
|
channel,
|
||||||
messages,
|
messages,
|
||||||
demoMode,
|
|
||||||
language,
|
|
||||||
cryptKey)
|
cryptKey)
|
||||||
{
|
{
|
||||||
debug("Opening websocket");
|
debug("Opening websocket");
|
||||||
var toolbar = createRealtimeToolbar('#cme_toolbox');/* To check */
|
|
||||||
var textArea = windowCM.document.getElementById('editor1');
|
var textArea = windowCM.document.getElementById('editor1');
|
||||||
var cmDiv = windowCM.document.getElementsByClassName('CodeMirror')[0];
|
var cmDiv = windowCM.document.getElementsByClassName('CodeMirror')[0];
|
||||||
var cmEditor = cmDiv.CodeMirror;
|
var cmEditor = cmDiv.CodeMirror;
|
||||||
|
var onEvent = function () { };
|
||||||
var socket = new WebSocket(websocketUrl);
|
var socket = new WebSocket(websocketUrl);
|
||||||
socket.onClose = [];
|
socket.onClose = [];
|
||||||
socket.onMessage = [];
|
socket.onMessage = [];
|
||||||
var initState = $(textArea).val();
|
var initState = $(textArea).val();
|
||||||
var realtime = socket.realtime = ChainPad.create(userName, 'x', channel, initState);
|
var realtime = socket.realtime = ChainPad.create(userName, 'x', channel, initState);
|
||||||
|
var toolbar = realtime.toolbar = Toolbar.create(windowCM.$('#cme_toolbox'), userName, realtime);
|
||||||
// for debugging
|
// for debugging
|
||||||
window.rtwiki_chainpad = realtime;
|
window.rtwiki_chainpad = realtime;
|
||||||
|
|
||||||
@ -692,6 +692,7 @@ define([
|
|||||||
if (socket.intentionallyClosing || isErrorState) { return false; }
|
if (socket.intentionallyClosing || isErrorState) { return false; }
|
||||||
if (isSocketDisconnected(socket, realtime)) {
|
if (isSocketDisconnected(socket, realtime)) {
|
||||||
realtime.abort();
|
realtime.abort();
|
||||||
|
realtime.toolbar.failed();
|
||||||
socket.close();
|
socket.close();
|
||||||
ErrorBox.show('disconnected');
|
ErrorBox.show('disconnected');
|
||||||
isErrorState = true;
|
isErrorState = true;
|
||||||
@ -706,16 +707,16 @@ define([
|
|||||||
|
|
||||||
var userListElement = createUserList(realtime,
|
var userListElement = createUserList(realtime,
|
||||||
userName,
|
userName,
|
||||||
toolbar.find('.rtwiki-toolbar-leftside'),
|
[],
|
||||||
messages);
|
messages);
|
||||||
userListElement.text(messages.initializing);
|
userListElement.text(messages.initializing);
|
||||||
createLagElement(socket,
|
createLagElement(socket,
|
||||||
realtime,
|
realtime,
|
||||||
toolbar.find('.rtwiki-toolbar-rightside'),
|
[],
|
||||||
messages);
|
messages);
|
||||||
|
|
||||||
setAutosaveHiddenState(true);
|
setAutosaveHiddenState(true);
|
||||||
socket.onEvent = function () {
|
onEvent = function () {
|
||||||
if (isErrorState) { return; }
|
if (isErrorState) { return; }
|
||||||
if (initializing) { return; }
|
if (initializing) { return; }
|
||||||
var oldDocText = realtime.getUserDoc();
|
var oldDocText = realtime.getUserDoc();
|
||||||
@ -741,8 +742,6 @@ define([
|
|||||||
realtime.message(message);
|
realtime.message(message);
|
||||||
});
|
});
|
||||||
realtime.onMessage(function (message) { message = Crypto.encrypt(message, cryptKey);socket.send(message); });
|
realtime.onMessage(function (message) { message = Crypto.encrypt(message, cryptKey);socket.send(message); });
|
||||||
bindAllEvents(cmDiv, socket.onEvent, false);
|
|
||||||
$(textArea).attr("disabled", "disabled");
|
|
||||||
|
|
||||||
var userDocBeforePatch;
|
var userDocBeforePatch;
|
||||||
var incomingPatch = function () {
|
var incomingPatch = function () {
|
||||||
@ -787,24 +786,24 @@ define([
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
realtime.onPatch(incomingPatch);
|
realtime.onPatch(incomingPatch);
|
||||||
//**//
|
|
||||||
realtime.onUserListChange(function (userList) {
|
realtime.onUserListChange(function (userList) {
|
||||||
if (initializing && userList.indexOf(userName) > -1) {
|
if (initializing && userList.indexOf(userName) > -1) {
|
||||||
initializing = false;
|
initializing = false;
|
||||||
cmEditor.setValue(realtime.getUserDoc());
|
|
||||||
incomingPatch();
|
incomingPatch();
|
||||||
/*$(textArea).val(realtime.getUserDoc());
|
|
||||||
TextArea.attach($(textArea)[0], realtime);
|
|
||||||
$(textArea).removeAttr("disabled");*/
|
|
||||||
}
|
}
|
||||||
if (!initializing) {
|
if (!initializing) {
|
||||||
updateUserList(userName, userListElement, userList, messages);
|
updateUserList(userName, userListElement, userList, messages);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
debug("Bound websocket");
|
debug("Bound websocket");
|
||||||
|
bindAllEvents(cmDiv, onEvent, false);
|
||||||
|
setInterval(function () {
|
||||||
|
if (isErrorState || checkSocket()) {
|
||||||
|
toolbar.reconnecting();
|
||||||
|
}
|
||||||
|
}, 200);
|
||||||
realtime.start();
|
realtime.start();
|
||||||
|
toolbar.connected();
|
||||||
};
|
};
|
||||||
socket.onclose = function (evt) {
|
socket.onclose = function (evt) {
|
||||||
for (var i = 0; i < socket.onClose.length; i++) {
|
for (var i = 0; i < socket.onClose.length; i++) {
|
||||||
@ -829,13 +828,14 @@ define([
|
|||||||
toolbar.remove();
|
toolbar.remove();
|
||||||
setAutosaveHiddenState(false);
|
setAutosaveHiddenState(false);
|
||||||
});
|
});
|
||||||
|
socket.onEvent = function(){
|
||||||
|
onEvent();
|
||||||
|
};
|
||||||
return socket;
|
return socket;
|
||||||
};
|
};
|
||||||
|
|
||||||
var cmEditor = function (cmWindow, websocketUrl, userName, messages, channel, demoMode, language, cryptkey) {
|
var cmEditor = function (cmWindow, websocketUrl, userName, messages, channel, cryptkey) {
|
||||||
var cmTextarea = $(cmWindow.document.getElementById('editor1'));
|
var cmTextarea = $(cmWindow.document.getElementById('editor1'));
|
||||||
|
|
||||||
if (!cmTextarea.length) {
|
if (!cmTextarea.length) {
|
||||||
warn("WARNING: Could not find textarea to bind to");
|
warn("WARNING: Could not find textarea to bind to");
|
||||||
return;
|
return;
|
||||||
@ -845,8 +845,6 @@ define([
|
|||||||
userName,
|
userName,
|
||||||
channel,
|
channel,
|
||||||
messages,
|
messages,
|
||||||
demoMode,
|
|
||||||
language,
|
|
||||||
cryptkey);
|
cryptkey);
|
||||||
return {
|
return {
|
||||||
onEvent: function() {
|
onEvent: function() {
|
||||||
@ -863,11 +861,7 @@ define([
|
|||||||
if (!websocketUrl) {
|
if (!websocketUrl) {
|
||||||
throw new Error("No WebSocket URL, please ensure Realtime Backend is installed.");
|
throw new Error("No WebSocket URL, please ensure Realtime Backend is installed.");
|
||||||
}
|
}
|
||||||
var demoMode = false;
|
var cme = cmEditor(window, websocketUrl, userName, Messages, channel, cryptkey);
|
||||||
var language = "en";
|
|
||||||
var messages = [];
|
|
||||||
// Do not forget to remove demoMode and language variables, also check for messages
|
|
||||||
var cme = cmEditor(window, websocketUrl, userName, messages, channel, demoMode, language, cryptkey);
|
|
||||||
return {
|
return {
|
||||||
onEvent: function () {
|
onEvent: function () {
|
||||||
cme.onEvent();
|
cme.onEvent();
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user