Specify empty state keys, use EventLevel, remove unnecessary check on state copy

This commit is contained in:
Neil Alexander 2022-04-04 15:57:07 +01:00
parent a253aaf397
commit e211836f5a
No known key found for this signature in database
GPG key ID: A02A2019A2BB0944

View file

@ -302,11 +302,7 @@ func (r *Upgrader) userIsAuthorized(ctx context.Context, userID, roomID string,
} }
// Check for power level required to send tombstone event (marks the current room as obsolete), // Check for power level required to send tombstone event (marks the current room as obsolete),
// if not found, use the StateDefault power level // if not found, use the StateDefault power level
plToUpgrade, ok := pl.Events["m.room.tombstone"] return pl.UserLevel(userID) >= pl.EventLevel("m.room.tombstone", true)
if !ok {
plToUpgrade = pl.StateDefault
}
return pl.UserLevel(userID) >= plToUpgrade
} }
// nolint:gocyclo // nolint:gocyclo
@ -381,6 +377,7 @@ func (r *Upgrader) generateInitialEvents(ctx context.Context, userID, roomID, ne
} }
newCreateEvent := fledglingEvent{ newCreateEvent := fledglingEvent{
Type: gomatrixserverlib.MRoomCreate, Type: gomatrixserverlib.MRoomCreate,
StateKey: "",
Content: newCreateContent, Content: newCreateContent,
} }
@ -421,6 +418,7 @@ func (r *Upgrader) generateInitialEvents(ctx context.Context, userID, roomID, ne
} }
newJoinRulesEvent := fledglingEvent{ newJoinRulesEvent := fledglingEvent{
Type: gomatrixserverlib.MRoomJoinRules, Type: gomatrixserverlib.MRoomJoinRules,
StateKey: "",
Content: map[string]interface{}{ Content: map[string]interface{}{
"join_rule": joinRulesContent, "join_rule": joinRulesContent,
}, },
@ -446,12 +444,6 @@ func (r *Upgrader) generateInitialEvents(ctx context.Context, userID, roomID, ne
// are already in `eventsToMake`. // are already in `eventsToMake`.
continue continue
} }
if membership, merr := event.Membership(); merr == nil && membership != gomatrixserverlib.Ban {
// Don't duplicate membership events that aren't bans. Our own
// membership event has already been created above, and event auth
// won't let us create join membership events for other users.
continue
}
newEvent := fledglingEvent{ newEvent := fledglingEvent{
Type: tuple.EventType, Type: tuple.EventType,
StateKey: tuple.StateKey, StateKey: tuple.StateKey,