Show talk-circle partners and topic on the location panel and Now tab.

The frame and card share member ids; the client builds the sentence from the directory and locale.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Leonid Pershin
2026-08-20 10:43:16 +03:00
co-authored by Cursor
parent 1a21a64b4b
commit 2034946378
20 changed files with 356 additions and 30 deletions
+5 -1
View File
@@ -60,6 +60,8 @@ internal static class PersonCardReader
activityLabel = activityId;
}
var circle = school.TalkCircleOf(personId);
return new PersonCardResponse(
person.Id,
person.Name.Full,
@@ -89,7 +91,9 @@ internal static class PersonCardReader
person.LockerRoomId is not null
|| person.Items.Any(item => item.Location.Equals(ItemLocations.Locker, StringComparison.Ordinal)),
person.Items.Count(item => item.Location.Equals(ItemLocations.Home, StringComparison.Ordinal)),
Connections: Connections(roster, person, catalog, locale));
Connections: Connections(roster, person, catalog, locale),
TalkCircleMemberIds: circle?.MemberIds ?? [],
TalkTopicId: circle?.TopicId);
}
private static IReadOnlyDictionary<string, float>? LiveNeeds(World world, string personId)