Other: Add UserLoading/UserLoadFail events

This commit is contained in:
James Houlahan
2022-11-02 13:32:14 +01:00
parent 75b788b793
commit 943d95a725
3 changed files with 31 additions and 8 deletions

View File

@ -311,18 +311,26 @@ func (bridge *Bridge) loadUsers(ctx context.Context) error {
return nil
}
logrus.WithField("userID", user.UserID()).Debug("Loading user")
if safe.RLockRet(func() bool {
return mapHas(bridge.users, user.UserID())
}, bridge.usersLock) {
if safe.RLockRet(func() bool { return mapHas(bridge.users, user.UserID()) }, bridge.usersLock) {
return nil
}
logrus.WithField("userID", user.UserID()).Debug("Loading connected user")
bridge.publish(events.UserLoading{
UserID: user.UserID(),
})
if err := bridge.loadUser(ctx, user); err != nil {
logrus.WithError(err).Error("Failed to load connected user")
bridge.publish(events.UserLoadFail{
UserID: user.UserID(),
})
} else {
bridge.publish(events.UserLoaded{
logrus.WithField("userID", user.UserID()).Debug("Loaded user")
bridge.publish(events.UserLoadSuccess{
UserID: user.UserID(),
})
}

View File

@ -23,7 +23,19 @@ type AllUsersLoaded struct {
eventBase
}
type UserLoaded struct {
type UserLoading struct {
eventBase
UserID string
}
type UserLoadSuccess struct {
eventBase
UserID string
}
type UserLoadFail struct {
eventBase
UserID string

View File

@ -244,7 +244,10 @@ func (s *Service) watchEvents() { //nolint:funlen
case events.UserChanged:
_ = s.SendEvent(NewUserChangedEvent(event.UserID))
case events.UserLoaded:
case events.UserLoadSuccess:
_ = s.SendEvent(NewUserChangedEvent(event.UserID))
case events.UserLoadFail:
_ = s.SendEvent(NewUserChangedEvent(event.UserID))
case events.UserLoggedIn: