Make displayname pushrule check possible without loading room state
This commit is contained in:
parent
2b7d5d5401
commit
1ea6ba026a
@ -73,6 +73,7 @@ type Room struct {
|
|||||||
PrevBatch string
|
PrevBatch string
|
||||||
// The MXID of the user whose session this room was created for.
|
// The MXID of the user whose session this room was created for.
|
||||||
SessionUserID string
|
SessionUserID string
|
||||||
|
SessionMember *mautrix.Member
|
||||||
|
|
||||||
// The number of unread messages that were notified about.
|
// The number of unread messages that were notified about.
|
||||||
UnreadMessages []UnreadMessage
|
UnreadMessages []UnreadMessage
|
||||||
@ -362,8 +363,11 @@ func (room *Room) UpdateState(event *mautrix.Event) {
|
|||||||
}
|
}
|
||||||
room.aliasesCache = nil
|
room.aliasesCache = nil
|
||||||
case mautrix.StateMember:
|
case mautrix.StateMember:
|
||||||
if room.memberCache != nil {
|
|
||||||
userID := event.GetStateKey()
|
userID := event.GetStateKey()
|
||||||
|
if userID == room.SessionUserID {
|
||||||
|
room.SessionMember = room.eventToMember(userID, &event.Content)
|
||||||
|
}
|
||||||
|
if room.memberCache != nil {
|
||||||
if event.Content.Membership == mautrix.MembershipLeave || event.Content.Membership == mautrix.MembershipBan {
|
if event.Content.Membership == mautrix.MembershipLeave || event.Content.Membership == mautrix.MembershipBan {
|
||||||
delete(room.memberCache, userID)
|
delete(room.memberCache, userID)
|
||||||
} else if event.Content.Membership == mautrix.MembershipInvite || event.Content.Membership == mautrix.MembershipJoin {
|
} else if event.Content.Membership == mautrix.MembershipInvite || event.Content.Membership == mautrix.MembershipJoin {
|
||||||
@ -567,6 +571,9 @@ func (room *Room) createMemberCache() map[string]*mautrix.Member {
|
|||||||
cache[userID] = member
|
cache[userID] = member
|
||||||
room.updateNthMemberCache(userID, member)
|
room.updateNthMemberCache(userID, member)
|
||||||
}
|
}
|
||||||
|
if userID == room.SessionUserID {
|
||||||
|
room.SessionMember = member
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
room.lock.RUnlock()
|
room.lock.RUnlock()
|
||||||
@ -589,6 +596,9 @@ func (room *Room) GetMembers() map[string]*mautrix.Member {
|
|||||||
// GetMember returns the member with the given MXID.
|
// GetMember returns the member with the given MXID.
|
||||||
// If the member doesn't exist, nil is returned.
|
// If the member doesn't exist, nil is returned.
|
||||||
func (room *Room) GetMember(userID string) *mautrix.Member {
|
func (room *Room) GetMember(userID string) *mautrix.Member {
|
||||||
|
if userID == room.SessionUserID && room.SessionMember != nil {
|
||||||
|
return room.SessionMember
|
||||||
|
}
|
||||||
room.Load()
|
room.Load()
|
||||||
room.createMemberCache()
|
room.createMemberCache()
|
||||||
room.lock.RLock()
|
room.lock.RLock()
|
||||||
|
Loading…
Reference in New Issue
Block a user