mirror of
https://github.com/matrix-org/dendrite.git
synced 2025-12-29 01:33:10 -06:00
Add Setup method to PresenceStreamProvider
This commit is contained in:
parent
7003ae501d
commit
642ac3e4ad
|
|
@ -66,6 +66,7 @@ func NewSyncStreamProviders(
|
||||||
streams.SendToDeviceStreamProvider.Setup()
|
streams.SendToDeviceStreamProvider.Setup()
|
||||||
streams.AccountDataStreamProvider.Setup()
|
streams.AccountDataStreamProvider.Setup()
|
||||||
streams.DeviceListStreamProvider.Setup()
|
streams.DeviceListStreamProvider.Setup()
|
||||||
|
streams.PresenceDataStreamProdiver.Setup()
|
||||||
|
|
||||||
return streams
|
return streams
|
||||||
}
|
}
|
||||||
|
|
@ -79,5 +80,6 @@ func (s *Streams) Latest(ctx context.Context) types.StreamingToken {
|
||||||
SendToDevicePosition: s.SendToDeviceStreamProvider.LatestPosition(ctx),
|
SendToDevicePosition: s.SendToDeviceStreamProvider.LatestPosition(ctx),
|
||||||
AccountDataPosition: s.AccountDataStreamProvider.LatestPosition(ctx),
|
AccountDataPosition: s.AccountDataStreamProvider.LatestPosition(ctx),
|
||||||
DeviceListPosition: s.DeviceListStreamProvider.LatestPosition(ctx),
|
DeviceListPosition: s.DeviceListStreamProvider.LatestPosition(ctx),
|
||||||
|
PresenceDataPosition: s.PresenceDataStreamProdiver.LatestPosition(ctx),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -15,8 +15,17 @@ type PresenceStreamProvider struct {
|
||||||
UserAPI userapi.UserInternalAPI
|
UserAPI userapi.UserInternalAPI
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (p *PresenceStreamProvider) Setup() {
|
||||||
|
p.StreamProvider.Setup()
|
||||||
|
|
||||||
|
res := userapi.QueryMaxPresenceIDResponse{}
|
||||||
|
if err := p.UserAPI.QueryMaxPresenceID(context.Background(), &userapi.QueryMaxPresenceIDRequest{}, &res); err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
p.latest = types.StreamPosition(res.ID)
|
||||||
|
}
|
||||||
|
|
||||||
func (p *PresenceStreamProvider) CompleteSync(ctx context.Context, req *types.SyncRequest) types.StreamPosition {
|
func (p *PresenceStreamProvider) CompleteSync(ctx context.Context, req *types.SyncRequest) types.StreamPosition {
|
||||||
req.Log.Debug(" CompleteSyncrequested for presence!")
|
|
||||||
return p.IncrementalSync(ctx, req, 0, p.LatestPosition(ctx))
|
return p.IncrementalSync(ctx, req, 0, p.LatestPosition(ctx))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -34,6 +43,9 @@ func (p *PresenceStreamProvider) IncrementalSync(ctx context.Context, req *types
|
||||||
req.Log.WithError(err).Error("unable to fetch presence after")
|
req.Log.WithError(err).Error("unable to fetch presence after")
|
||||||
return from
|
return from
|
||||||
}
|
}
|
||||||
|
if len(res.Presences) == 0 {
|
||||||
|
return to
|
||||||
|
}
|
||||||
evs := []gomatrixserverlib.ClientEvent{}
|
evs := []gomatrixserverlib.ClientEvent{}
|
||||||
var maxPos int64
|
var maxPos int64
|
||||||
for _, presence := range res.Presences {
|
for _, presence := range res.Presences {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue