feat: image integrity check

This commit is contained in:
2023-12-14 11:50:03 +00:00
parent b38527ca1f
commit 6e5fba4f15
4 changed files with 18 additions and 9 deletions

View File

@ -5,13 +5,14 @@ import { getUrlHostname } from "@/SnortUtils";
type ProxyImgProps = HTMLProps<HTMLImageElement> & {
size?: number;
sha256?: string;
className?: string;
promptToLoadDirectly?: boolean;
missingImageElement?: ReactNode;
};
export const ProxyImg = forwardRef<HTMLImageElement, ProxyImgProps>(
({ size, className, promptToLoadDirectly, missingImageElement, ...props }: ProxyImgProps, ref) => {
({ size, className, promptToLoadDirectly, missingImageElement, sha256, ...props }: ProxyImgProps, ref) => {
const { proxy } = useImgProxy();
const [loadFailed, setLoadFailed] = useState(false);
const [bypass, setBypass] = useState(CONFIG.bypassImgProxyError);
@ -34,7 +35,7 @@ export const ProxyImg = forwardRef<HTMLImageElement, ProxyImgProps>(
</div>
);
}
const src = loadFailed && bypass ? props.src : proxy(props.src ?? "", size);
const src = loadFailed && bypass ? props.src : proxy(props.src ?? "", size, sha256);
if (!src || (loadFailed && !bypass)) return missingImageElement;
return (
<img
@ -48,7 +49,7 @@ export const ProxyImg = forwardRef<HTMLImageElement, ProxyImgProps>(
if (props.onError) {
props.onError(e);
} else {
console.error("Failed to proxy image ", props.src);
console.error("Failed to proxy image: ", props.src, e);
setLoadFailed(true);
}
}}