aboutsummaryrefslogtreecommitdiff
path: root/federationapi/producers
diff options
context:
space:
mode:
authorNeil Alexander <neilalexander@users.noreply.github.com>2022-06-15 14:27:07 +0100
committerGitHub <noreply@github.com>2022-06-15 14:27:07 +0100
commit7120eb6bc943af6f725b0c61cfd110330f04064a (patch)
treea7e278689e44b36eeefe01cd7b8ecb247119c940 /federationapi/producers
parent1b90cc95367947fa00616b4426d0c894b33c9862 (diff)
Add `InputDeviceListUpdate` to the keyserver, remove old input API (#2536)
* Add `InputDeviceListUpdate` to the keyserver, remove old input API * Fix copyright * Log more information when a device list update fails
Diffstat (limited to 'federationapi/producers')
-rw-r--r--federationapi/producers/syncapi.go17
1 files changed, 17 insertions, 0 deletions
diff --git a/federationapi/producers/syncapi.go b/federationapi/producers/syncapi.go
index 49415003..6453d026 100644
--- a/federationapi/producers/syncapi.go
+++ b/federationapi/producers/syncapi.go
@@ -17,6 +17,7 @@ package producers
import (
"context"
"encoding/json"
+ "fmt"
"strconv"
"time"
@@ -34,6 +35,7 @@ type SyncAPIProducer struct {
TopicSendToDeviceEvent string
TopicTypingEvent string
TopicPresenceEvent string
+ TopicDeviceListUpdate string
JetStream nats.JetStreamContext
ServerName gomatrixserverlib.ServerName
UserAPI userapi.UserInternalAPI
@@ -161,3 +163,18 @@ func (p *SyncAPIProducer) SendPresence(
_, err := p.JetStream.PublishMsg(m, nats.Context(ctx))
return err
}
+
+func (p *SyncAPIProducer) SendDeviceListUpdate(
+ ctx context.Context, deviceListUpdate *gomatrixserverlib.DeviceListUpdateEvent,
+) (err error) {
+ m := nats.NewMsg(p.TopicDeviceListUpdate)
+ m.Header.Set(jetstream.UserID, deviceListUpdate.UserID)
+ m.Data, err = json.Marshal(deviceListUpdate)
+ if err != nil {
+ return fmt.Errorf("json.Marshal: %w", err)
+ }
+
+ log.Debugf("Sending device list update: %+v", m.Header)
+ _, err = p.JetStream.PublishMsg(m, nats.Context(ctx))
+ return err
+}