binwiederhier 1 месяц назад
Родитель
Сommit
dffee9ea7d
3 измененных файлов с 9 добавлено и 15 удалено
  1. 4 0
      server/message_cache.go
  2. 4 4
      server/server.go
  3. 1 11
      server/types.go

+ 4 - 0
server/message_cache.go

@@ -773,6 +773,10 @@ func readMessage(rows *sql.Rows) (*message, error) {
 			URL:     attachmentURL,
 		}
 	}
+	// Clear SID if it equals ID (we do not want the SID in the message output)
+	if sid == id {
+		sid = ""
+	}
 	return &message{
 		ID:          id,
 		SID:         sid,

+ 4 - 4
server/server.go

@@ -877,7 +877,7 @@ func (s *Server) handlePublish(w http.ResponseWriter, r *http.Request, v *visito
 		return err
 	}
 	minc(metricMessagesPublishedSuccess)
-	return s.writeJSON(w, m.forJSON())
+	return s.writeJSON(w, m)
 }
 
 func (s *Server) handlePublishMatrix(w http.ResponseWriter, r *http.Request, v *visitor) error {
@@ -948,7 +948,7 @@ func (s *Server) handleDelete(w http.ResponseWriter, r *http.Request, v *visitor
 	s.mu.Lock()
 	s.messages++
 	s.mu.Unlock()
-	return s.writeJSON(w, m.forJSON())
+	return s.writeJSON(w, m)
 }
 
 func (s *Server) sendToFirebase(v *visitor, m *message) {
@@ -1340,7 +1340,7 @@ func (s *Server) handleBodyAsAttachment(r *http.Request, v *visitor, m *message,
 func (s *Server) handleSubscribeJSON(w http.ResponseWriter, r *http.Request, v *visitor) error {
 	encoder := func(msg *message) (string, error) {
 		var buf bytes.Buffer
-		if err := json.NewEncoder(&buf).Encode(msg.forJSON()); err != nil {
+		if err := json.NewEncoder(&buf).Encode(msg); err != nil {
 			return "", err
 		}
 		return buf.String(), nil
@@ -1351,7 +1351,7 @@ func (s *Server) handleSubscribeJSON(w http.ResponseWriter, r *http.Request, v *
 func (s *Server) handleSubscribeSSE(w http.ResponseWriter, r *http.Request, v *visitor) error {
 	encoder := func(msg *message) (string, error) {
 		var buf bytes.Buffer
-		if err := json.NewEncoder(&buf).Encode(msg.forJSON()); err != nil {
+		if err := json.NewEncoder(&buf).Encode(msg); err != nil {
 			return "", err
 		}
 		if msg.Event != messageEvent {

+ 1 - 11
server/types.go

@@ -64,16 +64,6 @@ func (m *message) Context() log.Context {
 	return fields
 }
 
-// forJSON returns a copy of the message prepared for JSON output.
-// It clears SID if it equals ID (to avoid redundant output).
-func (m *message) forJSON() *message {
-	msg := *m
-	if msg.SID == msg.ID {
-		msg.SID = "" // Will be omitted due to omitempty
-	}
-	return &msg
-}
-
 type attachment struct {
 	Name    string `json:"name"`
 	Type    string `json:"type,omitempty"`
@@ -560,7 +550,7 @@ func newWebPushPayload(subscriptionID string, message *message) *webPushPayload
 	return &webPushPayload{
 		Event:          webPushMessageEvent,
 		SubscriptionID: subscriptionID,
-		Message:        message.forJSON(),
+		Message:        message,
 	}
 }