aboutsummaryrefslogtreecommitdiff
path: root/syncapi/synctypes/clientevent.go
diff options
context:
space:
mode:
Diffstat (limited to 'syncapi/synctypes/clientevent.go')
-rw-r--r--syncapi/synctypes/clientevent.go35
1 files changed, 32 insertions, 3 deletions
diff --git a/syncapi/synctypes/clientevent.go b/syncapi/synctypes/clientevent.go
index 66fb1d01..358a0c97 100644
--- a/syncapi/synctypes/clientevent.go
+++ b/syncapi/synctypes/clientevent.go
@@ -55,18 +55,27 @@ func ToClientEvents(serverEvs []gomatrixserverlib.PDU, format ClientEventFormat,
if err == nil && userID != nil {
sender = *userID
}
- evs = append(evs, ToClientEvent(se, format, sender))
+
+ sk := se.StateKey()
+ if sk != nil && *sk != "" {
+ skUserID, err := userIDForSender(se.RoomID(), spec.SenderID(*sk))
+ if err == nil && skUserID != nil {
+ skString := skUserID.String()
+ sk = &skString
+ }
+ }
+ evs = append(evs, ToClientEvent(se, format, sender, sk))
}
return evs
}
// ToClientEvent converts a single server event to a client event.
-func ToClientEvent(se gomatrixserverlib.PDU, format ClientEventFormat, sender spec.UserID) ClientEvent {
+func ToClientEvent(se gomatrixserverlib.PDU, format ClientEventFormat, sender spec.UserID, stateKey *string) ClientEvent {
ce := ClientEvent{
Content: spec.RawJSON(se.Content()),
Sender: sender.String(),
Type: se.Type(),
- StateKey: se.StateKey(),
+ StateKey: stateKey,
Unsigned: spec.RawJSON(se.Unsigned()),
OriginServerTS: se.OriginServerTS(),
EventID: se.EventID(),
@@ -77,3 +86,23 @@ func ToClientEvent(se gomatrixserverlib.PDU, format ClientEventFormat, sender sp
}
return ce
}
+
+// ToClientEvent converts a single server event to a client event.
+// It provides default logic for event.SenderID & event.StateKey -> userID conversions.
+func ToClientEventDefault(userIDQuery spec.UserIDForSender, event gomatrixserverlib.PDU) ClientEvent {
+ sender := spec.UserID{}
+ userID, err := userIDQuery(event.RoomID(), event.SenderID())
+ if err == nil && userID != nil {
+ sender = *userID
+ }
+
+ sk := event.StateKey()
+ if sk != nil && *sk != "" {
+ skUserID, err := userIDQuery(event.RoomID(), spec.SenderID(*event.StateKey()))
+ if err == nil && skUserID != nil {
+ skString := skUserID.String()
+ sk = &skString
+ }
+ }
+ return ToClientEvent(event, FormatAll, sender, sk)
+}