49 lines
No EOL
1.2 KiB
JavaScript
49 lines
No EOL
1.2 KiB
JavaScript
/**
|
|
* Service which provides helper methods for retrieving the avatars displayed in the app.
|
|
*/
|
|
angular.module('quay').factory('AvatarService', ['Config', '$sanitize', 'md5',
|
|
function(Config, $sanitize, md5) {
|
|
var avatarService = {};
|
|
var cache = {};
|
|
|
|
avatarService.getAvatar = function(hash, opt_size, opt_notfound) {
|
|
var size = opt_size || 16;
|
|
switch (Config['AVATAR_KIND']) {
|
|
case 'local':
|
|
return '/avatar/' + hash + '?size=' + size;
|
|
break;
|
|
|
|
case 'gravatar':
|
|
var notfound = opt_notfound || '404';
|
|
return '//www.gravatar.com/avatar/' + hash + '?d=' + notfound + '&size=' + size;
|
|
break;
|
|
}
|
|
};
|
|
|
|
avatarService.computeHash = function(opt_email, opt_name) {
|
|
var email = opt_email || '';
|
|
var name = opt_name || '';
|
|
|
|
var cacheKey = email + ':' + name;
|
|
if (!cacheKey) { return '-'; }
|
|
|
|
if (cache[cacheKey]) {
|
|
return cache[cacheKey];
|
|
}
|
|
|
|
var hash = md5.createHash(email.toString().toLowerCase());
|
|
switch (Config['AVATAR_KIND']) {
|
|
case 'local':
|
|
if (name) {
|
|
hash = name[0] + hash;
|
|
} else if (email) {
|
|
hash = email[0] + hash;
|
|
}
|
|
break;
|
|
}
|
|
|
|
return cache[cacheKey] = hash;
|
|
};
|
|
|
|
return avatarService;
|
|
}]); |