Delete user profile in new consumer

This commit is contained in:
Till Faelligen 2022-10-05 09:04:02 +02:00
parent f3b9514f18
commit ccef3b00b7
No known key found for this signature in database
GPG key ID: 3DF82D8AB9211D4E

View file

@ -103,9 +103,31 @@ func (s *OutputRoomEventConsumer) onMessage(ctx context.Context, msgs []*nats.Ms
}).WithError(err).Errorf("userapi consumer: process room event failure")
}
if err := s.deleteProfile(ctx, event); err != nil {
log.WithFields(log.Fields{
"event_id": event.EventID(),
}).WithError(err).WithField("user_id", *event.StateKey()).Warn("userapi consumer: failed to delete user profile")
}
return true
}
func (s *OutputRoomEventConsumer) deleteProfile(ctx context.Context, event *gomatrixserverlib.HeaderedEvent) error {
if event.Type() != gomatrixserverlib.MRoomMember || event.StateKey() == nil {
return nil
}
localPart, domain, err := gomatrixserverlib.SplitID('@', *event.StateKey())
if err != nil {
return nil
}
// Profiles from ourselves are updated by API calls, don't delete them.
if domain == s.cfg.Matrix.ServerName {
return nil
}
log.WithField("user_id", *event.StateKey()).Debug("Deleting remote user profile")
return s.db.DeleteProfile(ctx, localPart, domain)
}
func (s *OutputRoomEventConsumer) processMessage(ctx context.Context, event *gomatrixserverlib.HeaderedEvent, streamPos uint64) error {
members, roomSize, err := s.localRoomMembers(ctx, event.RoomID())
if err != nil {