mirror of
https://github.com/RGBCube/cinny
synced 2025-07-30 00:17:45 +00:00
Fix crash on malformed blurhash (#2331)
This commit is contained in:
parent
5964eee833
commit
df391968d8
3 changed files with 15 additions and 3 deletions
|
@ -30,6 +30,7 @@ import { stopPropagation } from '../../../utils/keyboard';
|
|||
import { decryptFile, downloadEncryptedMedia, mxcUrlToHttp } from '../../../utils/matrix';
|
||||
import { useMediaAuthentication } from '../../../hooks/useMediaAuthentication';
|
||||
import { ModalWide } from '../../../styles/Modal.css';
|
||||
import { validBlurHash } from '../../../utils/blurHash';
|
||||
|
||||
type RenderViewerProps = {
|
||||
src: string;
|
||||
|
@ -77,7 +78,7 @@ export const ImageContent = as<'div', ImageContentProps>(
|
|||
) => {
|
||||
const mx = useMatrixClient();
|
||||
const useAuthentication = useMediaAuthentication();
|
||||
const blurHash = info?.[MATRIX_BLUR_HASH_PROPERTY_NAME];
|
||||
const blurHash = validBlurHash(info?.[MATRIX_BLUR_HASH_PROPERTY_NAME]);
|
||||
|
||||
const [load, setLoad] = useState(false);
|
||||
const [error, setError] = useState(false);
|
||||
|
|
|
@ -31,6 +31,7 @@ import {
|
|||
mxcUrlToHttp,
|
||||
} from '../../../utils/matrix';
|
||||
import { useMediaAuthentication } from '../../../hooks/useMediaAuthentication';
|
||||
import { validBlurHash } from '../../../utils/blurHash';
|
||||
|
||||
type RenderVideoProps = {
|
||||
title: string;
|
||||
|
@ -68,7 +69,7 @@ export const VideoContent = as<'div', VideoContentProps>(
|
|||
) => {
|
||||
const mx = useMatrixClient();
|
||||
const useAuthentication = useMediaAuthentication();
|
||||
const blurHash = info.thumbnail_info?.[MATRIX_BLUR_HASH_PROPERTY_NAME];
|
||||
const blurHash = validBlurHash(info.thumbnail_info?.[MATRIX_BLUR_HASH_PROPERTY_NAME]);
|
||||
|
||||
const [load, setLoad] = useState(false);
|
||||
const [error, setError] = useState(false);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import { encode } from 'blurhash';
|
||||
import { encode, isBlurhashValid } from 'blurhash';
|
||||
|
||||
export const encodeBlurHash = (
|
||||
img: HTMLImageElement | HTMLVideoElement,
|
||||
|
@ -17,3 +17,13 @@ export const encodeBlurHash = (
|
|||
const data = context.getImageData(0, 0, canvas.width, canvas.height);
|
||||
return encode(data.data, data.width, data.height, 4, 4);
|
||||
};
|
||||
|
||||
export const validBlurHash = (hash?: string): string | undefined => {
|
||||
if (typeof hash === 'string') {
|
||||
const validity = isBlurhashValid(hash);
|
||||
|
||||
return validity.result ? hash : undefined;
|
||||
}
|
||||
|
||||
return undefined;
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue