mirror of
https://github.com/matrix-org/dendrite.git
synced 2025-12-26 08:13:09 -06:00
Update appserviceJoinedAtEvent
This commit is contained in:
parent
1b580b30b2
commit
f241ec581a
|
|
@ -130,19 +130,22 @@ func (s *OutputRoomEventConsumer) filterRoomserverEvents(
|
||||||
// appservice has membership at the time a given event was created.
|
// appservice has membership at the time a given event was created.
|
||||||
func (s *OutputRoomEventConsumer) appserviceJoinedAtEvent(ctx context.Context, event *gomatrixserverlib.HeaderedEvent, appservice config.ApplicationService) bool {
|
func (s *OutputRoomEventConsumer) appserviceJoinedAtEvent(ctx context.Context, event *gomatrixserverlib.HeaderedEvent, appservice config.ApplicationService) bool {
|
||||||
// Check if any of the members in the room match the appservice
|
// Check if any of the members in the room match the appservice
|
||||||
membershipReq := api.QueryStateAfterEventsRequest{
|
membershipReq := &api.QueryMembershipsForRoomRequest{
|
||||||
PrevEventIDs: []string{event.EventID()},
|
JoinedOnly: false,
|
||||||
RoomID: event.RoomID(),
|
RoomID: event.RoomID(),
|
||||||
}
|
}
|
||||||
var membershipRes api.QueryStateAfterEventsResponse
|
membershipRes := &api.QueryMembershipsForRoomResponse{}
|
||||||
|
|
||||||
// XXX: This could potentially race if the state for the event is not known yet
|
// XXX: This could potentially race if the state for the event is not known yet
|
||||||
// e.g. the event came over federation but we do not have the full state persisted.
|
// e.g. the event came over federation but we do not have the full state persisted.
|
||||||
if err := s.rsAPI.QueryStateAfterEvents(ctx, &membershipReq, &membershipRes); err == nil {
|
if err := s.rsAPI.QueryMembershipsForRoom(ctx, membershipReq, membershipRes); err == nil {
|
||||||
for _, ev := range membershipRes.StateEvents {
|
for _, ev := range membershipRes.JoinEvents {
|
||||||
if ev.Type() == gomatrixserverlib.MRoomMember {
|
if ev.Type == gomatrixserverlib.MRoomMember {
|
||||||
var membership, _ = ev.Membership()
|
var membership gomatrixserverlib.MemberContent
|
||||||
if membership == gomatrixserverlib.Join && appservice.IsInterestedInUserID(*ev.StateKey()) {
|
if err = json.Unmarshal(ev.Content, &membership); err != nil || ev.StateKey == nil {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if membership.Membership == gomatrixserverlib.Join && appservice.IsInterestedInUserID(*ev.StateKey) {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue