diff options
Diffstat (limited to 'vendor/github.com/mattermost/mattermost-server/v6/model/status.go')
-rw-r--r-- | vendor/github.com/mattermost/mattermost-server/v6/model/status.go | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/vendor/github.com/mattermost/mattermost-server/v6/model/status.go b/vendor/github.com/mattermost/mattermost-server/v6/model/status.go new file mode 100644 index 00000000..45a6d5d2 --- /dev/null +++ b/vendor/github.com/mattermost/mattermost-server/v6/model/status.go @@ -0,0 +1,55 @@ +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. +// See LICENSE.txt for license information. + +package model + +import ( + "encoding/json" +) + +const ( + StatusOutOfOffice = "ooo" + StatusOffline = "offline" + StatusAway = "away" + StatusDnd = "dnd" + StatusOnline = "online" + StatusCacheSize = SessionCacheSize + StatusChannelTimeout = 20000 // 20 seconds + StatusMinUpdateTime = 120000 // 2 minutes +) + +type Status struct { + UserId string `json:"user_id"` + Status string `json:"status"` + Manual bool `json:"manual"` + LastActivityAt int64 `json:"last_activity_at"` + ActiveChannel string `json:"active_channel,omitempty" db:"-"` + DNDEndTime int64 `json:"dnd_end_time"` + PrevStatus string `json:"-"` +} + +func (s *Status) ToJSON() ([]byte, error) { + sCopy := *s + sCopy.ActiveChannel = "" + return json.Marshal(sCopy) +} + +func StatusListToJSON(u []*Status) ([]byte, error) { + list := make([]Status, len(u)) + for i, s := range u { + list[i] = *s + list[i].ActiveChannel = "" + } + return json.Marshal(list) +} + +func StatusMapToInterfaceMap(statusMap map[string]*Status) map[string]interface{} { + interfaceMap := map[string]interface{}{} + for _, s := range statusMap { + // Omitted statues mean offline + if s.Status != StatusOffline { + interfaceMap[s.UserId] = s.Status + } + } + return interfaceMap +} |