The communications platform that puts data protection first.
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.
 
 
 
 
 
Rocket.Chat/client/providers/AvatarUrlProvider.tsx

26 lines
1.2 KiB

import React, { useMemo, FC } from 'react';
import { useSetting } from '../contexts/SettingsContext';
import { AvatarUrlContext } from '../contexts/AvatarUrlContext';
import { roomTypes } from '../../app/utils/client';
const AvatarUrlProvider: FC = ({ children }) => {
const cdnAvatarUrl = String(useSetting('CDN_PREFIX') || '');
const externalProviderUrl = String(useSetting('Accounts_AvatarExternalProviderUrl') || '');
const contextValue = useMemo(() => ({
getUserPathAvatar: ((): (uid: string, etag?: string) => string => {
if (externalProviderUrl) {
return (uid: string): string => externalProviderUrl.trim().replace(/\/+$/, '').replace('{username}', uid);
}
if (cdnAvatarUrl) {
return (uid: string, etag?: string): string => `${ cdnAvatarUrl }/avatar/${ uid }${ etag ? `?etag=${ etag }` : '' }`;
}
return (uid: string, etag?: string): string => `/avatar/${ uid }${ etag ? `?etag=${ etag }` : '' }`;
})(),
getRoomPathAvatar: ({ type, ...room }: any): string => roomTypes.getConfig(type || room.t).getAvatarPath({ username: room._id, ...room }),
}), [externalProviderUrl, cdnAvatarUrl]);
return <AvatarUrlContext.Provider children={children} value={contextValue} />;
};
export default AvatarUrlProvider;