updated deps
This commit is contained in:
68
vendor/maunium.net/go/mautrix/appservice/statestore.go
generated
vendored
68
vendor/maunium.net/go/mautrix/appservice/statestore.go
generated
vendored
@@ -8,7 +8,6 @@ package appservice
|
||||
|
||||
import (
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"maunium.net/go/mautrix/event"
|
||||
"maunium.net/go/mautrix/id"
|
||||
@@ -18,9 +17,6 @@ type StateStore interface {
|
||||
IsRegistered(userID id.UserID) bool
|
||||
MarkRegistered(userID id.UserID)
|
||||
|
||||
IsTyping(roomID id.RoomID, userID id.UserID) bool
|
||||
SetTyping(roomID id.RoomID, userID id.UserID, timeout time.Duration)
|
||||
|
||||
IsInRoom(roomID id.RoomID, userID id.UserID) bool
|
||||
IsInvited(roomID id.RoomID, userID id.UserID) bool
|
||||
IsMembership(roomID id.RoomID, userID id.UserID, allowedMemberships ...event.Membership) bool
|
||||
@@ -45,67 +41,21 @@ func (as *AppService) UpdateState(evt *event.Event) {
|
||||
}
|
||||
}
|
||||
|
||||
type TypingStateStore struct {
|
||||
typing map[id.RoomID]map[id.UserID]time.Time
|
||||
typingLock sync.RWMutex
|
||||
}
|
||||
|
||||
func NewTypingStateStore() *TypingStateStore {
|
||||
return &TypingStateStore{
|
||||
typing: make(map[id.RoomID]map[id.UserID]time.Time),
|
||||
}
|
||||
}
|
||||
|
||||
func (store *TypingStateStore) IsTyping(roomID id.RoomID, userID id.UserID) bool {
|
||||
store.typingLock.RLock()
|
||||
defer store.typingLock.RUnlock()
|
||||
roomTyping, ok := store.typing[roomID]
|
||||
if !ok {
|
||||
return false
|
||||
}
|
||||
typingEndsAt := roomTyping[userID]
|
||||
return typingEndsAt.After(time.Now())
|
||||
}
|
||||
|
||||
func (store *TypingStateStore) SetTyping(roomID id.RoomID, userID id.UserID, timeout time.Duration) {
|
||||
store.typingLock.Lock()
|
||||
defer store.typingLock.Unlock()
|
||||
roomTyping, ok := store.typing[roomID]
|
||||
if !ok {
|
||||
if timeout >= 0 {
|
||||
roomTyping = map[id.UserID]time.Time{
|
||||
userID: time.Now().Add(timeout),
|
||||
}
|
||||
} else {
|
||||
return
|
||||
}
|
||||
} else {
|
||||
if timeout >= 0 {
|
||||
roomTyping[userID] = time.Now().Add(timeout)
|
||||
} else {
|
||||
delete(roomTyping, userID)
|
||||
}
|
||||
}
|
||||
store.typing[roomID] = roomTyping
|
||||
}
|
||||
|
||||
type BasicStateStore struct {
|
||||
registrationsLock sync.RWMutex `json:"-"`
|
||||
Registrations map[id.UserID]bool `json:"registrations"`
|
||||
membersLock sync.RWMutex `json:"-"`
|
||||
Members map[id.RoomID]map[id.UserID]*event.MemberEventContent `json:"memberships"`
|
||||
powerLevelsLock sync.RWMutex `json:"-"`
|
||||
PowerLevels map[id.RoomID]*event.PowerLevelsEventContent `json:"power_levels"`
|
||||
Registrations map[id.UserID]bool `json:"registrations"`
|
||||
Members map[id.RoomID]map[id.UserID]*event.MemberEventContent `json:"memberships"`
|
||||
PowerLevels map[id.RoomID]*event.PowerLevelsEventContent `json:"power_levels"`
|
||||
|
||||
*TypingStateStore
|
||||
registrationsLock sync.RWMutex
|
||||
membersLock sync.RWMutex
|
||||
powerLevelsLock sync.RWMutex
|
||||
}
|
||||
|
||||
func NewBasicStateStore() StateStore {
|
||||
return &BasicStateStore{
|
||||
Registrations: make(map[id.UserID]bool),
|
||||
Members: make(map[id.RoomID]map[id.UserID]*event.MemberEventContent),
|
||||
PowerLevels: make(map[id.RoomID]*event.PowerLevelsEventContent),
|
||||
TypingStateStore: NewTypingStateStore(),
|
||||
Registrations: make(map[id.UserID]bool),
|
||||
Members: make(map[id.RoomID]map[id.UserID]*event.MemberEventContent),
|
||||
PowerLevels: make(map[id.RoomID]*event.PowerLevelsEventContent),
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user