Implement full CryptDrive export

This commit is contained in:
yflory
2018-10-18 18:50:38 +02:00
parent 92ce311694
commit 3e9e92dcac
18 changed files with 449 additions and 142 deletions

View File

@@ -12,11 +12,18 @@ define([
S.cb(err, doc);
S.done = true;
var disconnect = Util.find(S, ['network', 'disconnect']);
if (typeof(disconnect) === 'function') { disconnect(); }
var abort = Util.find(S, ['realtime', 'realtime', 'abort']);
if (!S.hasNetwork) {
var disconnect = Util.find(S, ['network', 'disconnect']);
if (typeof(disconnect) === 'function') { disconnect(); }
}
if (S.leave) {
try {
S.leave();
} catch (e) { console.log(e); }
}
var abort = Util.find(S, ['session', 'realtime', 'abort']);
if (typeof(abort) === 'function') {
S.realtime.realtime.sync();
S.session.realtime.sync();
abort();
}
};
@@ -51,11 +58,12 @@ define([
opt = opt || {};
var config = makeConfig(hash, opt.password);
var Session = { cb: cb, };
var Session = { cb: cb, hasNetwork: Boolean(opt.network) };
config.onReady = function (info) {
var rt = Session.session = info.realtime;
Session.network = info.network;
Session.leave = info.leave;
finish(Session, void 0, rt.getUserDoc());
};

View File

@@ -59,6 +59,19 @@ define([
cb();
};
common.makeNetwork = function (cb) {
require([
'/bower_components/netflux-websocket/netflux-client.js',
'/common/outer/network-config.js'
], function (Netflux, NetConfig) {
var wsUrl = NetConfig.getWebsocketURL();
Netflux.connect(wsUrl).then(function (network) {
cb(null, network);
}, function (err) {
cb(err);
});
});
};
// RESTRICTED
// Settings only

View File

@@ -38,6 +38,12 @@ define([
return cursor;
};
module.getContentExtension = function (mode) {
return (Modes.extensionOf(mode) || '.txt').slice(1);
};
module.fileExporter = function (content) {
return new Blob([ content ], { type: 'text/plain;charset=utf-8' });
};
module.setValueAndCursor = function (editor, oldDoc, remoteDoc) {
var scroll = editor.getScrollInfo();
//get old cursor here
@@ -271,10 +277,10 @@ define([
};
exp.getContentExtension = function () {
return (Modes.extensionOf(exp.highlightMode) || '.txt').slice(1);
return module.getContentExtension(exp.highlightMode);
};
exp.fileExporter = function () {
return new Blob([ editor.getValue() ], { type: 'text/plain;charset=utf-8' });
return module.fileExporter(editor.getValue());
};
exp.fileImporter = function (content, file) {
var $toolbarContainer = $('#cme_toolbox');

View File

@@ -21,7 +21,9 @@ define([
var FilePicker;
var Messaging;
var Notifier;
var Utils = {};
var Utils = {
nThen: nThen
};
var AppConfig;
var Test;
var password;
@@ -744,13 +746,46 @@ define([
Cryptpad.removeLoginBlock(data, cb);
});
var cgNetwork;
var whenCGReady = function (cb) {
if (cgNetwork && cgNetwork !== true) { console.log(cgNetwork); return void cb(); }
setTimeout(function () {
whenCGReady(cb);
}, 500);
};
var i = 0;
sframeChan.on('Q_CRYPTGET', function (data, cb) {
Cryptget.get(data.hash, function (err, val) {
cb({
error: err,
data: val
var todo = function () {
data.opts.network = cgNetwork;
Cryptget.get(data.hash, function (err, val) {
cb({
error: err,
data: val
});
}, data.opts);
};
//return void todo();
if (i > 30) {
i = 0;
cgNetwork = undefined;
}
i++
if (!cgNetwork) {
cgNetwork = true;
return void Cryptpad.makeNetwork(function (err, nw) {
console.log(nw);
cgNetwork = nw;
todo();
});
}, data.opts);
} else if (cgNetwork === true) {
return void whenCGReady(todo);
}
todo();
});
sframeChan.on('EV_CRYPTGET_DISCONNECT', function () {
if (!cgNetwork) { return; }
cgNetwork.disconnect();
cgNetwork = undefined;
});
if (cfg.addRpc) {

View File

@@ -274,5 +274,6 @@ define({
// Ability to get a pad's content from its hash
'Q_CRYPTGET': true,
'EV_CRYPTGET_DISCONNECT': true,
});