68 lines
2.1 KiB
JavaScript
68 lines
2.1 KiB
JavaScript
/* global Strophe, APP, MD5 */
|
|
var Settings = require("../../settings/Settings");
|
|
|
|
var users = {};
|
|
|
|
var Avatar = {
|
|
|
|
/**
|
|
* Sets the user's avatar in the settings menu(if local user), contact list
|
|
* and thumbnail
|
|
* @param jid jid of the user
|
|
* @param id email or userID to be used as a hash
|
|
*/
|
|
setUserAvatar: function (jid, id) {
|
|
if (id) {
|
|
if (users[jid] === id) {
|
|
return;
|
|
}
|
|
users[jid] = id;
|
|
}
|
|
var thumbUrl = this.getThumbUrl(jid);
|
|
var contactListUrl = this.getContactListUrl(jid);
|
|
var resourceJid = Strophe.getResourceFromJid(jid);
|
|
|
|
APP.UI.userAvatarChanged(resourceJid, thumbUrl, contactListUrl);
|
|
},
|
|
/**
|
|
* Returns image URL for the avatar to be displayed on large video area
|
|
* where current active speaker is presented.
|
|
* @param jid full MUC jid of the user for whom we want to obtain avatar URL
|
|
*/
|
|
getActiveSpeakerUrl: function (jid) {
|
|
return this.getGravatarUrl(jid, 100);
|
|
},
|
|
/**
|
|
* Returns image URL for the avatar to be displayed on small video thumbnail
|
|
* @param jid full MUC jid of the user for whom we want to obtain avatar URL
|
|
*/
|
|
getThumbUrl: function (jid) {
|
|
return this.getGravatarUrl(jid, 100);
|
|
},
|
|
/**
|
|
* Returns the URL for the avatar to be displayed as contactlist item
|
|
* @param jid full MUC jid of the user for whom we want to obtain avatar URL
|
|
*/
|
|
getContactListUrl: function (jid) {
|
|
return this.getGravatarUrl(jid, 30);
|
|
},
|
|
getGravatarUrl: function (jid, size) {
|
|
if (!jid) {
|
|
console.error("Get gravatar - jid is undefined");
|
|
return null;
|
|
}
|
|
var id = users[jid];
|
|
if (!id) {
|
|
console.warn(
|
|
"No avatar stored yet for " + jid + " - using JID as ID");
|
|
id = jid;
|
|
}
|
|
return 'https://www.gravatar.com/avatar/' +
|
|
MD5.hexdigest(id.trim().toLowerCase()) +
|
|
"?d=wavatar&size=" + (size || "30");
|
|
}
|
|
|
|
};
|
|
|
|
|
|
module.exports = Avatar; |