fix: avatar does not reset when moving to a convo without one

see SES-2800
pull/3281/head
Audric Ackermann 12 months ago
parent 021c600b1d
commit c131cad927
No known key found for this signature in database

@ -145,6 +145,7 @@ const AvatarInner = (props: Props) => {
const hasImage = (base64Data || urlToLoad) && !imageBroken && !isClosedGroup; const hasImage = (base64Data || urlToLoad) && !imageBroken && !isClosedGroup;
const isClickable = !!onAvatarClick; const isClickable = !!onAvatarClick;
return ( return (
<div <div
className={classNames( className={classNames(

@ -9,11 +9,7 @@ import { Spinner } from '../loading';
import { MessageGenericAttachment } from './message/message-content/MessageGenericAttachment'; import { MessageGenericAttachment } from './message/message-content/MessageGenericAttachment';
import { useEncryptedFileFetch } from '../../hooks/useEncryptedFileFetch'; import { useEncryptedFileFetch } from '../../hooks/useEncryptedFileFetch';
import { useMessageIdFromContext } from '../../contexts/MessageIdContext'; import { useMessageIdFromContext } from '../../contexts/MessageIdContext';
import { import { useMessageDirection, useMessageSelected } from '../../state/selectors';
useMessageDirection,
useMessageSelected,
useMessageTimestamp,
} from '../../state/selectors';
import { AriaLabels } from '../../util/hardcodedAriaLabels'; import { AriaLabels } from '../../util/hardcodedAriaLabels';
type Props = { type Props = {
@ -76,16 +72,9 @@ export const Image = (props: Props) => {
const messageId = useMessageIdFromContext(); const messageId = useMessageIdFromContext();
const dropShadow = useMessageSelected(messageId); const dropShadow = useMessageSelected(messageId);
const direction = useMessageDirection(messageId); const direction = useMessageDirection(messageId);
/** used for debugging */
const timestamp = useMessageTimestamp(messageId);
const disableDrag = useDisableDrag(); const disableDrag = useDisableDrag();
const { loading, urlToLoad } = useEncryptedFileFetch( const { loading, urlToLoad } = useEncryptedFileFetch(url, attachment.contentType, false);
url,
attachment.contentType,
false,
timestamp
);
const { caption } = attachment || { caption: null }; const { caption } = attachment || { caption: null };
const [pending, setPending] = useState<boolean>(attachment.pending || true); const [pending, setPending] = useState<boolean>(attachment.pending || true);

@ -1,14 +1,12 @@
import { useCallback, useEffect, useState } from 'react'; import { useCallback, useEffect, useState } from 'react';
import { DecryptedAttachmentsManager } from '../session/crypto/DecryptedAttachmentsManager'; import { DecryptedAttachmentsManager } from '../session/crypto/DecryptedAttachmentsManager';
import { perfEnd, perfStart } from '../session/utils/Performance';
export const useEncryptedFileFetch = ( export const useEncryptedFileFetch = (
/** undefined if the message is not visible yet, url is '' if something is broken */ /** undefined if the message is not visible yet, url is '' if something is broken */
url: string | undefined, url: string | undefined,
contentType: string, contentType: string,
isAvatar: boolean, isAvatar: boolean
timestamp?: number
) => { ) => {
/** undefined if the attachment is not decrypted yet, '' if the attachment fails to decrypt */ /** undefined if the attachment is not decrypted yet, '' if the attachment fails to decrypt */
const [urlToLoad, setUrlToLoad] = useState<string | undefined>(undefined); const [urlToLoad, setUrlToLoad] = useState<string | undefined>(undefined);
@ -19,26 +17,15 @@ export const useEncryptedFileFetch = (
const fetchUrl = useCallback( const fetchUrl = useCallback(
async (mediaUrl: string | undefined) => { async (mediaUrl: string | undefined) => {
if (alreadyDecrypted || !mediaUrl) { if (alreadyDecrypted || !mediaUrl) {
if (alreadyDecrypted) { setUrlToLoad(alreadyDecrypted || '');
setUrlToLoad(alreadyDecrypted);
setLoading(false); setLoading(false);
}
return; return;
} }
setLoading(true); setLoading(true);
try { try {
perfStart(`getDecryptedMediaUrl-${mediaUrl}-${timestamp}`); const decryptedUrl = await DecryptedAttachmentsManager.getDecryptedMediaUrl(mediaUrl, contentType, isAvatar);
const decryptedUrl = await DecryptedAttachmentsManager.getDecryptedMediaUrl(
mediaUrl,
contentType,
isAvatar
);
perfEnd(
`getDecryptedMediaUrl-${mediaUrl}-${timestamp}`,
`getDecryptedMediaUrl-${mediaUrl}-${timestamp}`
);
setUrlToLoad(decryptedUrl); setUrlToLoad(decryptedUrl);
} catch (error) { } catch (error) {
setUrlToLoad(''); setUrlToLoad('');
@ -46,7 +33,7 @@ export const useEncryptedFileFetch = (
setLoading(false); setLoading(false);
} }
}, },
[alreadyDecrypted, contentType, isAvatar, timestamp] [alreadyDecrypted, contentType, isAvatar]
); );
useEffect(() => { useEffect(() => {

Loading…
Cancel
Save