mirror of
https://github.com/hoernschen/dendrite.git
synced 2025-07-31 13:22:46 +00:00
refactor: update GMSL (#3058)
Sister PR to https://github.com/matrix-org/gomatrixserverlib/pull/364 Read this commit by commit to avoid going insane.
This commit is contained in:
parent
9fa39263c0
commit
72285b2659
306 changed files with 2117 additions and 1934 deletions
|
@ -20,6 +20,7 @@ import (
|
|||
"time"
|
||||
|
||||
"github.com/matrix-org/gomatrixserverlib"
|
||||
"github.com/matrix-org/gomatrixserverlib/spec"
|
||||
"github.com/prometheus/client_golang/prometheus"
|
||||
"github.com/sirupsen/logrus"
|
||||
"github.com/tidwall/gjson"
|
||||
|
@ -50,7 +51,7 @@ var calculateHistoryVisibilityDuration = prometheus.NewHistogramVec(
|
|||
)
|
||||
|
||||
var historyVisibilityPriority = map[gomatrixserverlib.HistoryVisibility]uint8{
|
||||
gomatrixserverlib.WorldReadable: 0,
|
||||
spec.WorldReadable: 0,
|
||||
gomatrixserverlib.HistoryVisibilityShared: 1,
|
||||
gomatrixserverlib.HistoryVisibilityInvited: 2,
|
||||
gomatrixserverlib.HistoryVisibilityJoined: 3,
|
||||
|
@ -72,23 +73,23 @@ func (ev eventVisibility) allowed() (allowed bool) {
|
|||
return true
|
||||
case gomatrixserverlib.HistoryVisibilityJoined:
|
||||
// If the user’s membership was join, allow.
|
||||
if ev.membershipAtEvent == gomatrixserverlib.Join {
|
||||
if ev.membershipAtEvent == spec.Join {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
case gomatrixserverlib.HistoryVisibilityShared:
|
||||
// If the user’s membership was join, allow.
|
||||
// If history_visibility was set to shared, and the user joined the room at any point after the event was sent, allow.
|
||||
if ev.membershipAtEvent == gomatrixserverlib.Join || ev.membershipCurrent == gomatrixserverlib.Join {
|
||||
if ev.membershipAtEvent == spec.Join || ev.membershipCurrent == spec.Join {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
case gomatrixserverlib.HistoryVisibilityInvited:
|
||||
// If the user’s membership was join, allow.
|
||||
if ev.membershipAtEvent == gomatrixserverlib.Join {
|
||||
if ev.membershipAtEvent == spec.Join {
|
||||
return true
|
||||
}
|
||||
if ev.membershipAtEvent == gomatrixserverlib.Invite {
|
||||
if ev.membershipAtEvent == spec.Invite {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
|
@ -132,7 +133,7 @@ func ApplyHistoryVisibilityFilter(
|
|||
}
|
||||
}
|
||||
// NOTSPEC: Always allow user to see their own membership events (spec contains more "rules")
|
||||
if ev.Type() == gomatrixserverlib.MRoomMember && ev.StateKeyEquals(userID) {
|
||||
if ev.Type() == spec.MRoomMember && ev.StateKeyEquals(userID) {
|
||||
eventsFiltered = append(eventsFiltered, ev)
|
||||
continue
|
||||
}
|
||||
|
@ -195,7 +196,7 @@ func visibilityForEvents(
|
|||
for _, event := range events {
|
||||
eventID := event.EventID()
|
||||
vis := eventVisibility{
|
||||
membershipAtEvent: gomatrixserverlib.Leave, // default to leave, to not expose events by accident
|
||||
membershipAtEvent: spec.Leave, // default to leave, to not expose events by accident
|
||||
visibility: event.Visibility,
|
||||
}
|
||||
ev, ok := membershipResp.Membership[eventID]
|
||||
|
|
|
@ -20,6 +20,7 @@ import (
|
|||
|
||||
keytypes "github.com/matrix-org/dendrite/userapi/types"
|
||||
"github.com/matrix-org/gomatrixserverlib"
|
||||
"github.com/matrix-org/gomatrixserverlib/spec"
|
||||
"github.com/matrix-org/util"
|
||||
"github.com/sirupsen/logrus"
|
||||
"github.com/tidwall/gjson"
|
||||
|
@ -159,7 +160,7 @@ func TrackChangedUsers(
|
|||
RoomIDs: newlyLeftRooms,
|
||||
StateTuples: []gomatrixserverlib.StateKeyTuple{
|
||||
{
|
||||
EventType: gomatrixserverlib.MRoomMember,
|
||||
EventType: spec.MRoomMember,
|
||||
StateKey: "*",
|
||||
},
|
||||
},
|
||||
|
@ -170,7 +171,7 @@ func TrackChangedUsers(
|
|||
}
|
||||
for _, state := range stateRes.Rooms {
|
||||
for tuple, membership := range state {
|
||||
if membership != gomatrixserverlib.Join {
|
||||
if membership != spec.Join {
|
||||
continue
|
||||
}
|
||||
queryRes.UserIDsToCount[tuple.StateKey]--
|
||||
|
@ -201,7 +202,7 @@ func TrackChangedUsers(
|
|||
RoomIDs: newlyJoinedRooms,
|
||||
StateTuples: []gomatrixserverlib.StateKeyTuple{
|
||||
{
|
||||
EventType: gomatrixserverlib.MRoomMember,
|
||||
EventType: spec.MRoomMember,
|
||||
StateKey: "*",
|
||||
},
|
||||
},
|
||||
|
@ -212,7 +213,7 @@ func TrackChangedUsers(
|
|||
}
|
||||
for _, state := range stateRes.Rooms {
|
||||
for tuple, membership := range state {
|
||||
if membership != gomatrixserverlib.Join {
|
||||
if membership != spec.Join {
|
||||
continue
|
||||
}
|
||||
// new user who we weren't previously sharing rooms with
|
||||
|
@ -283,7 +284,7 @@ func membershipEventPresent(events []synctypes.ClientEvent, userID string) bool
|
|||
for _, ev := range events {
|
||||
// it's enough to know that we have our member event here, don't need to check membership content
|
||||
// as it's implied by being in the respective section of the sync response.
|
||||
if ev.Type == gomatrixserverlib.MRoomMember && ev.StateKey != nil && *ev.StateKey == userID {
|
||||
if ev.Type == spec.MRoomMember && ev.StateKey != nil && *ev.StateKey == userID {
|
||||
// ignore e.g. join -> join changes
|
||||
if gjson.GetBytes(ev.Unsigned, "prev_content.membership").Str == gjson.GetBytes(ev.Content, "membership").Str {
|
||||
continue
|
||||
|
@ -302,7 +303,7 @@ func membershipEventPresent(events []synctypes.ClientEvent, userID string) bool
|
|||
func membershipEvents(res *types.Response) (joinUserIDs, leaveUserIDs []string) {
|
||||
for _, room := range res.Rooms.Join {
|
||||
for _, ev := range room.Timeline.Events {
|
||||
if ev.Type == gomatrixserverlib.MRoomMember && ev.StateKey != nil {
|
||||
if ev.Type == spec.MRoomMember && ev.StateKey != nil {
|
||||
if strings.Contains(string(ev.Content), `"join"`) {
|
||||
joinUserIDs = append(joinUserIDs, *ev.StateKey)
|
||||
} else if strings.Contains(string(ev.Content), `"invite"`) {
|
||||
|
|
|
@ -7,6 +7,7 @@ import (
|
|||
"testing"
|
||||
|
||||
"github.com/matrix-org/gomatrixserverlib"
|
||||
"github.com/matrix-org/gomatrixserverlib/spec"
|
||||
"github.com/matrix-org/util"
|
||||
|
||||
"github.com/matrix-org/dendrite/roomserver/api"
|
||||
|
@ -76,12 +77,12 @@ func (s *mockRoomserverAPI) QueryRoomsForUser(ctx context.Context, req *api.Quer
|
|||
// QueryBulkStateContent does a bulk query for state event content in the given rooms.
|
||||
func (s *mockRoomserverAPI) QueryBulkStateContent(ctx context.Context, req *api.QueryBulkStateContentRequest, res *api.QueryBulkStateContentResponse) error {
|
||||
res.Rooms = make(map[string]map[gomatrixserverlib.StateKeyTuple]string)
|
||||
if req.AllowWildcards && len(req.StateTuples) == 1 && req.StateTuples[0].EventType == gomatrixserverlib.MRoomMember && req.StateTuples[0].StateKey == "*" {
|
||||
if req.AllowWildcards && len(req.StateTuples) == 1 && req.StateTuples[0].EventType == spec.MRoomMember && req.StateTuples[0].StateKey == "*" {
|
||||
for _, roomID := range req.RoomIDs {
|
||||
res.Rooms[roomID] = make(map[gomatrixserverlib.StateKeyTuple]string)
|
||||
for _, userID := range s.roomIDToJoinedMembers[roomID] {
|
||||
res.Rooms[roomID][gomatrixserverlib.StateKeyTuple{
|
||||
EventType: gomatrixserverlib.MRoomMember,
|
||||
EventType: spec.MRoomMember,
|
||||
StateKey: userID,
|
||||
}] = "join"
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue