1
0
Fork 0
forked from Mirrors/gomuks

Add method to return latest state event of type

This commit is contained in:
FIGBERT 2023-06-12 18:53:39 -07:00
parent cbb17effbf
commit 2dbe60384f
No known key found for this signature in database
GPG key ID: 67F1598D607A844B

View file

@ -463,6 +463,23 @@ func (room *Room) GetStateEvent(eventType event.Type, stateKey string) *event.Ev
return evt return evt
} }
// GetMostRecentEvent returns the most recent state event for the given
// type, or nil.
func (room *Room) GetMostRecentEvent(eventType event.Type) *event.Event {
room.Load()
room.lock.RLock()
defer room.lock.RUnlock()
stateEventMap, _ := room.state[eventType]
var evt *event.Event = nil
for _, e := range stateEventMap {
if evt == nil || time.UnixMilli(e.Timestamp).After(time.UnixMilli(evt.Timestamp)) {
evt = e
}
}
return evt
}
// getStateEvents returns the state events for the given type. // getStateEvents returns the state events for the given type.
func (room *Room) getStateEvents(eventType event.Type) map[string]*event.Event { func (room *Room) getStateEvents(eventType event.Type) map[string]*event.Event {
stateEventMap, _ := room.state[eventType] stateEventMap, _ := room.state[eventType]