summaryrefslogtreecommitdiffstats
path: root/model
diff options
context:
space:
mode:
Diffstat (limited to 'model')
-rw-r--r--model/channel_list.go35
-rw-r--r--model/channel_member.go21
-rw-r--r--model/client.go16
3 files changed, 39 insertions, 33 deletions
diff --git a/model/channel_list.go b/model/channel_list.go
index 49ba384a2..7a46de45d 100644
--- a/model/channel_list.go
+++ b/model/channel_list.go
@@ -8,15 +8,11 @@ import (
"io"
)
-type ChannelList struct {
- Channels []*Channel `json:"channels"`
- Members map[string]*ChannelMember `json:"members"`
-}
+type ChannelList []*Channel
func (o *ChannelList) ToJson() string {
- b, err := json.Marshal(o)
- if err != nil {
- return ""
+ if b, err := json.Marshal(o); err != nil {
+ return "[]"
} else {
return string(b)
}
@@ -28,7 +24,7 @@ func (o *ChannelList) Etag() string {
var t int64 = 0
var delta int64 = 0
- for _, v := range o.Channels {
+ for _, v := range *o {
if v.LastPostAt > t {
t = v.LastPostAt
id = v.Id
@@ -39,30 +35,9 @@ func (o *ChannelList) Etag() string {
id = v.Id
}
- member := o.Members[v.Id]
-
- if member != nil {
- max := v.LastPostAt
- if v.UpdateAt > max {
- max = v.UpdateAt
- }
-
- delta += max - member.LastViewedAt
-
- if member.LastViewedAt > t {
- t = member.LastViewedAt
- id = v.Id
- }
-
- if member.LastUpdateAt > t {
- t = member.LastUpdateAt
- id = v.Id
- }
-
- }
}
- return Etag(id, t, delta, len(o.Channels))
+ return Etag(id, t, delta, len(*o))
}
func ChannelListFromJson(data io.Reader) *ChannelList {
diff --git a/model/channel_member.go b/model/channel_member.go
index 705c6bfbd..4180bb8e6 100644
--- a/model/channel_member.go
+++ b/model/channel_member.go
@@ -29,6 +29,27 @@ type ChannelMember struct {
LastUpdateAt int64 `json:"last_update_at"`
}
+type ChannelMembers []ChannelMember
+
+func (o *ChannelMembers) ToJson() string {
+ if b, err := json.Marshal(o); err != nil {
+ return "[]"
+ } else {
+ return string(b)
+ }
+}
+
+func ChannelMembersFromJson(data io.Reader) *ChannelMembers {
+ decoder := json.NewDecoder(data)
+ var o ChannelMembers
+ err := decoder.Decode(&o)
+ if err == nil {
+ return &o
+ } else {
+ return nil
+ }
+}
+
func (o *ChannelMember) ToJson() string {
b, err := json.Marshal(o)
if err != nil {
diff --git a/model/client.go b/model/client.go
index f5aeea4db..e9d6c512c 100644
--- a/model/client.go
+++ b/model/client.go
@@ -1124,13 +1124,13 @@ func (c *Client) UpdateNotifyProps(data map[string]string) (*Result, *AppError)
}
}
-func (c *Client) GetChannels(etag string) (*Result, *AppError) {
- if r, err := c.DoApiGet(c.GetTeamRoute()+"/channels/", "", etag); err != nil {
+func (c *Client) GetMyChannelMembers() (*Result, *AppError) {
+ if r, err := c.DoApiGet(c.GetTeamRoute()+"/channels/members", "", ""); err != nil {
return nil, err
} else {
defer closeBody(r)
return &Result{r.Header.Get(HEADER_REQUEST_ID),
- r.Header.Get(HEADER_ETAG_SERVER), ChannelListFromJson(r.Body)}, nil
+ r.Header.Get(HEADER_ETAG_SERVER), ChannelMembersFromJson(r.Body)}, nil
}
}
@@ -1164,6 +1164,16 @@ func (c *Client) GetChannelCounts(etag string) (*Result, *AppError) {
}
}
+func (c *Client) GetChannels(etag string) (*Result, *AppError) {
+ if r, err := c.DoApiGet(c.GetTeamRoute()+"/channels/", "", etag); err != nil {
+ return nil, err
+ } else {
+ defer closeBody(r)
+ return &Result{r.Header.Get(HEADER_REQUEST_ID),
+ r.Header.Get(HEADER_ETAG_SERVER), ChannelListFromJson(r.Body)}, nil
+ }
+}
+
func (c *Client) JoinChannel(id string) (*Result, *AppError) {
if r, err := c.DoApiPost(c.GetChannelRoute(id)+"/join", ""); err != nil {
return nil, err