summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/channel.go8
-rw-r--r--app/status.go12
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