From b3742f722a333579c945696e0e90ed8c6ac5d4fd Mon Sep 17 00:00:00 2001 From: ad Date: Tue, 30 Apr 2024 12:34:28 +0300 Subject: [PATCH] removed assertions, optimized parsing --- syncapi/consumers/roomserver.go | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/syncapi/consumers/roomserver.go b/syncapi/consumers/roomserver.go index 8dc40d7f7..55d7c24ac 100644 --- a/syncapi/consumers/roomserver.go +++ b/syncapi/consumers/roomserver.go @@ -601,9 +601,11 @@ func (s *OutputRoomEventConsumer) writeFTS(ev *rstypes.HeaderedEvent, pduPositio } e.SetContentType(ev.Type()) + var relatesTo gjson.Result switch ev.Type() { case "m.room.message": e.Content = gjson.GetBytes(ev.Content(), "body").String() + relatesTo = gjson.GetBytes(ev.Content(), "m\\.relates_to") case spec.MRoomName: e.Content = gjson.GetBytes(ev.Content(), "name").String() case spec.MRoomTopic: @@ -624,13 +626,12 @@ func (s *OutputRoomEventConsumer) writeFTS(ev *rstypes.HeaderedEvent, pduPositio } // If the event is an edited message we remove the original event from the index // to avoid duplicates in the search results. - relatesTo := gjson.GetBytes(ev.Content(), "m\\.relates_to") if relatesTo.Exists() { - relatedData := relatesTo.Value().(map[string]interface{}) - if _, ok := relatedData["rel_type"]; ok && relatedData["rel_type"] == "m.replace" { + relatedData := relatesTo.Map() + if _, ok := relatedData["rel_type"]; ok && relatedData["rel_type"].Str == "m.replace" { // We remove the original event from the index if srcEventID, ok := relatedData["event_id"]; ok { - if err := s.fts.Delete(srcEventID.(string)); err != nil { + if err := s.fts.Delete(srcEventID.Str); err != nil { log.WithFields(log.Fields{ "event_id": ev.EventID(), "src_id": srcEventID,