diff options
Diffstat (limited to 'app/status.go')
-rw-r--r-- | app/status.go | 44 |
1 files changed, 12 insertions, 32 deletions
diff --git a/app/status.go b/app/status.go index 1ef7aef0f..c8bff0d1a 100644 --- a/app/status.go +++ b/app/status.go @@ -221,9 +221,7 @@ func (a *App) BroadcastStatus(status *model.Status) { event := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_STATUS_CHANGE, "", "", status.UserId, nil) event.Add("status", status.Status) event.Add("user_id", status.UserId) - a.Go(func() { - a.Publish(event) - }) + a.Publish(event) } func (a *App) SetStatusOffline(userId string, manual bool) { @@ -238,18 +236,7 @@ func (a *App) SetStatusOffline(userId string, manual bool) { status = &model.Status{UserId: userId, Status: model.STATUS_OFFLINE, Manual: manual, LastActivityAt: model.GetMillis(), ActiveChannel: ""} - a.AddStatusCache(status) - - if result := <-a.Srv.Store.Status().SaveOrUpdate(status); result.Err != nil { - l4g.Error(utils.T("api.status.save_status.error"), userId, result.Err) - } - - event := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_STATUS_CHANGE, "", "", status.UserId, nil) - event.Add("status", model.STATUS_OFFLINE) - event.Add("user_id", status.UserId) - a.Go(func() { - a.Publish(event) - }) + a.SaveAndBroadcastStatus(status) } func (a *App) SetStatusAwayIfNeeded(userId string, manual bool) { @@ -281,18 +268,7 @@ func (a *App) SetStatusAwayIfNeeded(userId string, manual bool) { status.Manual = manual status.ActiveChannel = "" - a.AddStatusCache(status) - - if result := <-a.Srv.Store.Status().SaveOrUpdate(status); result.Err != nil { - l4g.Error(utils.T("api.status.save_status.error"), userId, result.Err) - } - - event := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_STATUS_CHANGE, "", "", status.UserId, nil) - event.Add("status", model.STATUS_AWAY) - event.Add("user_id", status.UserId) - a.Go(func() { - a.Publish(event) - }) + a.SaveAndBroadcastStatus(status) } func (a *App) SetStatusDoNotDisturb(userId string) { @@ -309,18 +285,22 @@ func (a *App) SetStatusDoNotDisturb(userId string) { status.Status = model.STATUS_DND status.Manual = true + a.SaveAndBroadcastStatus(status) +} + +func (a *App) SaveAndBroadcastStatus(status *model.Status) *model.AppError { a.AddStatusCache(status) if result := <-a.Srv.Store.Status().SaveOrUpdate(status); result.Err != nil { - l4g.Error(utils.T("api.status.save_status.error"), userId, result.Err) + l4g.Error(utils.T("api.status.save_status.error"), status.UserId, result.Err) } event := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_STATUS_CHANGE, "", "", status.UserId, nil) - event.Add("status", model.STATUS_DND) + event.Add("status", status.Status) event.Add("user_id", status.UserId) - a.Go(func() { - a.Publish(event) - }) + a.Publish(event) + + return nil } func GetStatusFromCache(userId string) *model.Status { |