From 943d95a725b3dc5fdec2c3d7f1fe451a5eea3fca Mon Sep 17 00:00:00 2001 From: James Houlahan Date: Wed, 2 Nov 2022 13:32:14 +0100 Subject: [PATCH] Other: Add UserLoading/UserLoadFail events --- internal/bridge/user.go | 20 ++++++++++++++------ internal/events/user.go | 14 +++++++++++++- internal/frontend/grpc/service.go | 5 ++++- 3 files changed, 31 insertions(+), 8 deletions(-) diff --git a/internal/bridge/user.go b/internal/bridge/user.go index 379ab5f0..be8e1172 100644 --- a/internal/bridge/user.go +++ b/internal/bridge/user.go @@ -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(), }) } diff --git a/internal/events/user.go b/internal/events/user.go index 7d7fda2a..4c9e982e 100644 --- a/internal/events/user.go +++ b/internal/events/user.go @@ -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 diff --git a/internal/frontend/grpc/service.go b/internal/frontend/grpc/service.go index 90576af3..9d4ad45f 100644 --- a/internal/frontend/grpc/service.go +++ b/internal/frontend/grpc/service.go @@ -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: