chore: refresh gramsrv public release
This commit is contained in:
parent
75cebe8dbf
commit
70b6820474
1274 changed files with 378751 additions and 59919 deletions
50
internal/rpc/outbox_update_builder.go
Normal file
50
internal/rpc/outbox_update_builder.go
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
package rpc
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/gotd/td/tg"
|
||||
|
||||
"telesrv/internal/domain"
|
||||
)
|
||||
|
||||
// BuildOutboxUpdates 为在线 outbox worker 构造按接收者视角补全后的 updates。
|
||||
func (r *Router) BuildOutboxUpdates(ctx context.Context, requests []OutboxUpdateRequest) []*tg.Updates {
|
||||
out := make([]*tg.Updates, len(requests))
|
||||
if len(requests) == 0 {
|
||||
return out
|
||||
}
|
||||
cache := newViewerPeerCache(r)
|
||||
groups := make(map[int64][]outboxUpdateBuildItem)
|
||||
for i, req := range requests {
|
||||
viewerUserID := req.TargetUserID
|
||||
if viewerUserID == 0 {
|
||||
viewerUserID = req.Event.UserID
|
||||
}
|
||||
event := req.Event
|
||||
if event.UserID == 0 {
|
||||
event.UserID = viewerUserID
|
||||
}
|
||||
groups[viewerUserID] = append(groups[viewerUserID], outboxUpdateBuildItem{index: i, event: event})
|
||||
}
|
||||
for viewerUserID, items := range groups {
|
||||
events := make([]domain.UpdateEvent, len(items))
|
||||
for i, item := range items {
|
||||
events[i] = item.event
|
||||
}
|
||||
events = r.enrichUpdateEventsWithPeerCache(ctx, viewerUserID, events, cache)
|
||||
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...)
|
||||
}
|
||||
out[item.index] = update
|
||||
}
|
||||
}
|
||||
return out
|
||||
}
|
||||
|
||||
type outboxUpdateBuildItem struct {
|
||||
index int
|
||||
event domain.UpdateEvent
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue