fix(rpc): sync preserve complete username projections

This commit is contained in:
iamxvbaba 2026-07-31 20:42:25 +08:00
parent 464d4edb4a
commit ee74d941bb
10 changed files with 411 additions and 22 deletions

View file

@ -36,11 +36,15 @@ func (r *Router) BuildOutboxUpdates(ctx context.Context, requests []OutboxUpdate
for i, item := range items {
update := tgUpdateForOutboxEventForViewer(events[i], viewerUserID)
if peers := storyUpdateEventPeers(events[i]); len(peers) > 0 {
update = r.withStoryUpdatePeerObjects(ctx, viewerUserID, update, peers...)
update = r.withStoryUpdatePeerObjectsForOutbox(ctx, viewerUserID, update, peers...)
}
out[item.index] = update
}
}
// Username rows are viewer-independent. Project the union once after every
// viewer-specific update has been built so one outbox claim never turns into
// a registry query per event/session.
r.applyUsernamesToUpdatesBatch(ctx, out)
return out
}