/* 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;