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