From be7c53ec7fffaa1751a162f4a34760f94e941bc6 Mon Sep 17 00:00:00 2001 From: Joram Wilander Date: Thu, 11 May 2017 08:10:59 -0400 Subject: Send status change event if status changes on channel view (#6389) --- app/channel.go | 8 ++++++++ app/status.go | 12 ++++++++---- 2 files changed, 16 insertions(+), 4 deletions(-) (limited to 'app') diff --git a/app/channel.go b/app/channel.go index 3e794a0c9..a1a70560d 100644 --- a/app/channel.go +++ b/app/channel.go @@ -1016,9 +1016,13 @@ func GetNumberOfChannelsOnTeam(teamId string) (int, *model.AppError) { func SetActiveChannel(userId string, channelId string) *model.AppError { status, err := GetStatus(userId) + + oldStatus := model.STATUS_OFFLINE + if err != nil { status = &model.Status{UserId: userId, Status: model.STATUS_ONLINE, Manual: false, LastActivityAt: model.GetMillis(), ActiveChannel: channelId} } else { + oldStatus = status.Status status.ActiveChannel = channelId if !status.Manual { status.Status = model.STATUS_ONLINE @@ -1028,6 +1032,10 @@ func SetActiveChannel(userId string, channelId string) *model.AppError { AddStatusCache(status) + if status.Status != oldStatus { + BroadcastStatus(status) + } + return nil } diff --git a/app/status.go b/app/status.go index f0a26e6eb..868e57563 100644 --- a/app/status.go +++ b/app/status.go @@ -209,13 +209,17 @@ func SetStatusOnline(userId string, sessionId string, manual bool) { } if broadcast { - event := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_STATUS_CHANGE, "", "", status.UserId, nil) - event.Add("status", model.STATUS_ONLINE) - event.Add("user_id", status.UserId) - go Publish(event) + BroadcastStatus(status) } } +func 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) + go Publish(event) +} + func SetStatusOffline(userId string, manual bool) { if !*utils.Cfg.ServiceSettings.EnableUserStatuses { return -- cgit v1.2.3-1-g7c22