diff --git a/src/renderer/components/team/activity/ActivityTimeline.tsx b/src/renderer/components/team/activity/ActivityTimeline.tsx index 0516466d..505b9f2b 100644 --- a/src/renderer/components/team/activity/ActivityTimeline.tsx +++ b/src/renderer/components/team/activity/ActivityTimeline.tsx @@ -510,6 +510,9 @@ export const ActivityTimeline = React.memo(function ActivityTimeline({ (() => { const { group } = pinnedThoughtGroup; const firstThought = group.thoughts[0]; + const pinnedCanBeLive = currentLeadSessionId + ? firstThought.leadSessionId === currentLeadSessionId + : true; const info = memberInfo.get(firstThought.from); const itemKey = getThoughtGroupKey(group); const stableKey = itemKey; @@ -519,10 +522,10 @@ export const ActivityTimeline = React.memo(function ActivityTimeline({ key={itemKey} group={group} memberColor={info?.color} - canBeLive={true} - isTeamAlive={isTeamAlive} - leadActivity={leadActivity} - leadContextUpdatedAt={leadContextUpdatedAt} + canBeLive={pinnedCanBeLive} + isTeamAlive={pinnedCanBeLive ? isTeamAlive : undefined} + leadActivity={pinnedCanBeLive ? leadActivity : undefined} + leadContextUpdatedAt={pinnedCanBeLive ? leadContextUpdatedAt : undefined} isNew={newItemKeys.has(itemKey)} onVisible={onMessageVisible} zebraShade={zebraShadeSet.has(0)} @@ -591,9 +594,6 @@ export const ActivityTimeline = React.memo(function ActivityTimeline({ group={group} memberColor={info?.color} canBeLive={false} - isTeamAlive={isTeamAlive} - leadActivity={leadActivity} - leadContextUpdatedAt={leadContextUpdatedAt} isNew={newItemKeys.has(itemKey)} onVisible={onMessageVisible} zebraShade={zebraShadeSet.has(realIndex)} diff --git a/src/renderer/hooks/useStableTeamMentionMeta.ts b/src/renderer/hooks/useStableTeamMentionMeta.ts index 437df493..3137441f 100644 --- a/src/renderer/hooks/useStableTeamMentionMeta.ts +++ b/src/renderer/hooks/useStableTeamMentionMeta.ts @@ -12,18 +12,27 @@ interface TeamMentionEntry { deletedAt: string; } +function compareTeamMentionEntries(a: TeamMentionEntry, b: TeamMentionEntry): number { + return ( + a.teamName.localeCompare(b.teamName, undefined, { sensitivity: 'base' }) || + a.displayName.localeCompare(b.displayName, undefined, { sensitivity: 'base' }) + ); +} + export interface TeamMentionMeta { teamNames: string[]; teamColorByName: ReadonlyMap; } function buildTeamMentionEntries(teams: readonly TeamSummary[]): TeamMentionEntry[] { - return teams.map((team) => ({ - teamName: team.teamName ?? '', - displayName: team.displayName ?? '', - color: team.color ?? '', - deletedAt: team.deletedAt ?? '', - })); + return teams + .map((team) => ({ + teamName: team.teamName ?? '', + displayName: team.displayName ?? '', + color: team.color ?? '', + deletedAt: team.deletedAt ?? '', + })) + .sort(compareTeamMentionEntries); } function areTeamMentionEntriesEqual(