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/views/location/useAsyncImage.ts

26 lines
548 B

import { useEffect } from 'react';
import { useAsyncState } from '../../hooks/useAsyncState';
export const useAsyncImage = (src: string | undefined): string | undefined => {
const { value, resolve, reject, reset } = useAsyncState<string>();
useEffect(() => {
reset();
if (!src) {
return;
}
const image = new Image();
image.addEventListener('load', () => {
resolve(image.src);
});
image.addEventListener('error', (e) => {
reject(e.error);
});
image.src = src;
}, [src, resolve, reject, reset]);
return value;
};