Fix gradient showing instead of placeholder when Avatar URL loading fails

This commit is contained in:
yash-signal
2025-03-31 15:16:44 -05:00
committed by GitHub
parent b4b3210f47
commit 3b91f6d00e
2 changed files with 8 additions and 5 deletions

View File

@@ -64,7 +64,9 @@ const createProps = (overrideProps: Partial<Props> = {}): Props => ({
blur: overrideProps.blur,
color: overrideProps.color || AvatarColors[0],
conversationType: overrideProps.conversationType || 'direct',
hasAvatar: Boolean(overrideProps.hasAvatar),
hasAvatar:
Boolean(overrideProps.hasAvatar) ||
(overrideProps.avatarUrl != null && overrideProps.avatarUrl.length > 0),
i18n,
loading: Boolean(overrideProps.loading),
noteToSelf: Boolean(overrideProps.noteToSelf),

View File

@@ -144,9 +144,10 @@ export function Avatar({
}, [avatarUrl]);
const initials = getInitials(title);
const hasImage = !noteToSelf && avatarUrl && !imageBroken;
const hasLocalImage = !noteToSelf && avatarUrl && avatarUrl.length > 0;
const hasValidImage = hasLocalImage && !imageBroken;
const shouldUseInitials =
!hasImage &&
!hasValidImage &&
conversationType === 'direct' &&
Boolean(initials) &&
title !== i18n('icu:unknownContact');
@@ -163,7 +164,7 @@ export function Avatar({
/>
</div>
);
} else if (hasImage) {
} else if (hasValidImage) {
assertDev(avatarUrl, 'avatarUrl should be defined here');
assertDev(
@@ -207,7 +208,7 @@ export function Avatar({
)}
/>
);
} else if (hasAvatar && !hasImage) {
} else if (hasAvatar && !hasLocalImage) {
contentsChildren = (
<>
<div