diff options
author | enahum <nahumhbl@gmail.com> | 2016-12-19 10:05:46 -0300 |
---|---|---|
committer | Joram Wilander <jwawilander@gmail.com> | 2016-12-19 08:05:46 -0500 |
commit | 999d1553e1ce45adf58f6082b160bc1147dc592b (patch) | |
tree | 369a9b7f46dd44d136a79a050469429169433cec /api/team.go | |
parent | 3ce2ce9dc882ed962dc3ce7550bdb07963f376b6 (diff) | |
download | chat-999d1553e1ce45adf58f6082b160bc1147dc592b.tar.gz chat-999d1553e1ce45adf58f6082b160bc1147dc592b.tar.bz2 chat-999d1553e1ce45adf58f6082b160bc1147dc592b.zip |
PLT-4167 Team Sidebar (#4569)
* PLT-4167 Team Sidebar
* Address feedback from PM
* change route from my_members to members
* bug fixes
* Updating styles for teams sidebar (#4681)
* Added PM changes
* Fix corner cases
* Addressing feedback
* use two different endpoints
* Bug fixes
* Rename model and client functions, using preferences to store last team and channel viewed
* Fix mobile notification count and closing the team sidebar
* unit test, fixed bad merge and retrieve from cached when available
* bug fixes
* use id for last channel in preferences, query optimization
* Updating multi team css (#4830)
Diffstat (limited to 'api/team.go')
-rw-r--r-- | api/team.go | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/api/team.go b/api/team.go index 1d4de6b9e..f7fe9b830 100644 --- a/api/team.go +++ b/api/team.go @@ -32,6 +32,8 @@ func InitTeam() { BaseRoutes.Teams.Handle("/get_invite_info", ApiAppHandler(getInviteInfo)).Methods("POST") BaseRoutes.Teams.Handle("/find_team_by_name", ApiAppHandler(findTeamByName)).Methods("POST") BaseRoutes.Teams.Handle("/name/{team_name:[A-Za-z0-9\\-]+}", ApiAppHandler(getTeamByName)).Methods("GET") + BaseRoutes.Teams.Handle("/members", ApiUserRequired(getMyTeamMembers)).Methods("GET") + BaseRoutes.Teams.Handle("/unread", ApiUserRequired(getMyTeamsUnread)).Methods("GET") BaseRoutes.NeedTeam.Handle("/me", ApiUserRequired(getMyTeam)).Methods("GET") BaseRoutes.NeedTeam.Handle("/stats", ApiUserRequired(getTeamStats)).Methods("GET") @@ -358,6 +360,11 @@ func LeaveTeam(team *model.Team, user *model.User) *model.AppError { return uua.Err } + // delete the preferences that set the last channel used in the team and other team specific preferences + if result := <-Srv.Store.Preference().DeleteCategory(user.Id, team.Id); result.Err != nil { + return result.Err + } + RemoveAllSessionsForUserId(user.Id) InvalidateCacheForUser(user.Id) @@ -723,6 +730,32 @@ func getTeamByName(c *Context, w http.ResponseWriter, r *http.Request) { } } +func getMyTeamMembers(c *Context, w http.ResponseWriter, r *http.Request) { + if len(c.Session.TeamMembers) > 0 { + w.Write([]byte(model.TeamMembersToJson(c.Session.TeamMembers))) + } else { + if result := <-Srv.Store.Team().GetTeamsForUser(c.Session.UserId); result.Err != nil { + c.Err = result.Err + return + } else { + data := result.Data.([]*model.TeamMember) + w.Write([]byte(model.TeamMembersToJson(data))) + } + } +} + +func getMyTeamsUnread(c *Context, w http.ResponseWriter, r *http.Request) { + teamId := r.URL.Query().Get("id") + + if result := <-Srv.Store.Team().GetTeamsUnreadForUser(teamId, c.Session.UserId); result.Err != nil { + c.Err = result.Err + return + } else { + data := result.Data.([]*model.TeamUnread) + w.Write([]byte(model.TeamsUnreadToJson(data))) + } +} + func InviteMembers(team *model.Team, senderName string, invites []string) { for _, invite := range invites { if len(invite) > 0 { @@ -801,6 +834,10 @@ func updateTeam(c *Context, w http.ResponseWriter, r *http.Request) { oldTeam.Sanitize() + message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_UPDATE_TEAM, "", "", "", nil) + message.Add("team", oldTeam.ToJson()) + go Publish(message) + w.Write([]byte(oldTeam.ToJson())) } |