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