Use async store
This commit is contained in:
parent
0840570fbf
commit
b3688db202
@ -1,15 +1,12 @@
|
||||
define([
|
||||
'jquery',
|
||||
'/bower_components/chainpad-crypto/crypto.js',
|
||||
'/common/curve.js',
|
||||
'/common/common-hash.js',
|
||||
'/common/common-util.js',
|
||||
'/common/common-constants.js',
|
||||
'/customize/messages.js',
|
||||
|
||||
'/bower_components/marked/marked.min.js',
|
||||
'/common/common-realtime.js',
|
||||
], function ($, Crypto, Curve, Hash, Util, Constants, Messages, Marked, Realtime) {
|
||||
], function (Crypto, Hash, Util, Constants, Messages, Realtime) {
|
||||
var Msg = {
|
||||
inputs: [],
|
||||
};
|
||||
@ -51,9 +48,8 @@ define([
|
||||
});
|
||||
};
|
||||
|
||||
Msg.getFriendChannelsList = function (common) {
|
||||
Msg.getFriendChannelsList = function (proxy) {
|
||||
var list = [];
|
||||
var proxy = common.getProxy();
|
||||
eachFriend(proxy.friends, function (friend) {
|
||||
list.push(friend.channel);
|
||||
});
|
||||
@ -61,7 +57,7 @@ define([
|
||||
};
|
||||
|
||||
// TODO make this internal to the messenger
|
||||
var channels = Msg.channels = window.channels = {};
|
||||
var channels = Msg.channels = {};
|
||||
|
||||
Msg.getLatestMessages = function () {
|
||||
Object.keys(channels).forEach(function (id) {
|
||||
@ -74,8 +70,8 @@ define([
|
||||
|
||||
// Invitation
|
||||
// FIXME there are too many functions with this name
|
||||
var addToFriendList = Msg.addToFriendList = function (common, data, cb) {
|
||||
var proxy = common.getProxy();
|
||||
var addToFriendList = Msg.addToFriendList = function (cfg, data, cb) {
|
||||
var proxy = cfg.proxy;
|
||||
var friends = getFriendList(proxy);
|
||||
var pubKey = data.curvePublic; // todo validata data
|
||||
|
||||
@ -83,19 +79,19 @@ define([
|
||||
|
||||
friends[pubKey] = data;
|
||||
|
||||
Realtime.whenRealtimeSyncs(common.getRealtime(), function () {
|
||||
Realtime.whenRealtimeSyncs(cfg.realtime, function () {
|
||||
cb();
|
||||
common.pinPads([data.channel], function (e) {
|
||||
if (e) { console.error(e); }
|
||||
cfg.pinPads([data.channel], function (res) {
|
||||
if (res.error) { console.error(res.error); }
|
||||
});
|
||||
});
|
||||
common.changeDisplayName(proxy[Constants.displayNameKey]);
|
||||
cfg.updateMetadata();
|
||||
};
|
||||
|
||||
/* Used to accept friend requests within apps other than /contacts/ */
|
||||
Msg.addDirectMessageHandler = function (common) {
|
||||
var network = common.getNetwork();
|
||||
var proxy = common.getProxy();
|
||||
Msg.addDirectMessageHandler = function (cfg) {
|
||||
var network = cfg.network;
|
||||
var proxy = cfg.proxy;
|
||||
if (!network) { return void console.error('Network not ready'); }
|
||||
network.on('message', function (message, sender) {
|
||||
var msg;
|
||||
@ -138,8 +134,7 @@ define([
|
||||
var confirmMsg = Messages._getKey('contacts_request', [
|
||||
Util.fixHTML(msgData.displayName)
|
||||
]);
|
||||
common.onFriendRequest(confirmMsg, todo);
|
||||
//UI.confirm(confirmMsg, todo, null, true);
|
||||
cfg.friendRequest(confirmMsg, todo);
|
||||
return;
|
||||
}
|
||||
if (msg[0] === "FRIEND_REQ_OK") {
|
||||
@ -147,14 +142,14 @@ define([
|
||||
if (idx !== -1) { pendingRequests.splice(idx, 1); }
|
||||
|
||||
// FIXME clarify this function's name
|
||||
addToFriendList(common, msgData, function (err) {
|
||||
addToFriendList(cfg, msgData, function (err) {
|
||||
if (err) {
|
||||
return void common.onFriendComplete({
|
||||
return void cfg.friendComplete({
|
||||
logText: Messages.contacts_addError,
|
||||
netfluxId: sender
|
||||
});
|
||||
}
|
||||
common.onFriendComplete({
|
||||
cfg.friendComplete({
|
||||
logText: Messages.contacts_added,
|
||||
netfluxId: sender
|
||||
});
|
||||
@ -167,24 +162,24 @@ define([
|
||||
if (msg[0] === "FRIEND_REQ_NOK") {
|
||||
var i = pendingRequests.indexOf(sender);
|
||||
if (i !== -1) { pendingRequests.splice(i, 1); }
|
||||
common.onFriendComplete({
|
||||
cfg.friendComplete({
|
||||
logText: Messages.contacts_rejected,
|
||||
netfluxId: sender
|
||||
});
|
||||
common.changeDisplayName(proxy[Constants.displayNameKey]);
|
||||
cfg.updateMetadata();
|
||||
return;
|
||||
}
|
||||
if (msg[0] === "FRIEND_REQ_ACK") {
|
||||
var data = pending[sender];
|
||||
if (!data) { return; }
|
||||
addToFriendList(common, data, function (err) {
|
||||
addToFriendList(cfg, data, function (err) {
|
||||
if (err) {
|
||||
return void common.onFriendComplete({
|
||||
return void cfg.friendComplete({
|
||||
logText: Messages.contacts_addError,
|
||||
netfluxId: sender
|
||||
});
|
||||
}
|
||||
common.onFriendComplete({
|
||||
cfg.friendComplete({
|
||||
logText: Messages.contacts_added,
|
||||
netfluxId: sender
|
||||
});
|
||||
@ -198,17 +193,14 @@ define([
|
||||
});
|
||||
};
|
||||
|
||||
Msg.getPending = function () {
|
||||
return pendingRequests;
|
||||
};
|
||||
|
||||
Msg.inviteFromUserlist = function (common, netfluxId) {
|
||||
var network = common.getNetwork();
|
||||
var parsed = Hash.parsePadUrl(window.location.href);
|
||||
Msg.inviteFromUserlist = function (cfg, data, cb) {
|
||||
var network = cfg.network;
|
||||
var netfluxId = data.netfluxId;
|
||||
var parsed = Hash.parsePadUrl(data.href);
|
||||
if (!parsed.hashData) { return; }
|
||||
// Message
|
||||
var chan = parsed.hashData.channel;
|
||||
var myData = createData(common.getProxy());
|
||||
var myData = createData(cfg.proxy);
|
||||
var msg = ["FRIEND_REQ", chan, myData];
|
||||
// Encryption
|
||||
var keyStr = parsed.hashData.key;
|
||||
@ -218,12 +210,10 @@ define([
|
||||
// Send encrypted message
|
||||
if (pendingRequests.indexOf(netfluxId) === -1) {
|
||||
pendingRequests.push(netfluxId);
|
||||
var proxy = common.getProxy();
|
||||
// this redraws the userlist after a change has occurred
|
||||
// TODO rename this function to reflect its purpose
|
||||
common.changeDisplayName(proxy[Constants.displayNameKey]);
|
||||
cfg.updateMetadata(); // redraws the userlist in pad
|
||||
}
|
||||
network.sendto(netfluxId, msgStr);
|
||||
cb();
|
||||
};
|
||||
|
||||
return Msg;
|
||||
|
||||
@ -1,18 +1,6 @@
|
||||
define([
|
||||
//'/customize/application_config.js',
|
||||
//'/customize/messages.js',
|
||||
//'/common/common-interface.js',
|
||||
], function (/*AppConfig, Messages, UI*/) {
|
||||
define([], function () {
|
||||
var common = {};
|
||||
|
||||
//common.infiniteSpinnerDetected = false;
|
||||
//var BAD_STATE_TIMEOUT = typeof(AppConfig.badStateTimeout) === 'number'?
|
||||
// AppConfig.badStateTimeout: 30000;
|
||||
|
||||
//var connected = false;
|
||||
//var intr;
|
||||
//var infiniteSpinnerHandlers = [];
|
||||
|
||||
/*
|
||||
TODO make this not blow up when disconnected or lagging...
|
||||
*/
|
||||
@ -20,7 +8,7 @@ define([
|
||||
if (typeof(realtime.getAuthDoc) !== 'function') {
|
||||
return void console.error('improper use of this function');
|
||||
}
|
||||
self.setTimeout(function () {
|
||||
setTimeout(function () {
|
||||
if (realtime.getAuthDoc() === realtime.getUserDoc()) {
|
||||
return void cb();
|
||||
} else {
|
||||
@ -29,38 +17,5 @@ define([
|
||||
}, 0);
|
||||
};
|
||||
|
||||
/*
|
||||
common.beginDetectingInfiniteSpinner = function (realtime) {
|
||||
if (intr) { return; }
|
||||
intr = window.setInterval(function () {
|
||||
var l;
|
||||
try {
|
||||
l = realtime.getLag();
|
||||
} catch (e) {
|
||||
throw new Error("ChainPad.getLag() does not exist, please `bower update`");
|
||||
}
|
||||
if (l.lag < BAD_STATE_TIMEOUT || !connected) { return; }
|
||||
realtime.abort();
|
||||
// don't launch more than one popup
|
||||
if (common.infiniteSpinnerDetected) { return; }
|
||||
infiniteSpinnerHandlers.forEach(function (ish) { ish(); });
|
||||
|
||||
// inform the user their session is in a bad state
|
||||
UI.confirm(Messages.realtime_unrecoverableError, function (yes) {
|
||||
if (!yes) { return; }
|
||||
window.parent.location.reload();
|
||||
});
|
||||
common.infiniteSpinnerDetected = true;
|
||||
}, 2000);
|
||||
};
|
||||
*/
|
||||
|
||||
//common.onInfiniteSpinner = function (f) { infiniteSpinnerHandlers.push(f); };
|
||||
|
||||
/*common.setConnectionState = function (bool) {
|
||||
if (typeof(bool) !== 'boolean') { return; }
|
||||
connected = bool;
|
||||
};*/
|
||||
|
||||
return common;
|
||||
});
|
||||
|
||||
@ -73,12 +73,12 @@ define([
|
||||
|
||||
realtime.contentUpdate(doc);
|
||||
|
||||
var to = self.setTimeout(function () {
|
||||
var to = setTimeout(function () {
|
||||
cb(new Error("Timeout"));
|
||||
}, 5000);
|
||||
|
||||
Realtime.whenRealtimeSyncs(realtime, function () {
|
||||
self.clearTimeout(to);
|
||||
clearTimeout(to);
|
||||
realtime.abort();
|
||||
finish(Session, void 0);
|
||||
});
|
||||
|
||||
@ -2,7 +2,6 @@ define([
|
||||
'jquery',
|
||||
'/api/config',
|
||||
'/customize/messages.js',
|
||||
'/common/fsStore.js',
|
||||
'/common/common-util.js',
|
||||
'/common/common-hash.js',
|
||||
'/common/common-messaging.js',
|
||||
@ -16,7 +15,7 @@ define([
|
||||
'/common/pinpad.js',
|
||||
'/customize/application_config.js',
|
||||
'/bower_components/nthen/index.js',
|
||||
], function ($, Config, Messages, Store, Util, Hash,
|
||||
], function ($, Config, Messages, Util, Hash,
|
||||
Messaging, Realtime, Language, Constants, Feedback, LocalStore, AStore,
|
||||
Pinpad, AppConfig, Nthen) {
|
||||
|
||||
@ -49,24 +48,6 @@ define([
|
||||
|
||||
var PINNING_ENABLED = AppConfig.enablePinning;
|
||||
|
||||
var store;
|
||||
var rpc;
|
||||
var anon_rpc;
|
||||
|
||||
var getProxy = common.getProxy = function () {
|
||||
if (store && store.getProxy()) {
|
||||
return store.getProxy().proxy;
|
||||
}
|
||||
};
|
||||
var getNetwork = common.getNetwork = function () {
|
||||
if (store) {
|
||||
if (store.getProxy() && store.getProxy().info) {
|
||||
return store.getProxy().info.network;
|
||||
}
|
||||
}
|
||||
return;
|
||||
};
|
||||
|
||||
// RESTRICTED
|
||||
// Settings only
|
||||
common.getUserObject = function (cb) {
|
||||
@ -116,7 +97,27 @@ define([
|
||||
value: profile
|
||||
}, function () {});
|
||||
};
|
||||
|
||||
common.setAvatar = function (data, cb) {
|
||||
var postData = {
|
||||
key: ['profile', 'avatar']
|
||||
};
|
||||
// If we don't have "data", it means we want to remove the avatar and we should not have a
|
||||
// "postData.value", even set to undefined (JSON.stringify transforms undefined to null)
|
||||
if (data) { postData.value = data; }
|
||||
postMessage("SET", postData, cb);
|
||||
};
|
||||
// Todo
|
||||
common.getTodoHash = function (cb) {
|
||||
postMessage("GET", ['todo'], function (obj) {
|
||||
cb(obj);
|
||||
});
|
||||
};
|
||||
common.setTodoHash = function (hash) {
|
||||
postMessage("SET", {
|
||||
key: ['todo'],
|
||||
value: hash
|
||||
}, function () {});
|
||||
};
|
||||
|
||||
|
||||
// REFACTOR pull language directly?
|
||||
@ -127,7 +128,6 @@ define([
|
||||
Language.setLanguage(l, null, cb);
|
||||
};
|
||||
|
||||
// REAFCTOR store.getProfile should be store.get(['profile'])
|
||||
common.getMetadata = function (cb) {
|
||||
postMessage("GET_METADATA", null, function (obj) {
|
||||
if (obj.error) { return void cb(obj.error); }
|
||||
@ -135,37 +135,6 @@ define([
|
||||
});
|
||||
};
|
||||
|
||||
var getRealtime = common.getRealtime = function () {
|
||||
if (store && store.getProxy() && store.getProxy().info) {
|
||||
return store.getProxy().info.realtime;
|
||||
}
|
||||
return;
|
||||
};
|
||||
|
||||
// TODO not needed with async store
|
||||
common.hasSigningKeys = function (proxy) {
|
||||
return typeof(proxy) === 'object' &&
|
||||
typeof(proxy.edPrivate) === 'string' &&
|
||||
typeof(proxy.edPublic) === 'string';
|
||||
};
|
||||
|
||||
// TODO not needed with async store
|
||||
common.hasCurveKeys = function (proxy) {
|
||||
return typeof(proxy) === 'object' &&
|
||||
typeof(proxy.curvePrivate) === 'string' &&
|
||||
typeof(proxy.curvePublic) === 'string';
|
||||
};
|
||||
|
||||
var makePad = common.makePad = function (href, title) {
|
||||
var now = +new Date();
|
||||
return {
|
||||
href: href,
|
||||
atime: now,
|
||||
ctime: now,
|
||||
title: title || Hash.getDefaultName(Hash.parsePadUrl(href)),
|
||||
};
|
||||
};
|
||||
|
||||
common.setDisplayName = function (value, cb) {
|
||||
postMessage("SET_DISPLAY_NAME", value, cb);
|
||||
};
|
||||
@ -214,7 +183,7 @@ define([
|
||||
// Tags
|
||||
common.resetTags = function (href, tags, cb) {
|
||||
// set pad attribute
|
||||
cb = cb || $.noop;
|
||||
cb = cb || function () {};
|
||||
if (!Array.isArray(tags)) { return void cb('INVALID_TAGS'); }
|
||||
common.setPadAttribute('tags', tags.slice(), cb, href);
|
||||
};
|
||||
@ -350,29 +319,15 @@ define([
|
||||
});
|
||||
};
|
||||
|
||||
common.arePinsSynced = function (cb) {
|
||||
postMessage("ARE_PINS_SYNCED", null, function (obj) {
|
||||
if (obj.error) { return void cb(obj.error); }
|
||||
cb();
|
||||
});
|
||||
};
|
||||
|
||||
common.resetPins = function (cb) {
|
||||
postMessage("RESET_PINS", null, function (obj) {
|
||||
if (obj.error) { return void cb(obj.error); }
|
||||
cb();
|
||||
});
|
||||
};
|
||||
|
||||
common.pinPads = function (pads, cb) {
|
||||
postMessage("PIN_PADS", {pads: pads}, function (obj) {
|
||||
postMessage("PIN_PADS", pads, function (obj) {
|
||||
if (obj.error) { return void cb(obj.error); }
|
||||
cb();
|
||||
});
|
||||
};
|
||||
|
||||
common.unpinPads = function (pads, cb) {
|
||||
postMessage("UNPIN_PADS", {pads: pads}, function (obj) {
|
||||
postMessage("UNPIN_PADS", pads, function (obj) {
|
||||
if (obj.error) { return void cb(obj.error); }
|
||||
cb();
|
||||
});
|
||||
@ -392,14 +347,14 @@ define([
|
||||
msg: msg,
|
||||
data: data
|
||||
}, function (obj) {
|
||||
if (obj.error) { return void cb(obj.error); }
|
||||
cb();
|
||||
if (obj && obj.error) { return void cb(obj.error); }
|
||||
cb(null, obj);
|
||||
});
|
||||
};
|
||||
|
||||
common.getFileSize = function (href, cb) {
|
||||
postMessage("GET_FILE_SIZE", {href: href}, function (obj) {
|
||||
if (obj.error) { return void cb(obj.error); }
|
||||
if (obj && obj.error) { return void cb(obj.error); }
|
||||
cb(undefined, obj.size);
|
||||
});
|
||||
};
|
||||
@ -473,17 +428,29 @@ define([
|
||||
});
|
||||
};
|
||||
|
||||
// Messaging
|
||||
common.inviteFromUserlist = function (netfluxId, cb) {
|
||||
postMessage("INVITE_FROM_USERLIST", {
|
||||
netfluxId: netfluxId,
|
||||
href: window.location.href
|
||||
}, function (obj) {
|
||||
if (obj.error) { return void cb(obj.error); }
|
||||
cb();
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
// HERE
|
||||
common.getShareHashes = function (secret, cb) {
|
||||
var hashes;
|
||||
if (!window.location.hash) {
|
||||
var hashes = Hash.getHashes(secret.channel, secret);
|
||||
hashes = Hash.getHashes(secret.channel, secret);
|
||||
return void cb(null, hashes);
|
||||
}
|
||||
var parsed = Hash.parsePadUrl(window.location.href);
|
||||
if (!parsed.type || !parsed.hashData) { return void cb('E_INVALID_HREF'); }
|
||||
if (parsed.type === 'file') { secret.channel = Util.base64ToHex(secret.channel); }
|
||||
var hashes = Hash.getHashes(secret.channel, secret);
|
||||
hashes = Hash.getHashes(secret.channel, secret);
|
||||
|
||||
if (!hashes.editHash && !hashes.viewHash && parsed.hashData && !parsed.hashData.mode) {
|
||||
// It means we're using an old hash
|
||||
@ -492,7 +459,7 @@ define([
|
||||
}
|
||||
|
||||
postMessage("GET_STRONGER_HASH", {
|
||||
href: href
|
||||
href: window.location.href
|
||||
}, function (hash) {
|
||||
if (hash) { hashes.editHash = hash; }
|
||||
cb(null, hashes);
|
||||
@ -555,6 +522,16 @@ define([
|
||||
if (localToken !== data.token) { requestLogin(); }
|
||||
break;
|
||||
}
|
||||
case 'Q_FRIEND_REQUEST': {
|
||||
if (!common.onFriendRequest) { break; }
|
||||
common.onFriendRequest(data, cb);
|
||||
break;
|
||||
}
|
||||
case 'EV_FRIEND_COMPLETE': {
|
||||
if (!common.onFriendComplete) { break; }
|
||||
common.onFriendComplete(data);
|
||||
break;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@ -664,8 +641,10 @@ define([
|
||||
|
||||
if (PINNING_ENABLED && LocalStore.isLoggedIn()) {
|
||||
console.log("logged in. pads will be pinned");
|
||||
postMessage("INIT_RPC", null, waitFor(function () {
|
||||
postMessage("INIT_RPC", null, waitFor(function (obj) {
|
||||
console.log('RPC handshake complete');
|
||||
if (obj.error) { return; }
|
||||
localStorage.plan = obj.plan;
|
||||
}));
|
||||
} else if (PINNING_ENABLED) {
|
||||
console.log('not logged in. pads will not be pinned');
|
||||
@ -703,9 +682,9 @@ define([
|
||||
}());
|
||||
|
||||
// MAGIC that happens implicitly
|
||||
$(function () {
|
||||
/*$(function () {
|
||||
Language.applyTranslation();
|
||||
});
|
||||
});*/
|
||||
|
||||
return common;
|
||||
});
|
||||
|
||||
@ -315,7 +315,7 @@ define([
|
||||
|
||||
exp.realtime = rt.realtime;
|
||||
exp.proxy = rt.proxy;
|
||||
exp.loggedIn = Cryptpad.isLoggedIn()
|
||||
exp.loggedIn = Cryptpad.isLoggedIn();
|
||||
rt.proxy.on('create', function (info) {
|
||||
exp.info = info;
|
||||
if (!LocalStore.getUserHash()) {
|
||||
|
||||
@ -6,24 +6,17 @@ define([
|
||||
'/common/common-constants.js',
|
||||
'/common/common-feedback.js',
|
||||
'/common/common-realtime.js',
|
||||
'/common/common-messaging.js',
|
||||
'/common/outer/network-config.js',
|
||||
|
||||
'/bower_components/chainpad-crypto/crypto.js?v=0.1.5',
|
||||
'/bower_components/chainpad/chainpad.dist.js',
|
||||
'/bower_components/chainpad-listmap/chainpad-listmap.js',
|
||||
], function (UserObject, Migrate, Hash, Util, Constants, Feedback, Realtime, NetConfig,
|
||||
], function (UserObject, Migrate, Hash, Util, Constants, Feedback, Realtime, Messaging, NetConfig,
|
||||
Crypto, ChainPad, Listmap) {
|
||||
var Store = {};
|
||||
|
||||
var postMessage = function (cmd, data, cb) {};
|
||||
var tryParsing = function (x) {
|
||||
try { return JSON.parse(x); }
|
||||
catch (e) {
|
||||
console.error(e);
|
||||
return null;
|
||||
}
|
||||
};
|
||||
|
||||
var postMessage = function () {};
|
||||
|
||||
var storeHash;
|
||||
|
||||
@ -43,7 +36,11 @@ define([
|
||||
var key = path.pop();
|
||||
var obj = Util.find(store.proxy, path);
|
||||
if (!obj || typeof(obj) !== "object") { return void cb({error: 'INVALID_PATH'}); }
|
||||
obj[key] = data.value;
|
||||
if (typeof data.value === "undefined") {
|
||||
delete obj[key];
|
||||
} else {
|
||||
obj[key] = data.value;
|
||||
}
|
||||
onSync(cb);
|
||||
};
|
||||
|
||||
@ -82,11 +79,10 @@ define([
|
||||
if (avatarChan) { list.push(avatarChan); }
|
||||
}
|
||||
|
||||
// TODO
|
||||
/*if (store.proxy.friends) {
|
||||
var fList = Messaging.getFriendChannelsList(common);
|
||||
if (store.proxy.friends) {
|
||||
var fList = Messaging.getFriendChannelsList(store.proxy);
|
||||
list = list.concat(fList);
|
||||
}*/
|
||||
}
|
||||
|
||||
list.push(Util.base64ToHex(userChannel));
|
||||
list.sort();
|
||||
@ -102,34 +98,13 @@ define([
|
||||
/////////////////////// RPC //////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////
|
||||
|
||||
Store.arePinsSynced = function (cb) {
|
||||
if (!store.rpc) { return void cb({error: 'RPC_NOT_READY'}); }
|
||||
|
||||
var list = getCanonicalChannelList();
|
||||
var local = Hash.hashChannelList(list);
|
||||
store.rpc.getServerHash(function (e, hash) {
|
||||
if (e) { return void cb({error: e}); }
|
||||
cb({synced: hash === local});
|
||||
});
|
||||
};
|
||||
|
||||
Store.resetPins = function (data, cb) {
|
||||
if (!store.rpc) { return void cb({error: 'RPC_NOT_READY'}); }
|
||||
|
||||
var list = getCanonicalChannelList();
|
||||
store.rpc.reset(list, function (e, hash) {
|
||||
if (e) { return void cb({error: e}); }
|
||||
cb({hash: hash});
|
||||
});
|
||||
};
|
||||
|
||||
Store.pinPads = function (data, cb) {
|
||||
if (!store.rpc) { return void cb({error: 'RPC_NOT_READY'}); }
|
||||
if (typeof(cb) !== 'function') {
|
||||
console.error('expected a callback');
|
||||
}
|
||||
|
||||
store.rpc.pin(data.pads, function (e, hash) {
|
||||
store.rpc.pin(data, function (e, hash) {
|
||||
if (e) { return void cb({error: e}); }
|
||||
cb({hash: hash});
|
||||
});
|
||||
@ -138,7 +113,7 @@ define([
|
||||
Store.unpinPads = function (data, cb) {
|
||||
if (!store.rpc) { return void cb({error: 'RPC_NOT_READY'}); }
|
||||
|
||||
store.rpc.unpin(data.pads, function (e, hash) {
|
||||
store.rpc.unpin(data, function (e, hash) {
|
||||
if (e) { return void cb({error: e}); }
|
||||
cb({hash: hash});
|
||||
});
|
||||
@ -158,7 +133,7 @@ define([
|
||||
};
|
||||
|
||||
// Update for all users from accounts and return current user limits
|
||||
Store.updatePinLimit = function (cb) {
|
||||
Store.updatePinLimit = function (data, cb) {
|
||||
if (!store.rpc) { return void cb({error: 'RPC_NOT_READY'}); }
|
||||
store.rpc.updatePinLimits(function (e, limit, plan, note) {
|
||||
if (e) { return void cb({error: e}); }
|
||||
@ -169,7 +144,7 @@ define([
|
||||
});
|
||||
};
|
||||
// Get current user limits
|
||||
Store.getPinLimit = function (cb) {
|
||||
Store.getPinLimit = function (data, cb) {
|
||||
if (!store.rpc) { return void cb({error: 'RPC_NOT_READY'}); }
|
||||
|
||||
var ALWAYS_REVALIDATE = true;
|
||||
@ -189,42 +164,63 @@ define([
|
||||
|
||||
Store.clearOwnedChannel = function (data, cb) {
|
||||
if (!store.rpc) { return void cb({error: 'RPC_NOT_READY'}); }
|
||||
rpc.clearOwnedChannel(data.channel, cb);
|
||||
store.rpc.clearOwnedChannel(data.channel, cb);
|
||||
};
|
||||
|
||||
Store.uploadComplete = function (data, cb) {
|
||||
if (!store.rpc) { return void cb({error: 'RPC_NOT_READY'}); }
|
||||
rpc.uploadComplete(cb);
|
||||
store.rpc.uploadComplete(cb);
|
||||
};
|
||||
|
||||
Store.uploadStatus = function (data, cb) {
|
||||
if (!store.rpc) { return void cb({error: 'RPC_NOT_READY'}); }
|
||||
rpc.uploadStatus(data.size, cb);
|
||||
store.rpc.uploadStatus(data.size, cb);
|
||||
};
|
||||
|
||||
Store.uploadCancel = function (data, cb) {
|
||||
if (!store.rpc) { return void cb({error: 'RPC_NOT_READY'}); }
|
||||
rpc.uploadCancel(cb);
|
||||
store.rpc.uploadCancel(cb);
|
||||
};
|
||||
|
||||
var arePinsSynced = function (cb) {
|
||||
if (!store.rpc) { return void cb({error: 'RPC_NOT_READY'}); }
|
||||
|
||||
var list = getCanonicalChannelList();
|
||||
var local = Hash.hashChannelList(list);
|
||||
store.rpc.getServerHash(function (e, hash) {
|
||||
if (e) { return void cb(e); }
|
||||
cb(null, hash === local);
|
||||
});
|
||||
};
|
||||
|
||||
var resetPins = function (cb) {
|
||||
if (!store.rpc) { return void cb({error: 'RPC_NOT_READY'}); }
|
||||
|
||||
var list = getCanonicalChannelList();
|
||||
store.rpc.reset(list, function (e, hash) {
|
||||
if (e) { return void cb(e); }
|
||||
cb(null, hash);
|
||||
});
|
||||
};
|
||||
|
||||
Store.initRpc = function (data, cb) {
|
||||
require(['/common/pinpad.js', function (Pinpad) {
|
||||
require(['/common/pinpad.js'], function (Pinpad) {
|
||||
Pinpad.create(store.network, store.proxy, function (e, call) {
|
||||
if (e) { return void cb({error: e}); }
|
||||
|
||||
store.rpc = call;
|
||||
|
||||
common.getPinLimit(function (e, limit, plan, note) {
|
||||
if (e) { return void console.error(e); }
|
||||
common.account.limit = limit;
|
||||
localStorage.plan = common.account.plan = plan;
|
||||
common.account.note = note;
|
||||
cb();
|
||||
Store.getPinLimit(null, function (obj) {
|
||||
if (obj.error) { console.error(obj.error); }
|
||||
account.limit = obj.limit;
|
||||
account.plan = obj.plan;
|
||||
account.note = obj.note;
|
||||
cb(obj);
|
||||
});
|
||||
|
||||
common.arePinsSynced(function (err, yes) {
|
||||
arePinsSynced(function (err, yes) {
|
||||
if (!yes) {
|
||||
common.resetPins(function (err) {
|
||||
resetPins(function (err) {
|
||||
if (err) { return console.error(err); }
|
||||
console.log('RESET DONE');
|
||||
});
|
||||
@ -239,10 +235,14 @@ define([
|
||||
//////////////////////////////////////////////////////////////////
|
||||
Store.anonRpcMsg = function (data, cb) {
|
||||
if (!store.anon_rpc) { return void cb({error: 'ANON_RPC_NOT_READY'}); }
|
||||
store.anon_rpc.send(data.msg, data.data, cb);
|
||||
store.anon_rpc.send(data.msg, data.data, function (err, res) {
|
||||
if (err) { return void cb({error: err}); }
|
||||
cb(res);
|
||||
});
|
||||
};
|
||||
|
||||
Store.getFileSize = function (data, cb) {
|
||||
console.log(data, cb);
|
||||
if (!store.anon_rpc) { return void cb({error: 'ANON_RPC_NOT_READY'}); }
|
||||
|
||||
var channelId = Hash.hrefToHexChannelId(data.href);
|
||||
@ -367,19 +367,19 @@ define([
|
||||
if (typeof attr === "string") {
|
||||
console.error('DEPRECATED: use setAttribute with an array, not a string');
|
||||
return {
|
||||
obj: storeObj.settings,
|
||||
obj: store.proxy.settings,
|
||||
key: attr
|
||||
};
|
||||
}
|
||||
if (!Array.isArray(attr)) { throw new Error("Attribute must be string or array"); }
|
||||
if (attr.length === 0) { throw new Error("Attribute can't be empty"); }
|
||||
var obj = storeObj.settings;
|
||||
if (!Array.isArray(attr)) { return void console.error("Attribute must be string or array"); }
|
||||
if (attr.length === 0) { return void console.error("Attribute can't be empty"); }
|
||||
var obj = store.proxy.settings;
|
||||
attr.forEach(function (el, i) {
|
||||
if (i === attr.length-1) { return; }
|
||||
if (!obj[el]) {
|
||||
obj[el] = {};
|
||||
}
|
||||
else if (typeof obj[el] !== "object") { throw new Error("Wrong attribute"); }
|
||||
else if (typeof obj[el] !== "object") { return void console.error("Wrong attribute"); }
|
||||
obj = obj[el];
|
||||
});
|
||||
return {
|
||||
@ -402,12 +402,12 @@ define([
|
||||
* - value (String)
|
||||
*/
|
||||
Store.setPadAttribute = function (data, cb) {
|
||||
store.userObject.setPadAttribute(data.href, date.attr, data.value, function () {
|
||||
store.userObject.setPadAttribute(data.href, data.attr, data.value, function () {
|
||||
onSync(cb);
|
||||
});
|
||||
};
|
||||
Store.getPadAttribute = function (data, cb) {
|
||||
filesOp.getPadAttribute(data.href, data.attr, function (err, val) {
|
||||
store.userObject.getPadAttribute(data.href, data.attr, function (err, val) {
|
||||
if (err) { return void cb({error: err}); }
|
||||
cb(val);
|
||||
});
|
||||
@ -443,7 +443,7 @@ define([
|
||||
cb(all);
|
||||
};
|
||||
|
||||
var makePad = common.makePad = function (href, title) {
|
||||
var makePad = function (href, title) {
|
||||
var now = +new Date();
|
||||
return {
|
||||
href: href,
|
||||
@ -465,13 +465,13 @@ define([
|
||||
|
||||
// Templates
|
||||
Store.getTemplates = function (data, cb) {
|
||||
var templateFiles = filesOp.getFiles(['template']);
|
||||
var templateFiles = store.userObject.getFiles(['template']);
|
||||
var res = [];
|
||||
templateFiles.forEach(function (f) {
|
||||
var data = filesOp.getFileData(f);
|
||||
var data = store.userObject.getFileData(f);
|
||||
res.push(JSON.parse(JSON.stringify(data)));
|
||||
});
|
||||
return res;
|
||||
cb(res);
|
||||
};
|
||||
|
||||
// Pads
|
||||
@ -496,7 +496,7 @@ define([
|
||||
// Update all pads that use the same channel but with a weaker hash
|
||||
// Edit > Edit (present) > View > View (present)
|
||||
for (var id in allPads) {
|
||||
var pad = recent[id];
|
||||
var pad = allPads[id];
|
||||
if (!pad.href) { continue; }
|
||||
|
||||
var p2 = Hash.parsePadUrl(pad.href);
|
||||
@ -539,7 +539,7 @@ define([
|
||||
if (isStronger) {
|
||||
// If we have a stronger url, remove the possible weaker from the trash.
|
||||
// If all of the weaker ones were in the trash, add the stronger to ROOT
|
||||
store.userObject.restoreHref(obj.n);
|
||||
store.userObject.restoreHref(href);
|
||||
}
|
||||
|
||||
// Add the pad if it does not exist in our drive
|
||||
@ -585,7 +585,7 @@ define([
|
||||
};
|
||||
|
||||
// Get hashes for the share button
|
||||
common.getStrongerHash = function (data, cb) {
|
||||
Store.getStrongerHash = function (data, cb) {
|
||||
var allPads = Util.find(store.proxy, ['drive', 'filesData']) || {};
|
||||
|
||||
// If we have a stronger version in drive, add it and add a redirect button
|
||||
@ -597,6 +597,29 @@ define([
|
||||
cb();
|
||||
};
|
||||
|
||||
// Messaging
|
||||
var getMessagingCfg = function () {
|
||||
console.log(store, store.network);
|
||||
return {
|
||||
proxy: store.proxy,
|
||||
realtime: store.realtime,
|
||||
network: store.network,
|
||||
updateMetadata: function () {
|
||||
postMessage("UPDATE_METADATA");
|
||||
},
|
||||
pinPads: Store.pinPads,
|
||||
friendComplete: function (data, cb) {
|
||||
postMessage("Q_FRIEND_COMPLETE", data, cb);
|
||||
},
|
||||
friendRequest: function (data) {
|
||||
postMessage("EV_FRIEND_REQUEST", data);
|
||||
},
|
||||
};
|
||||
};
|
||||
Store.inviteFromUserlist = function (data, cb) {
|
||||
var messagingCfg = getMessagingCfg();
|
||||
Messaging.inviteFromUserlist(messagingCfg, data, cb);
|
||||
};
|
||||
|
||||
var onReady = function (returned, cb) {
|
||||
var proxy = store.proxy;
|
||||
@ -605,9 +628,9 @@ define([
|
||||
loggedIn: store.loggedIn
|
||||
});
|
||||
var todo = function () {
|
||||
fo.fixFiles();
|
||||
userObject.fixFiles();
|
||||
|
||||
Migrate(proxy, Cryptpad);
|
||||
Migrate(proxy);
|
||||
|
||||
var requestLogin = function () {
|
||||
postMessage("REQUEST_LOGIN");
|
||||
@ -624,7 +647,7 @@ define([
|
||||
}
|
||||
returned[Constants.tokenKey] = proxy[Constants.tokenKey];
|
||||
|
||||
if (store.data.localToken && store.data.localToken !== proxy[tokenKey]) {
|
||||
if (store.data.localToken && store.data.localToken !== proxy[Constants.tokenKey]) {
|
||||
// the local number doesn't match that in
|
||||
// the user object, request that they reauthenticate.
|
||||
return void requestLogin();
|
||||
@ -665,6 +688,9 @@ define([
|
||||
// Trigger userlist update when the friendlist has changed
|
||||
postMessage("UPDATE_METADATA");
|
||||
});
|
||||
proxy.on('change', ['settings'], function () {
|
||||
postMessage("UPDATE_METADATA");
|
||||
});
|
||||
proxy.on('change', [Constants.tokenKey], function () {
|
||||
postMessage("UPDATE_TOKEN", { data: proxy[Constants.tokenKey] });
|
||||
});
|
||||
@ -692,14 +718,13 @@ define([
|
||||
classic: true,
|
||||
};
|
||||
var rt = Listmap.create(listmapConfig);
|
||||
store.proxy = rt.proxy,
|
||||
store.realtime = rt.realtime;
|
||||
store.network = rt.network;
|
||||
store.proxy = rt.proxy;
|
||||
store.loggedIn = typeof(data.userHash) !== "undefined";
|
||||
|
||||
var returned = {};
|
||||
rt.proxy.on('create', function (info) {
|
||||
exp.info = info;
|
||||
store.realtime = info.realtime;
|
||||
store.network = info.network;
|
||||
if (!data.userHash) {
|
||||
returned.anonHash = Hash.getEditHashFromKeys(info.channel, secret.keys);
|
||||
}
|
||||
@ -743,18 +768,24 @@ define([
|
||||
});
|
||||
}
|
||||
initialized = true;
|
||||
postMessage = function (cmd, data, cb) {
|
||||
postMessage = function (cmd, d, cb) {
|
||||
setTimeout(function () {
|
||||
data.query(cmd, data, cb); // TODO temporary, will be rzplaced by webworker channel
|
||||
data.query(cmd, d, cb); // TODO temporary, will be rzplaced by webworker channel
|
||||
});
|
||||
};
|
||||
|
||||
store.data = data;
|
||||
connect(data, function (ret) {
|
||||
if (Object.keys(store.proxy).length === 1) {
|
||||
Feedback.send("FIRST_APP_USE", true);
|
||||
}
|
||||
|
||||
callback(ret);
|
||||
|
||||
var messagingCfg = getMessagingCfg();
|
||||
Messaging.addDirectMessageHandler(messagingCfg);
|
||||
|
||||
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@ -40,12 +40,6 @@ define([
|
||||
case 'UPLOAD_CANCEL': {
|
||||
Store.uploadCancel(data, cb); break;
|
||||
}
|
||||
case 'ARE_PINS_SYNCED': {
|
||||
Store.arePinsSynced(data, cb); break;
|
||||
}
|
||||
case 'RESET_PINS': {
|
||||
Store.resetPins(data, cb); break;
|
||||
}
|
||||
case 'PIN_PADS': {
|
||||
Store.pinPads(data, cb); break;
|
||||
}
|
||||
@ -117,6 +111,11 @@ define([
|
||||
case 'GET_STRONGER_HASH': {
|
||||
Store.getStrongerHash(data, cb); break;
|
||||
}
|
||||
// Messaging
|
||||
case 'INVITE_FROM_USERLIST': {
|
||||
Store.inviteFromUserlist(data, cb); break;
|
||||
}
|
||||
|
||||
default: {
|
||||
|
||||
break;
|
||||
|
||||
@ -3,13 +3,13 @@ define([
|
||||
], function (Rpc) {
|
||||
var create = function (network, proxy, cb) {
|
||||
if (!network) {
|
||||
self.setTimeout(function () {
|
||||
setTimeout(function () {
|
||||
cb('INVALID_NETWORK');
|
||||
});
|
||||
return;
|
||||
}
|
||||
if (!proxy) {
|
||||
self.setTimeout(function () {
|
||||
setTimeout(function () {
|
||||
cb('INVALID_PROXY');
|
||||
});
|
||||
return;
|
||||
@ -19,7 +19,7 @@ define([
|
||||
var edPublic = proxy.edPublic;
|
||||
|
||||
if (!(edPrivate && edPublic)) {
|
||||
self.setTimeout(function () {
|
||||
setTimeout(function () {
|
||||
cb('INVALID_KEYS');
|
||||
});
|
||||
return;
|
||||
@ -39,7 +39,7 @@ define([
|
||||
// you can ask the server to pin a particular channel for you
|
||||
exp.pin = function (channels, cb) {
|
||||
if (!Array.isArray(channels)) {
|
||||
self.setTimeout(function () {
|
||||
setTimeout(function () {
|
||||
cb('[TypeError] pin expects an array');
|
||||
});
|
||||
return;
|
||||
@ -50,7 +50,7 @@ define([
|
||||
// you can also ask to unpin a particular channel
|
||||
exp.unpin = function (channels, cb) {
|
||||
if (!Array.isArray(channels)) {
|
||||
self.setTimeout(function () {
|
||||
setTimeout(function () {
|
||||
cb('[TypeError] pin expects an array');
|
||||
});
|
||||
return;
|
||||
@ -71,7 +71,7 @@ define([
|
||||
// if local and remote hashes don't match, send a reset
|
||||
exp.reset = function (channels, cb) {
|
||||
if (!Array.isArray(channels)) {
|
||||
self.setTimeout(function () {
|
||||
setTimeout(function () {
|
||||
cb('[TypeError] pin expects an array');
|
||||
});
|
||||
return;
|
||||
@ -163,7 +163,7 @@ define([
|
||||
|
||||
exp.uploadStatus = function (size, cb) {
|
||||
if (typeof(size) !== 'number') {
|
||||
return void self.setTimeout(function () {
|
||||
return void setTimeout(function () {
|
||||
cb('INVALID_SIZE');
|
||||
});
|
||||
}
|
||||
|
||||
@ -2,7 +2,7 @@ define([
|
||||
'/common/common-util.js',
|
||||
'/bower_components/tweetnacl/nacl-fast.min.js',
|
||||
], function (Util) {
|
||||
var Nacl = self.nacl;
|
||||
var Nacl = window.nacl;
|
||||
|
||||
var uid = Util.uid;
|
||||
var signMsg = function (data, signKey) {
|
||||
@ -140,7 +140,7 @@ types of messages:
|
||||
|
||||
var send = ctx.send = function (type, msg, cb) {
|
||||
if (!ctx.connected && type !== 'COOKIE') {
|
||||
return void self.setTimeout(function () {
|
||||
return void setTimeout(function () {
|
||||
cb('DISCONNECTED');
|
||||
});
|
||||
}
|
||||
@ -185,7 +185,7 @@ types of messages:
|
||||
|
||||
send.unauthenticated = function (type, msg, cb) {
|
||||
if (!ctx.connected) {
|
||||
return void self.setTimeout(function () {
|
||||
return void setTimeout(function () {
|
||||
cb('DISCONNECTED');
|
||||
});
|
||||
}
|
||||
@ -276,7 +276,7 @@ types of messages:
|
||||
|
||||
var send = ctx.send = function (type, msg, cb) {
|
||||
if (!ctx.connected) {
|
||||
return void self.setTimeout(function () {
|
||||
return void setTimeout(function () {
|
||||
cb('DISCONNECTED');
|
||||
});
|
||||
}
|
||||
|
||||
@ -9,6 +9,7 @@ define([
|
||||
common.start = function (cfg) {
|
||||
cfg = cfg || {};
|
||||
var realtime = !cfg.noRealtime;
|
||||
var network;
|
||||
var secret;
|
||||
var hashes;
|
||||
var CpNfOuter;
|
||||
@ -18,7 +19,7 @@ define([
|
||||
var SFrameChannel;
|
||||
var sframeChan;
|
||||
var FilePicker;
|
||||
var Messenger;
|
||||
//var Messenger;
|
||||
var Messaging;
|
||||
var Notifier;
|
||||
var Utils = {};
|
||||
@ -32,7 +33,7 @@ define([
|
||||
'/common/cryptget.js',
|
||||
'/common/sframe-channel.js',
|
||||
'/filepicker/main.js',
|
||||
'/common/common-messenger.js',
|
||||
//'/common/common-messenger.js',
|
||||
'/common/common-messaging.js',
|
||||
'/common/common-notifier.js',
|
||||
'/common/common-hash.js',
|
||||
@ -41,16 +42,18 @@ define([
|
||||
'/common/common-constants.js',
|
||||
'/common/common-feedback.js',
|
||||
'/common/outer/local-store.js',
|
||||
'/common/outer/network-config.js',
|
||||
'/bower_components/netflux-websocket/netflux-client.js',
|
||||
], waitFor(function (_CpNfOuter, _Cryptpad, _Crypto, _Cryptget, _SFrameChannel,
|
||||
_FilePicker, _Messenger, _Messaging, _Notifier, _Hash, _Util, _Realtime,
|
||||
_Constants, _Feedback, _LocalStore) {
|
||||
_FilePicker, /*_Messenger,*/ _Messaging, _Notifier, _Hash, _Util, _Realtime,
|
||||
_Constants, _Feedback, _LocalStore, NetConfig, Netflux) {
|
||||
CpNfOuter = _CpNfOuter;
|
||||
Cryptpad = _Cryptpad;
|
||||
Crypto = _Crypto;
|
||||
Cryptget = _Cryptget;
|
||||
SFrameChannel = _SFrameChannel;
|
||||
FilePicker = _FilePicker;
|
||||
Messenger = _Messenger;
|
||||
//Messenger = _Messenger;
|
||||
Messaging = _Messaging;
|
||||
Notifier = _Notifier;
|
||||
Utils.Hash = _Hash;
|
||||
@ -85,6 +88,12 @@ define([
|
||||
sframeChan = sfc;
|
||||
}), false, { cache: cache, localStore: localStore, language: Cryptpad.getLanguage() });
|
||||
Cryptpad.ready(waitFor());
|
||||
|
||||
if (!cfg.newNetwork) {
|
||||
Netflux.connect(NetConfig.getWebsocketURL()).then(waitFor(function (nw) {
|
||||
network = nw;
|
||||
}));
|
||||
}
|
||||
}));
|
||||
}).nThen(function (waitFor) {
|
||||
$('#sbox-iframe').focus();
|
||||
@ -123,7 +132,6 @@ define([
|
||||
var parsed = Utils.Hash.parsePadUrl(window.location.href);
|
||||
if (!parsed.type) { throw new Error(); }
|
||||
var defaultTitle = Utils.Hash.getDefaultName(parsed);
|
||||
var proxy = Cryptpad.getProxy();
|
||||
var updateMeta = function () {
|
||||
//console.log('EV_METADATA_UPDATE');
|
||||
var metaObj, isTemplate;
|
||||
@ -137,7 +145,7 @@ define([
|
||||
isTemplate = t;
|
||||
}));
|
||||
}).nThen(function (/*waitFor*/) {
|
||||
metaObj.doc: {
|
||||
metaObj.doc = {
|
||||
defaultTitle: defaultTitle,
|
||||
type: parsed.type
|
||||
};
|
||||
@ -167,7 +175,6 @@ define([
|
||||
};
|
||||
Cryptpad.onMetadataChanged(updateMeta);
|
||||
sframeChan.onReg('EV_METADATA_UPDATE', updateMeta);
|
||||
proxy.on('change', 'settings', updateMeta);
|
||||
|
||||
Utils.LocalStore.onLogout(function () {
|
||||
sframeChan.event('EV_LOGOUT');
|
||||
@ -285,7 +292,6 @@ define([
|
||||
};
|
||||
|
||||
sframeChan.on('Q_GET_FULL_HISTORY', function (data, cb) {
|
||||
var network = Cryptpad.getNetwork();
|
||||
var hkn = network.historyKeeper;
|
||||
var crypto = Crypto.createEncryptor(secret.keys);
|
||||
// Get the history messages and send them to the iframe
|
||||
@ -493,7 +499,8 @@ define([
|
||||
}
|
||||
|
||||
if (cfg.messaging) {
|
||||
var messenger = Messenger.messenger(Cryptpad);
|
||||
// TODO make messenger work with async store
|
||||
/*var messenger = Messenger.messenger(Cryptpad);
|
||||
|
||||
sframeChan.on('Q_CONTACTS_GET_FRIEND_LIST', function (data, cb) {
|
||||
messenger.getFriendList(function (e, keys) {
|
||||
@ -604,7 +611,7 @@ define([
|
||||
sframeChan.event('EV_CONTACTS_UNFRIEND', {
|
||||
curvePublic: curvePublic,
|
||||
});
|
||||
});
|
||||
});*/
|
||||
}
|
||||
|
||||
sframeChan.ready();
|
||||
@ -628,7 +635,7 @@ define([
|
||||
CpNfOuter.start({
|
||||
sframeChan: sframeChan,
|
||||
channel: secret.channel,
|
||||
network: cfg.newNetwork || Cryptpad.getNetwork(),
|
||||
network: cfg.newNetwork || network,
|
||||
validateKey: secret.keys.validateKey || undefined,
|
||||
readOnly: readOnly,
|
||||
crypto: Crypto.createEncryptor(secret.keys),
|
||||
|
||||
@ -122,6 +122,7 @@ define([
|
||||
funcs.getFileSize = function (href, cb) {
|
||||
var channelId = Hash.hrefToHexChannelId(href);
|
||||
funcs.sendAnonRpcMsg("GET_FILE_SIZE", channelId, function (data) {
|
||||
console.log(data);
|
||||
if (!data) { return void cb("No response"); }
|
||||
if (data.error) { return void cb(data.error); }
|
||||
if (data.response && data.response.length && typeof(data.response[0]) === 'number') {
|
||||
|
||||
@ -5,9 +5,7 @@ define([
|
||||
'jquery',
|
||||
'/common/requireconfig.js',
|
||||
'/common/sframe-common-outer.js',
|
||||
'/common/outer/network-config.js',
|
||||
'/bower_components/netflux-websocket/netflux-client.js',
|
||||
], function (nThen, ApiConfig, $, RequireConfig, SFCommonO, NetConfig, Netflux) {
|
||||
], function (nThen, ApiConfig, $, RequireConfig, SFCommonO) {
|
||||
var requireConfig = RequireConfig();
|
||||
|
||||
// Loaded in load #2
|
||||
@ -38,10 +36,10 @@ define([
|
||||
};
|
||||
window.addEventListener('message', onMsg);
|
||||
}).nThen(function (/*waitFor*/) {
|
||||
var getSecrets = function (Cryptpad, Utils) {
|
||||
var getSecrets = function (Cryptpad, Utils, cb) {
|
||||
var hash = window.location.hash.slice(1) || Utils.LocalStore.getUserHash() ||
|
||||
Utils.LocalStore.getFSHash();
|
||||
return Utils.Hash.getSecrets('drive', hash);
|
||||
cb(null, Utils.Hash.getSecrets('drive', hash));
|
||||
};
|
||||
var addRpc = function (sframeChan, Cryptpad, Utils) {
|
||||
sframeChan.on('EV_BURN_ANON_DRIVE', function () {
|
||||
@ -51,13 +49,13 @@ define([
|
||||
window.location.reload();
|
||||
});
|
||||
};
|
||||
Netflux.connect(NetConfig.getWebsocketURL()).then(function (network) {
|
||||
//Netflux.connect(NetConfig.getWebsocketURL()).then(function (network) {
|
||||
SFCommonO.start({
|
||||
getSecrets: getSecrets,
|
||||
newNetwork: network,
|
||||
//newNetwork: network,
|
||||
noHash: true,
|
||||
addRpc: addRpc
|
||||
});
|
||||
}, function (err) { console.error(err); });
|
||||
//}, function (err) { console.error(err); });
|
||||
});
|
||||
});
|
||||
|
||||
@ -46,7 +46,6 @@ define([
|
||||
sframeChan = sfc;
|
||||
}));
|
||||
}).nThen(function () {
|
||||
var proxy = Cryptpad.getProxy();
|
||||
var updateMeta = function () {
|
||||
//console.log('EV_METADATA_UPDATE');
|
||||
var metaObj;
|
||||
@ -56,7 +55,7 @@ define([
|
||||
metaObj = n;
|
||||
}));
|
||||
}).nThen(function (/*waitFor*/) {
|
||||
metaObj.doc: {};
|
||||
metaObj.doc = {};
|
||||
var additionalPriv = {
|
||||
accountName: Utils.LocalStore.getAccountName(),
|
||||
origin: window.location.origin,
|
||||
@ -71,7 +70,6 @@ define([
|
||||
};
|
||||
Cryptpad.onMetadataChanged(updateMeta);
|
||||
sframeChan.onReg('EV_METADATA_UPDATE', updateMeta);
|
||||
proxy.on('change', 'settings', updateMeta);
|
||||
|
||||
config.addCommonRpc(sframeChan);
|
||||
|
||||
|
||||
@ -78,18 +78,14 @@ define([
|
||||
var chanId = Utils.Hash.hrefToHexChannelId(data);
|
||||
Cryptpad.pinPads([chanId], function (e) {
|
||||
if (e) { return void cb(e); }
|
||||
Cryptpad.getProxy().profile.avatar = data;
|
||||
Utils.Realtime.whenRealtimeSyncs(Cryptpad.getRealtime(), function () {
|
||||
cb();
|
||||
});
|
||||
Cryptpad.setAvatar(data, cb);
|
||||
});
|
||||
});
|
||||
// Removing the avatar from the profile: unpin it
|
||||
sframeChan.on('Q_PROFILE_AVATAR_REMOVE', function (data, cb) {
|
||||
var chanId = Utils.Hash.hrefToHexChannelId(data);
|
||||
Cryptpad.unpinPads([chanId], function (e) {
|
||||
delete Cryptpad.getProxy().profile.avatar;
|
||||
cb(e);
|
||||
Cryptpad.unpinPads([chanId], function () {
|
||||
Cryptpad.setAvatar(undefined, cb);
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
@ -36,12 +36,12 @@ define([
|
||||
};
|
||||
window.addEventListener('message', onMsg);
|
||||
}).nThen(function (/*waitFor*/) {
|
||||
var getSecrets = function (Cryptpad, Utils) {
|
||||
var proxy = Cryptpad.getProxy();
|
||||
var hash = proxy.todo || Utils.Hash.createRandomHash();
|
||||
if (!proxy.todo) { proxy.todo = hash; }
|
||||
|
||||
return Utils.Hash.getSecrets('todo', hash);
|
||||
var getSecrets = function (Cryptpad, Utils, cb) {
|
||||
Cryptpad.getTodoHash(function (hash) {
|
||||
var nHash = hash || Utils.Hash.createRandomHash();
|
||||
if (!hash) { Cryptpad.setTodoHash(nHash); }
|
||||
cb(null, Utils.Hash.getSecrets('todo', hash));
|
||||
});
|
||||
};
|
||||
SFCommonO.start({
|
||||
getSecrets: getSecrets,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user