A dead avatar URL rendered a permanent broken image instead of initials

Fixkamo-meet
Ya
5 Agosti 2026, 01:43 UTC
Mwandishi
Kamo
Ahadi ya
a73117b

A participant whose photo is missing from storage showed a broken-image icon to everyone else in the call, forever — it never degraded to initials. Upstream can render _loadableAvatarUrl unconditionally because that value is only ever set after getFirstLoadableAvatarUrl() has successfully preloaded it. This fork removed that guarantee on both sides: the participants middleware sets it straight from the JWT when disableThirdPartyRequests is on (no preload), and _mapStateToProps falls back to the raw avatarURL. So an unvalidated URL now reaches the component. When the avatar comes from redux rather than an explicit `url` prop, `useReduxLoadableAvatarURL` is already true, so setting avatarFailed did not change `effectiveURL` — render produced the same failing <img> again, and StatelessAvatar only reaches its initials branch when the url is falsy. Remember which URL failed and skip it, so the fallback actually happens. Also reset the failure state when _loadableAvatarUrl changes, not just `url`. Found via a real meet: one participant's photo is recorded in the DB (avatars.file_hash, is_active) but the object does not exist in MinIO, so **************** returns 404. 4 of 25 active photo avatars are orphaned that way.

Mabadiliko yote

Je, unaona nini kuhusu usafiri?

Kila moja ya hizi updates ardhi katika nafasi yako ya kazi moja kwa moja. Kuanza bure na kuangalia kukua wiki baada ya wiki.

Kuwa Huru MileleMtazamo wa bei