perf(renderer): pass composer member avatars
This commit is contained in:
parent
4d0f3d802b
commit
db2c82475b
2 changed files with 9 additions and 3 deletions
|
|
@ -26,6 +26,8 @@ interface MemberBadgeProps {
|
|||
teamName?: string;
|
||||
/** Avatar + badge size variant */
|
||||
size?: 'xs' | 'sm' | 'md';
|
||||
/** Pre-resolved avatar URL from a caller that already owns the member roster. */
|
||||
avatarUrl?: string;
|
||||
/** Hide the avatar icon, show only the name badge */
|
||||
hideAvatar?: boolean;
|
||||
onClick?: (name: string) => void;
|
||||
|
|
@ -59,6 +61,7 @@ export const MemberBadge = memo(
|
|||
color,
|
||||
teamName,
|
||||
size = 'sm',
|
||||
avatarUrl,
|
||||
hideAvatar,
|
||||
onClick,
|
||||
disableHoverCard,
|
||||
|
|
@ -66,7 +69,7 @@ export const MemberBadge = memo(
|
|||
const colors = getTeamColorSet(color ?? '');
|
||||
const { isLight } = useTheme();
|
||||
const effectiveAvatarTeamName = useStore((s) =>
|
||||
hideAvatar ? null : (teamName ?? s.selectedTeamName)
|
||||
hideAvatar || avatarUrl != null ? null : (teamName ?? s.selectedTeamName)
|
||||
);
|
||||
const teamMembers = useStore((s) =>
|
||||
effectiveAvatarTeamName
|
||||
|
|
@ -87,7 +90,7 @@ export const MemberBadge = memo(
|
|||
|
||||
const avatar = (
|
||||
<img
|
||||
src={avatarMap.get(name) ?? agentAvatarUrl(name, avatarSize)}
|
||||
src={avatarUrl ?? avatarMap.get(name) ?? agentAvatarUrl(name, avatarSize)}
|
||||
alt=""
|
||||
className={`${avatarClass} shrink-0 rounded-full bg-[var(--color-surface-raised)]`}
|
||||
loading="lazy"
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ import {
|
|||
validateAttachmentPayloadsForMember,
|
||||
} from '@renderer/utils/attachmentRecipientCapabilities';
|
||||
import { formatAgentRole } from '@renderer/utils/formatAgentRole';
|
||||
import { buildMemberColorMap } from '@renderer/utils/memberHelpers';
|
||||
import { buildMemberAvatarMap, buildMemberColorMap } from '@renderer/utils/memberHelpers';
|
||||
import { isOpenCodeRuntimeDeliveryHardUxFailureFromDebugDetails } from '@renderer/utils/openCodeRuntimeDeliveryDiagnostics';
|
||||
import { nameColorSet } from '@renderer/utils/projectColor';
|
||||
import { getSuggestedSlashCommandsForProvider } from '@renderer/utils/providerSlashCommands';
|
||||
|
|
@ -293,6 +293,7 @@ export const MessageComposer = ({
|
|||
const slashCommandDataEnabled = textHasSlashCommandTrigger;
|
||||
|
||||
const colorMap = useMemo(() => buildMemberColorMap(members), [members]);
|
||||
const avatarMap = useMemo(() => buildMemberAvatarMap(members), [members]);
|
||||
|
||||
const mentionSuggestions = useMemo<MentionSuggestion[]>(
|
||||
() =>
|
||||
|
|
@ -1129,6 +1130,7 @@ export const MessageComposer = ({
|
|||
name={recipient}
|
||||
color={selectedResolvedColor}
|
||||
size="sm"
|
||||
avatarUrl={avatarMap.get(recipient)}
|
||||
hideAvatar={recipient === 'user'}
|
||||
disableHoverCard
|
||||
/>
|
||||
|
|
@ -1207,6 +1209,7 @@ export const MessageComposer = ({
|
|||
name={m.name}
|
||||
color={resolvedColor}
|
||||
size="sm"
|
||||
avatarUrl={avatarMap.get(m.name)}
|
||||
hideAvatar={m.name === 'user'}
|
||||
disableHoverCard
|
||||
/>
|
||||
|
|
|
|||
Loading…
Reference in a new issue