- Ya
- 22 Julai 2026, 19:54 UTC
- Mwandishi
- kamo
- Ahadi ya
- 78f0849
The small avatar icons in a chat popup — the per-message sender avatar (MessageBubble) and the seen-receipt list (SeenIndicator) — all read SessionMember.avatarUrl, which MediaService deliberately returns as null on every session-member payload **************** because avatars are a SecurityService concern. Clients are expected to fill them in from the member directory, and chat-core ships fetchMemberAvatarMap for exactly that purpose — its doc states "both mobile and kamo-internal fill it from this directory". kamo-internal had zero callers, so avatarUrl stayed null forever and every in-window member icon rendered as an empty MUI Avatar. NavTopPanel already builds the same map for the Chats tab, which is why member photos show up there but not inside the chat window itself. Resolve the map once per page (cached as a promise so N windows opening at once share one directory fetch) and overlay it onto the session members in useChatConversation, the single point every consumer reads members from. Sized to 'sm' for these 16-24px icons; media-core's sizing is idempotent so consumers that size again are unaffected, and a member with no photo keeps a null avatarUrl and falls back to initials.