You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

Avatar.js 2.1KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. /* global Strophe, APP, MD5, config, interfaceConfig */
  2. var Settings = require("../../settings/Settings");
  3. var users = {};
  4. var Avatar = {
  5. /**
  6. * Sets the user's avatar in the settings menu(if local user), contact list
  7. * and thumbnail
  8. * @param jid jid of the user
  9. * @param id email or userID to be used as a hash
  10. */
  11. setUserAvatar: function (jid, id) {
  12. if (id) {
  13. if (users[jid] === id) {
  14. return;
  15. }
  16. users[jid] = id;
  17. }
  18. var avatarUrl = this.getAvatarUrl(jid);
  19. var resourceJid = Strophe.getResourceFromJid(jid);
  20. APP.UI.userAvatarChanged(resourceJid, avatarUrl);
  21. },
  22. /**
  23. * Returns the URL of the image for the avatar of a particular user,
  24. * identified by its jid
  25. * @param jid
  26. * @param jid full MUC jid of the user for whom we want to obtain avatar URL
  27. */
  28. getAvatarUrl: function (jid) {
  29. if (config.disableThirdPartyRequests) {
  30. return 'images/avatar2.png';
  31. } else {
  32. if (!jid) {
  33. console.error("Get avatar - jid is undefined");
  34. return null;
  35. }
  36. var id = users[jid];
  37. // If the ID looks like an email, we'll use gravatar.
  38. // Otherwise, it's a random avatar, and we'll use the configured
  39. // URL.
  40. var random = !id || id.indexOf('@') < 0;
  41. if (!id) {
  42. console.warn(
  43. "No avatar stored yet for " + jid + " - using JID as ID");
  44. id = jid;
  45. }
  46. id = MD5.hexdigest(id.trim().toLowerCase());
  47. // Default to using gravatar.
  48. var urlPref = 'https://www.gravatar.com/avatar/';
  49. var urlSuf = "?d=wavatar&size=100";
  50. if (random && interfaceConfig.RANDOM_AVATAR_URL_PREFIX) {
  51. urlPref = interfaceConfig.RANDOM_AVATAR_URL_PREFIX;
  52. urlSuf = interfaceConfig.RANDOM_AVATAR_URL_SUFFIX;
  53. }
  54. return urlPref + id + urlSuf;
  55. }
  56. }
  57. };
  58. module.exports = Avatar;