summaryrefslogtreecommitdiffstats
path: root/model
diff options
context:
space:
mode:
Diffstat (limited to 'model')
-rw-r--r--model/channel_member.go10
-rw-r--r--model/client4.go39
-rw-r--r--model/team_member.go20
-rw-r--r--model/team_member_test.go14
4 files changed, 75 insertions, 8 deletions
diff --git a/model/channel_member.go b/model/channel_member.go
index 5de58bc4f..b9a08c769 100644
--- a/model/channel_member.go
+++ b/model/channel_member.go
@@ -19,11 +19,11 @@ const (
)
type ChannelUnread struct {
- TeamId string
- TotalMsgCount int64
- MsgCount int64
- MentionCount int64
- NotifyProps StringMap
+ TeamId string `json:"team_id"`
+ ChannelId string `json:"channel_id"`
+ MsgCount int64 `json:"msg_count"`
+ MentionCount int64 `json:"mention_count"`
+ NotifyProps StringMap `json:"-"`
}
type ChannelMember struct {
diff --git a/model/client4.go b/model/client4.go
index f2dc7625b..63f65ed48 100644
--- a/model/client4.go
+++ b/model/client4.go
@@ -549,8 +549,8 @@ func (c *Client4) RevokeSession(userId, sessionId string) (bool, *Response) {
}
}
-// getTeamsUnreadForUser will return an array with TeamUnread objects that contain the amount of
-// unread messages and mentions the current user has for the teams it belongs to.
+// GetTeamsUnreadForUser will return an array with TeamUnread objects that contain the amount
+// of unread messages and mentions the current user has for the teams it belongs to.
// An optional team ID can be set to exclude that team from the results. Must be authenticated.
func (c *Client4) GetTeamsUnreadForUser(userId, teamIdToExclude string) ([]*TeamUnread, *Response) {
optional := ""
@@ -696,7 +696,7 @@ func (c *Client4) GetTeamMember(teamId, userId, etag string) (*TeamMember, *Resp
}
}
-// UpdateTeamMemberRoles will update the roles on a team for a user
+// UpdateTeamMemberRoles will update the roles on a team for a user.
func (c *Client4) UpdateTeamMemberRoles(teamId, userId, newRoles string) (bool, *Response) {
requestBody := map[string]string{"roles": newRoles}
if r, err := c.DoApiPut(c.GetTeamMemberRoute(teamId, userId)+"/roles", MapToJson(requestBody)); err != nil {
@@ -707,6 +707,16 @@ func (c *Client4) UpdateTeamMemberRoles(teamId, userId, newRoles string) (bool,
}
}
+// UpdateTeam will update a team.
+func (c *Client4) UpdateTeam(team *Team) (*Team, *Response) {
+ if r, err := c.DoApiPut(c.GetTeamRoute(team.Id), team.ToJson()); err != nil {
+ return nil, &Response{StatusCode: r.StatusCode, Error: err}
+ } else {
+ defer closeBody(r)
+ return TeamFromJson(r.Body), BuildResponse(r)
+ }
+}
+
// GetTeamMembers returns team members based on the provided team id string.
func (c *Client4) GetTeamMembers(teamId string, page int, perPage int, etag string) ([]*TeamMember, *Response) {
query := fmt.Sprintf("?page=%v&per_page=%v", page, perPage)
@@ -718,6 +728,17 @@ func (c *Client4) GetTeamMembers(teamId string, page int, perPage int, etag stri
}
}
+// GetTeamMembersByIds will return an array of team members based on the
+// team id and a list of user ids provided. Must be authenticated.
+func (c *Client4) GetTeamMembersByIds(teamId string, userIds []string) ([]*TeamMember, *Response) {
+ if r, err := c.DoApiPost(fmt.Sprintf("/teams/%v/members/ids", teamId), ArrayToJson(userIds)); err != nil {
+ return nil, &Response{StatusCode: r.StatusCode, Error: err}
+ } else {
+ defer closeBody(r)
+ return TeamMembersFromJson(r.Body), BuildResponse(r)
+ }
+}
+
// GetTeamStats returns a team stats based on the team id string.
// Must be authenticated.
func (c *Client4) GetTeamStats(teamId, etag string) (*TeamStats, *Response) {
@@ -729,6 +750,18 @@ func (c *Client4) GetTeamStats(teamId, etag string) (*TeamStats, *Response) {
}
}
+// GetTeamUnread will return a TeamUnread object that contains the amount of
+// unread messages and mentions the user has for the specified team.
+// Must be authenticated.
+func (c *Client4) GetTeamUnread(teamId, userId string) (*TeamUnread, *Response) {
+ if r, err := c.DoApiGet(c.GetUserRoute(userId)+c.GetTeamRoute(teamId)+"/unread", ""); err != nil {
+ return nil, &Response{StatusCode: r.StatusCode, Error: err}
+ } else {
+ defer closeBody(r)
+ return TeamUnreadFromJson(r.Body), BuildResponse(r)
+ }
+}
+
// Channel Section
// CreateChannel creates a channel based on the provided channel struct.
diff --git a/model/team_member.go b/model/team_member.go
index 36a567a45..efd77e7ec 100644
--- a/model/team_member.go
+++ b/model/team_member.go
@@ -31,6 +31,15 @@ func (o *TeamMember) ToJson() string {
}
}
+func (o *TeamUnread) ToJson() string {
+ b, err := json.Marshal(o)
+ if err != nil {
+ return ""
+ } else {
+ return string(b)
+ }
+}
+
func TeamMemberFromJson(data io.Reader) *TeamMember {
decoder := json.NewDecoder(data)
var o TeamMember
@@ -42,6 +51,17 @@ func TeamMemberFromJson(data io.Reader) *TeamMember {
}
}
+func TeamUnreadFromJson(data io.Reader) *TeamUnread {
+ decoder := json.NewDecoder(data)
+ var o TeamUnread
+ err := decoder.Decode(&o)
+ if err == nil {
+ return &o
+ } else {
+ return nil
+ }
+}
+
func TeamMembersToJson(o []*TeamMember) string {
if b, err := json.Marshal(o); err != nil {
return "[]"
diff --git a/model/team_member_test.go b/model/team_member_test.go
index eac07c646..e957ffd4f 100644
--- a/model/team_member_test.go
+++ b/model/team_member_test.go
@@ -41,3 +41,17 @@ func TestTeamMemberIsValid(t *testing.T) {
t.Fatal(err)
}*/
}
+
+func TestUnreadMemberJson(t *testing.T) {
+ o := TeamUnread{TeamId: NewId(), MsgCount: 5, MentionCount: 3}
+ json := o.ToJson()
+
+ r := TeamUnreadFromJson(strings.NewReader(json))
+ if o.TeamId != r.TeamId {
+ t.Fatal("Ids do not match")
+ }
+
+ if o.MsgCount != r.MsgCount {
+ t.Fatal("MsgCount do not match")
+ }
+}