From c131cad92728c33fc36aa43257adad47f24a797a Mon Sep 17 00:00:00 2001 From: Audric Ackermann Date: Wed, 8 Jan 2025 13:09:48 +1100 Subject: [PATCH] fix: avatar does not reset when moving to a convo without one see SES-2800 --- ts/components/avatar/Avatar.tsx | 1 + ts/components/conversation/Image.tsx | 15 ++------------- ts/hooks/useEncryptedFileFetch.ts | 23 +++++------------------ 3 files changed, 8 insertions(+), 31 deletions(-) diff --git a/ts/components/avatar/Avatar.tsx b/ts/components/avatar/Avatar.tsx index f42012738..5edff1f4b 100644 --- a/ts/components/avatar/Avatar.tsx +++ b/ts/components/avatar/Avatar.tsx @@ -145,6 +145,7 @@ const AvatarInner = (props: Props) => { const hasImage = (base64Data || urlToLoad) && !imageBroken && !isClosedGroup; const isClickable = !!onAvatarClick; + return (
{ const messageId = useMessageIdFromContext(); const dropShadow = useMessageSelected(messageId); const direction = useMessageDirection(messageId); - /** used for debugging */ - const timestamp = useMessageTimestamp(messageId); const disableDrag = useDisableDrag(); - const { loading, urlToLoad } = useEncryptedFileFetch( - url, - attachment.contentType, - false, - timestamp - ); + const { loading, urlToLoad } = useEncryptedFileFetch(url, attachment.contentType, false); const { caption } = attachment || { caption: null }; const [pending, setPending] = useState(attachment.pending || true); diff --git a/ts/hooks/useEncryptedFileFetch.ts b/ts/hooks/useEncryptedFileFetch.ts index 23eb9f935..976f56c5d 100644 --- a/ts/hooks/useEncryptedFileFetch.ts +++ b/ts/hooks/useEncryptedFileFetch.ts @@ -1,14 +1,12 @@ import { useCallback, useEffect, useState } from 'react'; import { DecryptedAttachmentsManager } from '../session/crypto/DecryptedAttachmentsManager'; -import { perfEnd, perfStart } from '../session/utils/Performance'; export const useEncryptedFileFetch = ( /** undefined if the message is not visible yet, url is '' if something is broken */ url: string | undefined, contentType: string, - isAvatar: boolean, - timestamp?: number + isAvatar: boolean ) => { /** undefined if the attachment is not decrypted yet, '' if the attachment fails to decrypt */ const [urlToLoad, setUrlToLoad] = useState(undefined); @@ -19,26 +17,15 @@ export const useEncryptedFileFetch = ( const fetchUrl = useCallback( async (mediaUrl: string | undefined) => { if (alreadyDecrypted || !mediaUrl) { - if (alreadyDecrypted) { - setUrlToLoad(alreadyDecrypted); - setLoading(false); - } + setUrlToLoad(alreadyDecrypted || ''); + setLoading(false); return; } setLoading(true); try { - perfStart(`getDecryptedMediaUrl-${mediaUrl}-${timestamp}`); - const decryptedUrl = await DecryptedAttachmentsManager.getDecryptedMediaUrl( - mediaUrl, - contentType, - isAvatar - ); - perfEnd( - `getDecryptedMediaUrl-${mediaUrl}-${timestamp}`, - `getDecryptedMediaUrl-${mediaUrl}-${timestamp}` - ); + const decryptedUrl = await DecryptedAttachmentsManager.getDecryptedMediaUrl(mediaUrl, contentType, isAvatar); setUrlToLoad(decryptedUrl); } catch (error) { setUrlToLoad(''); @@ -46,7 +33,7 @@ export const useEncryptedFileFetch = ( setLoading(false); } }, - [alreadyDecrypted, contentType, isAvatar, timestamp] + [alreadyDecrypted, contentType, isAvatar] ); useEffect(() => {