mirror of
https://github.com/matrix-org/dendrite.git
synced 2025-12-17 03:43:11 -06:00
Handle invite types in membership updaters
This commit is contained in:
parent
5a17fb3dbb
commit
d236317878
1
go.mod
1
go.mod
|
|
@ -27,6 +27,7 @@ require (
|
||||||
github.com/pkg/errors v0.9.1
|
github.com/pkg/errors v0.9.1
|
||||||
github.com/prometheus/client_golang v1.4.1
|
github.com/prometheus/client_golang v1.4.1
|
||||||
github.com/sirupsen/logrus v1.4.2
|
github.com/sirupsen/logrus v1.4.2
|
||||||
|
github.com/tidwall/gjson v1.6.0
|
||||||
github.com/uber/jaeger-client-go v2.15.0+incompatible
|
github.com/uber/jaeger-client-go v2.15.0+incompatible
|
||||||
github.com/uber/jaeger-lib v1.5.0
|
github.com/uber/jaeger-lib v1.5.0
|
||||||
go.uber.org/atomic v1.4.0
|
go.uber.org/atomic v1.4.0
|
||||||
|
|
|
||||||
|
|
@ -266,7 +266,7 @@ func processInviteEvent(
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
outputUpdates, err := updateToInviteMembership(updater, event, inviteStrippedState, nil, input.Event.RoomVersion)
|
outputUpdates, err := updateToInviteMembership(updater, event, nil, input.Event.RoomVersion)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@ import (
|
||||||
"github.com/matrix-org/dendrite/roomserver/api"
|
"github.com/matrix-org/dendrite/roomserver/api"
|
||||||
"github.com/matrix-org/dendrite/roomserver/types"
|
"github.com/matrix-org/dendrite/roomserver/types"
|
||||||
"github.com/matrix-org/gomatrixserverlib"
|
"github.com/matrix-org/gomatrixserverlib"
|
||||||
|
"github.com/tidwall/gjson"
|
||||||
)
|
)
|
||||||
|
|
||||||
// updateMembership updates the current membership and the invites for each
|
// updateMembership updates the current membership and the invites for each
|
||||||
|
|
@ -112,8 +113,8 @@ func updateMembership(
|
||||||
}
|
}
|
||||||
|
|
||||||
switch newMembership {
|
switch newMembership {
|
||||||
//case gomatrixserverlib.Invite:
|
case gomatrixserverlib.Invite:
|
||||||
// return updateToInviteMembership(mu, add, updates, updater.RoomVersion())
|
return updateToInviteMembership(mu, *add, updates, updater.RoomVersion())
|
||||||
case gomatrixserverlib.Join:
|
case gomatrixserverlib.Join:
|
||||||
return updateToJoinMembership(mu, add, updates)
|
return updateToJoinMembership(mu, add, updates)
|
||||||
case gomatrixserverlib.Leave, gomatrixserverlib.Ban:
|
case gomatrixserverlib.Leave, gomatrixserverlib.Ban:
|
||||||
|
|
@ -128,7 +129,6 @@ func updateMembership(
|
||||||
func updateToInviteMembership(
|
func updateToInviteMembership(
|
||||||
mu types.MembershipUpdater,
|
mu types.MembershipUpdater,
|
||||||
add gomatrixserverlib.Event,
|
add gomatrixserverlib.Event,
|
||||||
addState json.RawMessage,
|
|
||||||
updates []api.OutputEvent,
|
updates []api.OutputEvent,
|
||||||
roomVersion gomatrixserverlib.RoomVersion,
|
roomVersion gomatrixserverlib.RoomVersion,
|
||||||
) ([]api.OutputEvent, error) {
|
) ([]api.OutputEvent, error) {
|
||||||
|
|
@ -141,6 +141,14 @@ func updateToInviteMembership(
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
if needsSending {
|
if needsSending {
|
||||||
|
// If there's any invite_room_state in the unsigned key from another
|
||||||
|
// homeserver then let's capture it.
|
||||||
|
var addState json.RawMessage
|
||||||
|
if unsigned := gjson.GetBytes(add.Unsigned(), "invite_room_state"); unsigned.Exists() {
|
||||||
|
if a, ok := unsigned.Value().([]byte); ok {
|
||||||
|
addState = a
|
||||||
|
}
|
||||||
|
}
|
||||||
// We notify the consumers using a special event even though we will
|
// We notify the consumers using a special event even though we will
|
||||||
// notify them about the change in current state as part of the normal
|
// notify them about the change in current state as part of the normal
|
||||||
// room event stream. This ensures that the consumers only have to
|
// room event stream. This ensures that the consumers only have to
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue