Implement full CryptDrive export
This commit is contained in:
@@ -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());
|
||||
};
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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');
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -274,5 +274,6 @@ define({
|
||||
|
||||
// Ability to get a pad's content from its hash
|
||||
'Q_CRYPTGET': true,
|
||||
'EV_CRYPTGET_DISCONNECT': true,
|
||||
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user