123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- /* global MD5, config, interfaceConfig */
-
- let users = {};
-
- export default {
- /**
- * Sets prop in users object.
- * @param id {string} user id
- * @param prop {string} name of the prop
- * @param val {string} value to be set
- */
- _setUserProp: function (id, prop, val) {
- if(!val || (users[id] && users[id][prop] === val))
- return;
- if(!users[id])
- users[id] = {};
- users[id][prop] = val;
- },
-
- /**
- * Sets the user's avatar in the settings menu(if local user), contact list
- * and thumbnail
- * @param id id of the user
- * @param email email or nickname to be used as a hash
- */
- setUserEmail: function (id, email) {
- this._setUserProp(id, "email", email);
- },
-
- /**
- * Sets the user's avatar in the settings menu(if local user), contact list
- * and thumbnail
- * @param id id of the user
- * @param url the url for the avatar
- */
- setUserAvatarUrl: function (id, url) {
- this._setUserProp(id, "url", url);
- },
-
- /**
- * Sets the user's avatar id.
- * @param id id of the user
- * @param avatarId an id to be used for the avatar
- */
- setUserAvatarID: function (id, avatarId) {
- this._setUserProp(id, "avatarId", avatarId);
- },
-
- /**
- * Returns the URL of the image for the avatar of a particular user,
- * identified by its id.
- * @param {string} userId user id
- */
- getAvatarUrl: function (userId) {
- if (config.disableThirdPartyRequests) {
- return 'images/avatar2.png';
- }
-
- if (!userId) {
- console.error("Get avatar - id is undefined");
- return null;
- }
-
- let avatarId = null;
- const user = users[userId];
-
- // The priority is url, email and lowest is avatarId
- if(user) {
- if(user.url)
- return user.url;
-
- if (user.email)
- avatarId = user.email;
- else {
- avatarId = user.avatarId;
- }
- }
-
- // If the ID looks like an email, we'll use gravatar.
- // Otherwise, it's a random avatar, and we'll use the configured
- // URL.
- let random = !avatarId || avatarId.indexOf('@') < 0;
-
- if (!avatarId) {
- console.warn(
- `No avatar stored yet for ${userId} - using ID as avatar ID`);
- avatarId = userId;
- }
- avatarId = MD5.hexdigest(avatarId.trim().toLowerCase());
-
-
- let urlPref = null;
- let urlSuf = null;
- if (!random) {
- urlPref = 'https://www.gravatar.com/avatar/';
- urlSuf = "?d=wavatar&size=200";
- }
- else if (random && interfaceConfig.RANDOM_AVATAR_URL_PREFIX) {
- urlPref = interfaceConfig.RANDOM_AVATAR_URL_PREFIX;
- urlSuf = interfaceConfig.RANDOM_AVATAR_URL_SUFFIX;
- }
- else {
- urlPref = 'https://robohash.org/';
- urlSuf = ".png?size=200x200";
- }
-
- return urlPref + avatarId + urlSuf;
- }
- };
|