Manual merge of notify.js
This commit is contained in:
@@ -256,7 +256,7 @@ define([
|
||||
var $friend = ui.getFriend(curvePublic);
|
||||
var $chat = ui.getChannel(curvePublic);
|
||||
$friend.remove();
|
||||
$chat.remove();
|
||||
if ($chat) { $chat.remove(); }
|
||||
ui.showInfo();
|
||||
};
|
||||
|
||||
@@ -892,7 +892,7 @@ define([
|
||||
var addToFriendList = Msg.addToFriendList = function (common, data, cb) {
|
||||
var proxy = common.getProxy();
|
||||
var friends = getFriendList(proxy);
|
||||
var pubKey = data.curvePublic;
|
||||
var pubKey = data.curvePublic; // todo validata data
|
||||
|
||||
if (pubKey === proxy.curvePublic) { return void cb("E_MYKEY"); }
|
||||
|
||||
@@ -938,7 +938,7 @@ define([
|
||||
var todo = function (yes) {
|
||||
if (yes) {
|
||||
pending[sender] = msgData;
|
||||
msg = ["FRIEND_REQ_OK", chan, createData(common, msgData.channel)];
|
||||
msg = ["FRIEND_REQ_OK", chan, createData(proxy, msgData.channel)];
|
||||
}
|
||||
msgStr = Crypto.encrypt(JSON.stringify(msg), key);
|
||||
network.sendto(sender, msgStr);
|
||||
@@ -1005,7 +1005,7 @@ define([
|
||||
if (!parsed.hashData) { return; }
|
||||
// Message
|
||||
var chan = parsed.hashData.channel;
|
||||
var myData = createData(common);
|
||||
var myData = createData(common.getProxy());
|
||||
var msg = ["FRIEND_REQ", chan, myData];
|
||||
// Encryption
|
||||
var keyStr = parsed.hashData.key;
|
||||
|
||||
@@ -8,6 +8,8 @@ define([
|
||||
var BAD_STATE_TIMEOUT = typeof(AppConfig.badStateTimeout) === 'number'?
|
||||
AppConfig.badStateTimeout: 30000;
|
||||
|
||||
var connected = false;
|
||||
|
||||
/*
|
||||
TODO make this not blow up when disconnected or lagging...
|
||||
*/
|
||||
@@ -20,6 +22,7 @@ define([
|
||||
}
|
||||
|
||||
var to = setTimeout(function () {
|
||||
if (!connected) { return; }
|
||||
realtime.abort();
|
||||
// don't launch more than one popup
|
||||
if (common.infiniteSpinnerDetected) { return; }
|
||||
@@ -38,5 +41,10 @@ define([
|
||||
}, 0);
|
||||
};
|
||||
|
||||
common.setConnectionState = function (bool) {
|
||||
if (typeof(bool) !== 'boolean') { return; }
|
||||
connected = bool;
|
||||
};
|
||||
|
||||
return common;
|
||||
});
|
||||
|
||||
@@ -581,6 +581,7 @@ define([
|
||||
_onDisplayNameChanged.forEach(function (h) {
|
||||
h(newName, isLocal);
|
||||
});
|
||||
common.clearTooltips();
|
||||
};
|
||||
|
||||
// STORAGE
|
||||
@@ -1905,12 +1906,18 @@ define([
|
||||
|
||||
Store.ready(function (err, storeObj) {
|
||||
store = common.store = env.store = storeObj;
|
||||
|
||||
common.addDirectMessageHandler(common);
|
||||
|
||||
var proxy = getProxy();
|
||||
var network = getNetwork();
|
||||
|
||||
network.on('disconnect', function () {
|
||||
Realtime.setConnectionState(false);
|
||||
});
|
||||
network.on('reconnect', function () {
|
||||
Realtime.setConnectionState(true);
|
||||
});
|
||||
|
||||
if (Object.keys(proxy).length === 1) {
|
||||
feedback("FIRST_APP_USE", true);
|
||||
}
|
||||
|
||||
@@ -50,25 +50,35 @@ define([
|
||||
};
|
||||
|
||||
Curve.deriveKeys = function (theirs, mine) {
|
||||
var pub = decodeBase64(theirs);
|
||||
var secret = decodeBase64(mine);
|
||||
try {
|
||||
var pub = decodeBase64(theirs);
|
||||
var secret = decodeBase64(mine);
|
||||
|
||||
var sharedSecret = Nacl.box.before(pub, secret);
|
||||
var salt = decodeUTF8('CryptPad.signingKeyGenerationSalt');
|
||||
var sharedSecret = Nacl.box.before(pub, secret);
|
||||
var salt = decodeUTF8('CryptPad.signingKeyGenerationSalt');
|
||||
|
||||
// 64 uint8s
|
||||
var hash = Nacl.hash(concatenateUint8s([salt, sharedSecret]));
|
||||
var signKp = Nacl.sign.keyPair.fromSeed(hash.subarray(0, 32));
|
||||
var cryptKey = hash.subarray(32, 64);
|
||||
// 64 uint8s
|
||||
var hash = Nacl.hash(concatenateUint8s([salt, sharedSecret]));
|
||||
var signKp = Nacl.sign.keyPair.fromSeed(hash.subarray(0, 32));
|
||||
var cryptKey = hash.subarray(32, 64);
|
||||
|
||||
return {
|
||||
cryptKey: encodeBase64(cryptKey),
|
||||
signKey: encodeBase64(signKp.secretKey),
|
||||
validateKey: encodeBase64(signKp.publicKey)
|
||||
};
|
||||
return {
|
||||
cryptKey: encodeBase64(cryptKey),
|
||||
signKey: encodeBase64(signKp.secretKey),
|
||||
validateKey: encodeBase64(signKp.publicKey)
|
||||
};
|
||||
} catch (e) {
|
||||
console.error('invalid keys or other problem deriving keys');
|
||||
console.error(e);
|
||||
return null;
|
||||
}
|
||||
};
|
||||
|
||||
Curve.createEncryptor = function (keys) {
|
||||
if (!keys || typeof(keys) !== 'object') {
|
||||
return void console.error("invalid input for createEncryptor");
|
||||
}
|
||||
|
||||
var cryptKey = decodeBase64(keys.cryptKey);
|
||||
var signKey = decodeBase64(keys.signKey);
|
||||
var validateKey = decodeBase64(keys.validateKey);
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -110,6 +110,8 @@ define(['/api/config'], function (ApiConfig) {
|
||||
cancel: cancel,
|
||||
};
|
||||
};
|
||||
return Module;
|
||||
};
|
||||
|
||||
return Module;
|
||||
});
|
||||
@@ -341,25 +341,14 @@ function isDataSchema(url) {
|
||||
return url.substr(i, 5).toLowerCase() === 'data:';
|
||||
}
|
||||
function getPDFFileNameFromURL(url) {
|
||||
var defaultFilename = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'document.pdf';
|
||||
|
||||
if (isDataSchema(url)) {
|
||||
console.warn('getPDFFileNameFromURL: ' + 'ignoring "data:" URL for performance reasons.');
|
||||
return defaultFilename;
|
||||
var query;
|
||||
var title;
|
||||
if (/\#/.test(url)) {
|
||||
url.replace(/\#(.*)$/, function (all, t) {
|
||||
title = t;
|
||||
});
|
||||
}
|
||||
var reURI = /^(?:(?:[^:]+:)?\/\/[^\/]+)?([^?#]*)(\?[^#]*)?(#.*)?$/;
|
||||
var reFilename = /[^\/?#=]+\.pdf\b(?!.*\.pdf\b)/i;
|
||||
var splitURI = reURI.exec(url);
|
||||
var suggestedFilename = reFilename.exec(splitURI[1]) || reFilename.exec(splitURI[2]) || reFilename.exec(splitURI[3]);
|
||||
if (suggestedFilename) {
|
||||
suggestedFilename = suggestedFilename[0];
|
||||
if (suggestedFilename.indexOf('%') !== -1) {
|
||||
try {
|
||||
suggestedFilename = reFilename.exec(decodeURIComponent(suggestedFilename))[0];
|
||||
} catch (e) {}
|
||||
}
|
||||
}
|
||||
return suggestedFilename || defaultFilename;
|
||||
return title || 'document.pdf';
|
||||
}
|
||||
function normalizeWheelEventDelta(evt) {
|
||||
var delta = Math.sqrt(evt.deltaX * evt.deltaX + evt.deltaY * evt.deltaY);
|
||||
@@ -1192,11 +1181,13 @@ var PDFViewerApplication = {
|
||||
setTitleUsingUrl: function pdfViewSetTitleUsingUrl(url) {
|
||||
this.url = url;
|
||||
this.baseUrl = url.split('#')[0];
|
||||
var title = (0, _ui_utils.getPDFFileNameFromURL)(url, '');
|
||||
|
||||
var title = _ui_utils.getPDFFileNameFromURL(url);
|
||||
if (!title) {
|
||||
try {
|
||||
title = decodeURIComponent((0, _pdfjsLib.getFilenameFromUrl)(url)) || url;
|
||||
} catch (e) {
|
||||
console.error(e)
|
||||
title = url;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user