Skip to content

Commit

Site: a project's activity names people, not their account ids

The project overview listed the log's actors as they are stored, so a comment made through the API read "usr_… commented on #24". It now looks the ids up by name in one call, as mission control does.

syntaqxcommitted Parent1268854Browse files
1 file+8−20/1 viewed
+8−2
6060 type PipelineStage,
6161 PIPELINE,
6262 TIME,
63+ actorIds,
6364 ageBuckets,
6465 eventItem,
6566 firstPassRate,
6667 groupActivity,
68+ nameActor,
6769 passRate,
6870 pipelineStage,
6971 queuedNumbers,
8789 } from "../../lib/project-kind";
8890 import { AboutEditor, KindMenu, LinkList } from "../../components/project-about";
8991 import { DocsHead, ElsewhereHead, type ExternalDeployment, OtherHead, WhereItRuns } from "../../components/project-head";
90−import { actions, agents, deployments, events as eventLog, packages, projects, repos, work } from "../../lib/services.server";
92+import { actions, agents, deployments, events as eventLog, identity, packages, projects, repos, work } from "../../lib/services.server";
9193 import { madeByG1t } from "../../lib/opened-by";
9294 import { assertSameOrigin, getViewer, requireUser } from "../../lib/session.server";
9395 import { accessTo, countsFor, refusal, repoFor } from "../../lib/access.server";
323325
324326 // --- Activity and health -------------------------------------------------------
325327 const eventList: G1tEvent[] = recent ?? [];
326− const items = eventList
328+ const logged = eventList
327329 .map((event) => eventItem(event, path))
328330 .filter((item): item is ActivityItem => item != null);
331+ // The log names people by account id: their usernames, in one lookup.
332+ const ids = actorIds(logged.map((item) => item.actor));
333+ const names = ids.length > 0 ? await soft(identity.usernames(ids)) : {};
334+ const items = logged.map((item) => ({ ...item, actor: nameActor(item.actor, names) }));
329335 const checkEvents = eventList.flatMap((event) =>
330336 event.type === "checks.completed" ? [{ repo: "", number: event.data.number, at: Date.parse(event.time), passed: event.data.status === "passed" }] : [],
331337 );