MCPcopy Create free account
hub / github.com/daodst/chat / loadStateAtEventIDs

Method loadStateAtEventIDs

roomserver/internal/query/query.go:493–524  ·  view source on GitHub ↗
(ctx context.Context, roomInfo *types.RoomInfo, eventIDs []string)

Source from the content-addressed store, hash-verified

491}
492
493func (r *Queryer) loadStateAtEventIDs(ctx context.Context, roomInfo *types.RoomInfo, eventIDs []string) ([]*gomatrixserverlib.Event, bool, error) {
494 roomState := state.NewStateResolution(r.DB, roomInfo)
495 prevStates, err := r.DB.StateAtEventIDs(ctx, eventIDs)
496 if err != nil {
497 switch err.(type) {
498 case types.MissingEventError:
499 return nil, false, nil
500 default:
501 return nil, false, err
502 }
503 }
504 // Currently only used on /state and /state_ids
505 rejected := false
506 for i := range prevStates {
507 if prevStates[i].IsRejected {
508 rejected = true
509 break
510 }
511 }
512
513 // Look up the currrent state for the requested tuples.
514 stateEntries, err := roomState.LoadCombinedStateAfterEvents(
515 ctx, prevStates,
516 )
517 if err != nil {
518 return nil, rejected, err
519 }
520
521 events, err := helpers.LoadStateEvents(ctx, r.DB, stateEntries)
522
523 return events, rejected, err
524}
525
526type eventsFromIDs func(context.Context, []string) ([]types.Event, error)
527

Callers 1

Calls 2

StateAtEventIDsMethod · 0.65

Tested by

no test coverage detected