From 7ed3f2676a618a3e3c75d7fc73fb453fbfdccdd6 Mon Sep 17 00:00:00 2001 From: Neil Alexander Date: Fri, 11 Dec 2020 11:10:46 +0000 Subject: [PATCH] Fix MarshalText as non-pointer, PrevBatch is optional --- syncapi/storage/shared/syncserver.go | 10 +++++----- syncapi/types/types.go | 8 ++++---- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/syncapi/storage/shared/syncserver.go b/syncapi/storage/shared/syncserver.go index 69dcf4d11..6d88a56e5 100644 --- a/syncapi/storage/shared/syncserver.go +++ b/syncapi/storage/shared/syncserver.go @@ -880,14 +880,14 @@ func (d *Database) getJoinResponseForCompleteSync( // Retrieve the backward topology position, i.e. the position of the // oldest event in the room's topology. - var prevBatch types.TopologyToken + var prevBatch *types.TopologyToken if len(recentStreamEvents) > 0 { var backwardTopologyPos, backwardStreamPos types.StreamPosition backwardTopologyPos, backwardStreamPos, err = d.Topology.SelectPositionInTopology(ctx, txn, recentStreamEvents[0].EventID()) if err != nil { return } - prevBatch = types.TopologyToken{ + prevBatch = &types.TopologyToken{ Depth: backwardTopologyPos, PDUPosition: backwardStreamPos, } @@ -1028,7 +1028,7 @@ func (d *Database) addRoomDeltaToResponse( case gomatrixserverlib.Join: jr := types.NewJoinResponse() - jr.Timeline.PrevBatch = prevBatch + jr.Timeline.PrevBatch = &prevBatch jr.Timeline.Events = gomatrixserverlib.HeaderedToClientEvents(recentEvents, gomatrixserverlib.FormatSync) jr.Timeline.Limited = limited jr.State.Events = gomatrixserverlib.HeaderedToClientEvents(delta.stateEvents, gomatrixserverlib.FormatSync) @@ -1036,7 +1036,7 @@ func (d *Database) addRoomDeltaToResponse( case gomatrixserverlib.Peek: jr := types.NewJoinResponse() - jr.Timeline.PrevBatch = prevBatch + jr.Timeline.PrevBatch = &prevBatch jr.Timeline.Events = gomatrixserverlib.HeaderedToClientEvents(recentEvents, gomatrixserverlib.FormatSync) jr.Timeline.Limited = limited jr.State.Events = gomatrixserverlib.HeaderedToClientEvents(delta.stateEvents, gomatrixserverlib.FormatSync) @@ -1047,7 +1047,7 @@ func (d *Database) addRoomDeltaToResponse( // TODO: recentEvents may contain events that this user is not allowed to see because they are // no longer in the room. lr := types.NewLeaveResponse() - lr.Timeline.PrevBatch = prevBatch + lr.Timeline.PrevBatch = &prevBatch lr.Timeline.Events = gomatrixserverlib.HeaderedToClientEvents(recentEvents, gomatrixserverlib.FormatSync) lr.Timeline.Limited = false // TODO: if len(events) >= numRecents + 1 and then set limited:true lr.State.Events = gomatrixserverlib.HeaderedToClientEvents(delta.stateEvents, gomatrixserverlib.FormatSync) diff --git a/syncapi/types/types.go b/syncapi/types/types.go index 1bd5aabf0..b9e1cd0bd 100644 --- a/syncapi/types/types.go +++ b/syncapi/types/types.go @@ -114,7 +114,7 @@ type StreamingToken struct { } // This will be used as a fallback by json.Marshal. -func (t *StreamingToken) MarshalText() ([]byte, error) { +func (t StreamingToken) MarshalText() ([]byte, error) { return []byte(t.String()), nil } @@ -222,7 +222,7 @@ type TopologyToken struct { } // This will be used as a fallback by json.Marshal. -func (t *TopologyToken) MarshalText() ([]byte, error) { +func (t TopologyToken) MarshalText() ([]byte, error) { return []byte(t.String()), nil } @@ -422,7 +422,7 @@ type JoinResponse struct { Timeline struct { Events []gomatrixserverlib.ClientEvent `json:"events"` Limited bool `json:"limited"` - PrevBatch TopologyToken `json:"prev_batch"` + PrevBatch *TopologyToken `json:"prev_batch,omitempty"` } `json:"timeline"` Ephemeral struct { Events []gomatrixserverlib.ClientEvent `json:"events"` @@ -480,7 +480,7 @@ type LeaveResponse struct { Timeline struct { Events []gomatrixserverlib.ClientEvent `json:"events"` Limited bool `json:"limited"` - PrevBatch TopologyToken `json:"prev_batch"` + PrevBatch *TopologyToken `json:"prev_batch,omitempty"` } `json:"timeline"` }