diff options
author | Joram Wilander <jwawilander@gmail.com> | 2017-05-11 08:10:59 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-05-11 08:10:59 -0400 |
commit | be7c53ec7fffaa1751a162f4a34760f94e941bc6 (patch) | |
tree | 46299da4de0952ad1319831b06ddbc3f343ec2d8 /app | |
parent | 8ec90d88faaf3ab57a6e7a0cdf46a376d6bed54b (diff) | |
download | chat-be7c53ec7fffaa1751a162f4a34760f94e941bc6.tar.gz chat-be7c53ec7fffaa1751a162f4a34760f94e941bc6.tar.bz2 chat-be7c53ec7fffaa1751a162f4a34760f94e941bc6.zip |
Send status change event if status changes on channel view (#6389)
Diffstat (limited to 'app')
-rw-r--r-- | app/channel.go | 8 | ||||
-rw-r--r-- | app/status.go | 12 |
2 files changed, 16 insertions, 4 deletions
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 |