mirror of https://github.com/zulip/zulip.git
Calculate gravatar hashes on the webapp client.
This change prepares us to have the server send avatar_url of None when somebody wants a gravatar avatar (as opposed to a user-uploaded one). Subsequent commits will change behavior on both the server and client to have this happen. So this commit has no-op code for now, but it will soon use the fallback-to-gravatar logic.
This commit is contained in:
parent
3462127ddb
commit
f105c480b3
|
@ -18,6 +18,7 @@
|
|||
"Dropbox": false,
|
||||
"SockJS": false,
|
||||
"marked": false,
|
||||
"md5": false,
|
||||
"moment": false,
|
||||
"i18n": false,
|
||||
"DynamicText": false,
|
||||
|
|
|
@ -1,12 +1,13 @@
|
|||
add_dependencies({
|
||||
util: 'js/util.js',
|
||||
});
|
||||
zrequire('util');
|
||||
zrequire('people');
|
||||
|
||||
var people = require("js/people.js");
|
||||
set_global('blueslip', {
|
||||
error: function () { return undefined; },
|
||||
});
|
||||
set_global('page_params', {});
|
||||
set_global('md5', function (s) {
|
||||
return 'md5-' + s;
|
||||
});
|
||||
|
||||
var _ = global._;
|
||||
|
||||
|
@ -393,6 +394,23 @@ initialize();
|
|||
assert.equal(people.small_avatar_url(message),
|
||||
'legacy.png&s=50');
|
||||
|
||||
message = {
|
||||
avatar_url: undefined,
|
||||
sender_id: maria.user_id,
|
||||
};
|
||||
assert.equal(people.small_avatar_url(message),
|
||||
'https://secure.gravatar.com/avatar/md5-athens@example.com?d=identicon&s=50'
|
||||
);
|
||||
|
||||
message = {
|
||||
avatar_url: undefined,
|
||||
sender_email: 'foo@example.com',
|
||||
sender_id: 9999999,
|
||||
};
|
||||
assert.equal(people.small_avatar_url(message),
|
||||
'https://secure.gravatar.com/avatar/md5-foo@example.com?d=identicon&s=50'
|
||||
);
|
||||
|
||||
message = {
|
||||
type: 'private',
|
||||
display_recipient: [
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
"dependencies": {
|
||||
"@types/node": "8.0.34",
|
||||
"@types/webpack": "3.0.13",
|
||||
"blueimp-md5": "2.10.0",
|
||||
"clipboard": "1.5.16",
|
||||
"emoji-datasource": "3.0.0",
|
||||
"emoji-datasource-apple": "3.0.0",
|
||||
|
|
|
@ -508,16 +508,31 @@ exports.small_avatar_url = function (message) {
|
|||
person = exports.get_person_from_user_id(message.sender_id);
|
||||
}
|
||||
|
||||
var email;
|
||||
|
||||
// The first time we encounter a sender in a message, we may
|
||||
// not have person.avatar_url set, but if we do, then use that.
|
||||
if (person && person.avatar_url) {
|
||||
if (person) {
|
||||
url = person.avatar_url;
|
||||
} else if (message.avatar_url) {
|
||||
// Here we fall back to using the avatar_url from the message
|
||||
// itself.
|
||||
email = person.email;
|
||||
}
|
||||
|
||||
// Try to get info from the message if we didn't have a `person` object
|
||||
// or if the avatar was missing. We do this verbosely to avoid false
|
||||
// positives on line coverage (we don't do branch checking).
|
||||
if (!url) {
|
||||
url = message.avatar_url;
|
||||
}
|
||||
|
||||
if (!email) {
|
||||
email = message.sender_email;
|
||||
}
|
||||
|
||||
if (!url) {
|
||||
var hash = md5(email);
|
||||
url = 'https://secure.gravatar.com/avatar/' + hash + '?d=identicon';
|
||||
}
|
||||
|
||||
if (url) {
|
||||
url = exports.format_small_avatar_url(url);
|
||||
}
|
||||
|
|
|
@ -412,6 +412,10 @@ block-stream@*:
|
|||
dependencies:
|
||||
inherits "~2.0.0"
|
||||
|
||||
blueimp-md5@2.10.0:
|
||||
version "2.10.0"
|
||||
resolved "https://registry.yarnpkg.com/blueimp-md5/-/blueimp-md5-2.10.0.tgz#02f0843921f90dca14f5b8920a38593201d6964d"
|
||||
|
||||
bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.11.6, bn.js@^4.4.0:
|
||||
version "4.11.6"
|
||||
resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215"
|
||||
|
|
|
@ -894,6 +894,7 @@ JS_SPECS = {
|
|||
'third/bootstrap-notify/js/bootstrap-notify.js',
|
||||
'third/html5-formdata/formdata.js',
|
||||
'node_modules/jquery-validation/dist/jquery.validate.js',
|
||||
'node_modules/blueimp-md5/js/md5.js',
|
||||
'node_modules/clipboard/dist/clipboard.js',
|
||||
'third/jquery-form/jquery.form.js',
|
||||
'third/jquery-filedrop/jquery.filedrop.js',
|
||||
|
|
Loading…
Reference in New Issue