forked from Silverfish/proton-bridge
Other: Add UserLoading/UserLoadFail events
This commit is contained in:
@ -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(),
|
||||
})
|
||||
}
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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:
|
||||
|
||||
Reference in New Issue
Block a user