28 lines
773 B
JavaScript
28 lines
773 B
JavaScript
|
const formatUrl = (url, baseUrl, uriSize, avatarAuthURLFragment) => (
|
||
|
`${ baseUrl }${ url }?format=png&size=${ uriSize }&${ avatarAuthURLFragment }`
|
||
|
);
|
||
|
|
||
|
export const avatarURL = ({
|
||
|
type, text, size, userId, token, avatar, baseUrl
|
||
|
}) => {
|
||
|
const room = type === 'd' ? text : `@${ text }`;
|
||
|
|
||
|
// Avoid requesting several sizes by having only two sizes on cache
|
||
|
const uriSize = size === 100 ? 100 : 50;
|
||
|
|
||
|
let avatarAuthURLFragment = '';
|
||
|
if (userId && token) {
|
||
|
avatarAuthURLFragment = `&rc_token=${ token }&rc_uid=${ userId }`;
|
||
|
}
|
||
|
|
||
|
|
||
|
let uri;
|
||
|
if (avatar) {
|
||
|
uri = avatar.includes('http') ? avatar : formatUrl(avatar, baseUrl, uriSize, avatarAuthURLFragment);
|
||
|
} else {
|
||
|
uri = formatUrl(`/avatar/${ room }`, baseUrl, uriSize, avatarAuthURLFragment);
|
||
|
}
|
||
|
|
||
|
return uri;
|
||
|
};
|