mirror of
https://github.com/hoernschen/dendrite.git
synced 2025-07-29 12:42:46 +00:00
Notify clients when devices are deleted (#1233)
* Recheck device lists when join/leave events come in * Add PerformDeviceDeletion * Notify clients when devices are deleted * Unbreak things * Remove debug logging
This commit is contained in:
parent
292a9ddd82
commit
a7e67e65a8
25 changed files with 183 additions and 47 deletions
|
@ -35,6 +35,7 @@ type OutputRoomEventConsumer struct {
|
|||
rsConsumer *internal.ContinualConsumer
|
||||
db storage.Database
|
||||
notifier *sync.Notifier
|
||||
keyChanges *OutputKeyChangeEventConsumer
|
||||
}
|
||||
|
||||
// NewOutputRoomEventConsumer creates a new OutputRoomEventConsumer. Call Start() to begin consuming from room servers.
|
||||
|
@ -44,6 +45,7 @@ func NewOutputRoomEventConsumer(
|
|||
n *sync.Notifier,
|
||||
store storage.Database,
|
||||
rsAPI api.RoomserverInternalAPI,
|
||||
keyChanges *OutputKeyChangeEventConsumer,
|
||||
) *OutputRoomEventConsumer {
|
||||
|
||||
consumer := internal.ContinualConsumer{
|
||||
|
@ -56,6 +58,7 @@ func NewOutputRoomEventConsumer(
|
|||
db: store,
|
||||
notifier: n,
|
||||
rsAPI: rsAPI,
|
||||
keyChanges: keyChanges,
|
||||
}
|
||||
consumer.ProcessMessage = s.onMessage
|
||||
|
||||
|
@ -160,9 +163,29 @@ func (s *OutputRoomEventConsumer) onNewRoomEvent(
|
|||
}
|
||||
s.notifier.OnNewEvent(&ev, "", nil, types.NewStreamToken(pduPos, 0, nil))
|
||||
|
||||
s.notifyKeyChanges(&ev)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *OutputRoomEventConsumer) notifyKeyChanges(ev *gomatrixserverlib.HeaderedEvent) {
|
||||
if ev.Type() != gomatrixserverlib.MRoomMember || ev.StateKey() == nil {
|
||||
return
|
||||
}
|
||||
membership, err := ev.Membership()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
switch membership {
|
||||
case gomatrixserverlib.Join:
|
||||
s.keyChanges.OnJoinEvent(ev)
|
||||
case gomatrixserverlib.Ban:
|
||||
fallthrough
|
||||
case gomatrixserverlib.Leave:
|
||||
s.keyChanges.OnLeaveEvent(ev)
|
||||
}
|
||||
}
|
||||
|
||||
func (s *OutputRoomEventConsumer) onNewInviteEvent(
|
||||
ctx context.Context, msg api.OutputNewInviteEvent,
|
||||
) error {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue