summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/mattermost/mattermost-server/v5/model/status.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/mattermost/mattermost-server/v5/model/status.go')
-rw-r--r--vendor/github.com/mattermost/mattermost-server/v5/model/status.go75
1 files changed, 75 insertions, 0 deletions
diff --git a/vendor/github.com/mattermost/mattermost-server/v5/model/status.go b/vendor/github.com/mattermost/mattermost-server/v5/model/status.go
new file mode 100644
index 00000000..741fa1ed
--- /dev/null
+++ b/vendor/github.com/mattermost/mattermost-server/v5/model/status.go
@@ -0,0 +1,75 @@
+// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
+// See LICENSE.txt for license information.
+
+package model
+
+import (
+ "encoding/json"
+ "io"
+)
+
+const (
+ STATUS_OUT_OF_OFFICE = "ooo"
+ STATUS_OFFLINE = "offline"
+ STATUS_AWAY = "away"
+ STATUS_DND = "dnd"
+ STATUS_ONLINE = "online"
+ STATUS_CACHE_SIZE = SESSION_CACHE_SIZE
+ STATUS_CHANNEL_TIMEOUT = 20000 // 20 seconds
+ STATUS_MIN_UPDATE_TIME = 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:"-"`
+}
+
+func (o *Status) ToJson() string {
+ oCopy := *o
+ oCopy.ActiveChannel = ""
+ b, _ := json.Marshal(oCopy)
+ return string(b)
+}
+
+func (o *Status) ToClusterJson() string {
+ b, _ := json.Marshal(o)
+ return string(b)
+}
+
+func StatusFromJson(data io.Reader) *Status {
+ var o *Status
+ json.NewDecoder(data).Decode(&o)
+ return o
+}
+
+func StatusListToJson(u []*Status) string {
+ uCopy := make([]Status, len(u))
+ for i, s := range u {
+ sCopy := *s
+ sCopy.ActiveChannel = ""
+ uCopy[i] = sCopy
+ }
+
+ b, _ := json.Marshal(uCopy)
+ return string(b)
+}
+
+func StatusListFromJson(data io.Reader) []*Status {
+ var statuses []*Status
+ json.NewDecoder(data).Decode(&statuses)
+ return statuses
+}
+
+func StatusMapToInterfaceMap(statusMap map[string]*Status) map[string]interface{} {
+ interfaceMap := map[string]interface{}{}
+ for _, s := range statusMap {
+ // Omitted statues mean offline
+ if s.Status != STATUS_OFFLINE {
+ interfaceMap[s.UserId] = s.Status
+ }
+ }
+ return interfaceMap
+}