Fix/spinner image not able to be opened in new tab or saved (#635)

After the object url has been revoked the image can't be used anymore
This commit is contained in:
schroda
2024-03-03 23:07:12 +01:00
committed by GitHub
parent fb0622e209
commit f0fc31ceac

View File

@@ -48,6 +48,7 @@ export const SpinnerImage = forwardRef((props: IProps, imgRef: ForwardedRef<HTML
};
useEffect(() => {
let tmpImageSourceUrl: string;
const imageRequest = requestManager.requestImage(src);
const fetchImage = async () => {
@@ -57,6 +58,7 @@ export const SpinnerImage = forwardRef((props: IProps, imgRef: ForwardedRef<HTML
updateImageState(false);
setImageSourceUrl(image);
tmpImageSourceUrl = image;
};
const checkCache = await Promise.race([imageRequest.response, Promise.resolve(false)]);
@@ -78,6 +80,9 @@ export const SpinnerImage = forwardRef((props: IProps, imgRef: ForwardedRef<HTML
fetchImage().catch(defaultPromiseErrorHandler);
return () => {
if (tmpImageSourceUrl) {
URL.revokeObjectURL(tmpImageSourceUrl);
}
imageRequest.abortRequest(new Error('Component was unmounted'));
};
}, [imgLoadRetryKey]);
@@ -116,7 +121,6 @@ export const SpinnerImage = forwardRef((props: IProps, imgRef: ForwardedRef<HTML
}}
ref={imgRef}
src={imageSourceUrl}
onLoad={() => URL.revokeObjectURL(imageSourceUrl)}
alt={alt}
draggable={false}
/>