apps/meteor/client/lib/utils/getAvatarAsPng.ts
import type { IUser } from '@rocket.chat/core-typings';
import { getUserAvatarURL } from '../../../app/utils/client/getUserAvatarURL';
export const getAvatarAsPng = (username: IUser['username'], cb: (dataURL: string) => void): (() => void) => {
const image = new Image();
const onLoad = (): void => {
const canvas = document.createElement('canvas');
canvas.width = image.width;
canvas.height = image.height;
const context = canvas.getContext('2d');
if (!context) {
throw new Error('failed to get canvas context');
}
context.drawImage(image, 0, 0);
try {
return cb(canvas.toDataURL('image/png'));
} catch (e) {
return cb('');
}
};
const onError = (): void => cb('');
image.onload = onLoad;
image.onerror = onError;
image.src = getUserAvatarURL(username || '') as string;
return onError;
};