From a8b867cd52d3c10b92060fb1700ac9f49fbb1ce9 Mon Sep 17 00:00:00 2001 From: Hanzei <16541325+hanzei@users.noreply.github.com> Date: Tue, 30 Oct 2018 12:55:59 +0100 Subject: [PATCH] Migrate to idiomatic error handling in app/team.go (#9701) --- app/team.go | 457 +++++++++++++++++++++++++--------------------------- 1 file changed, 222 insertions(+), 235 deletions(-) diff --git a/app/team.go b/app/team.go index e7b25dddf9..34216b7fc1 100644 --- a/app/team.go +++ b/app/team.go @@ -14,7 +14,6 @@ import ( "strings" "github.com/disintegration/imaging" - "github.com/mattermost/mattermost-server/mlog" "github.com/mattermost/mattermost-server/model" "github.com/mattermost/mattermost-server/plugin" @@ -22,34 +21,32 @@ import ( ) func (a *App) CreateTeam(team *model.Team) (*model.Team, *model.AppError) { - if result := <-a.Srv.Store.Team().Save(team); result.Err != nil { + result := <-a.Srv.Store.Team().Save(team) + if result.Err != nil { return nil, result.Err - } else { - rteam := result.Data.(*model.Team) - - if _, err := a.CreateDefaultChannels(rteam.Id); err != nil { - return nil, err - } - - return rteam, nil } + rteam := result.Data.(*model.Team) + + if _, err := a.CreateDefaultChannels(rteam.Id); err != nil { + return nil, err + } + + return rteam, nil } func (a *App) CreateTeamWithUser(team *model.Team, userId string) (*model.Team, *model.AppError) { - var user *model.User - var err *model.AppError - if user, err = a.GetUser(userId); err != nil { + user, err := a.GetUser(userId) + if err != nil { return nil, err - } else { - team.Email = user.Email } + team.Email = user.Email if !a.isTeamEmailAllowed(user, team) { return nil, model.NewAppError("isTeamEmailAllowed", "api.team.is_team_creation_allowed.domain.app_error", nil, "", http.StatusBadRequest) } - var rteam *model.Team - if rteam, err = a.CreateTeam(team); err != nil { + rteam, err := a.CreateTeam(team) + if err != nil { return nil, err } @@ -100,9 +97,8 @@ func (a *App) isTeamEmailAllowed(user *model.User, team *model.Team) bool { } func (a *App) UpdateTeam(team *model.Team) (*model.Team, *model.AppError) { - var oldTeam *model.Team - var err *model.AppError - if oldTeam, err = a.GetTeam(team.Id); err != nil { + oldTeam, err := a.GetTeam(team.Id) + if err != nil { return nil, err } @@ -117,7 +113,7 @@ func (a *App) UpdateTeam(team *model.Team) (*model.Team, *model.AppError) { } } if !matched { - err := model.NewAppError("UpdateTeam", "api.team.update_restricted_domains.mismatch.app_error", map[string]interface{}{"Domain": domain}, "", http.StatusBadRequest) + err = model.NewAppError("UpdateTeam", "api.team.update_restricted_domains.mismatch.app_error", map[string]interface{}{"Domain": domain}, "", http.StatusBadRequest) return nil, err } } @@ -142,17 +138,17 @@ func (a *App) UpdateTeam(team *model.Team) (*model.Team, *model.AppError) { } func (a *App) updateTeamUnsanitized(team *model.Team) (*model.Team, *model.AppError) { - if result := <-a.Srv.Store.Team().Update(team); result.Err != nil { + result := <-a.Srv.Store.Team().Update(team) + if result.Err != nil { return nil, result.Err - } else { - return result.Data.(*model.Team), nil } + + return result.Data.(*model.Team), nil } func (a *App) UpdateTeamScheme(team *model.Team) (*model.Team, *model.AppError) { - var oldTeam *model.Team - var err *model.AppError - if oldTeam, err = a.GetTeam(team.Id); err != nil { + oldTeam, err := a.GetTeam(team.Id) + if err != nil { return nil, err } @@ -196,31 +192,28 @@ func (a *App) sendTeamEvent(team *model.Team, event string) { } func (a *App) GetSchemeRolesForTeam(teamId string) (string, string, *model.AppError) { - var team *model.Team - var err *model.AppError - - if team, err = a.GetTeam(teamId); err != nil { + team, err := a.GetTeam(teamId) + if err != nil { return "", "", err } if team.SchemeId != nil && len(*team.SchemeId) != 0 { - if scheme, err := a.GetScheme(*team.SchemeId); err != nil { + scheme, err := a.GetScheme(*team.SchemeId) + if err != nil { return "", "", err - } else { - return scheme.DefaultTeamUserRole, scheme.DefaultTeamAdminRole, nil } + return scheme.DefaultTeamUserRole, scheme.DefaultTeamAdminRole, nil } return model.TEAM_USER_ROLE_ID, model.TEAM_ADMIN_ROLE_ID, nil } func (a *App) UpdateTeamMemberRoles(teamId string, userId string, newRoles string) (*model.TeamMember, *model.AppError) { - var member *model.TeamMember - if result := <-a.Srv.Store.Team().GetMember(teamId, userId); result.Err != nil { + result := <-a.Srv.Store.Team().GetMember(teamId, userId) + if result.Err != nil { return nil, result.Err - } else { - member = result.Data.(*model.TeamMember) } + member := result.Data.(*model.TeamMember) if member == nil { err := model.NewAppError("UpdateTeamMemberRoles", "api.team.update_member_roles.not_a_member", nil, "userId="+userId+" teamId="+teamId, http.StatusBadRequest) @@ -237,10 +230,12 @@ func (a *App) UpdateTeamMemberRoles(teamId string, userId string, newRoles strin member.SchemeAdmin = false for _, roleName := range strings.Fields(newRoles) { - if role, err := a.GetRoleByName(roleName); err != nil { + role, err := a.GetRoleByName(roleName) + if err != nil { err.StatusCode = http.StatusBadRequest return nil, err - } else if !role.SchemeManaged { + } + if !role.SchemeManaged { // The role is not scheme-managed, so it's OK to apply it to the explicit roles field. newExplicitRoles = append(newExplicitRoles, roleName) } else { @@ -259,11 +254,11 @@ func (a *App) UpdateTeamMemberRoles(teamId string, userId string, newRoles strin member.ExplicitRoles = strings.Join(newExplicitRoles, " ") - if result := <-a.Srv.Store.Team().UpdateMember(member); result.Err != nil { + result = <-a.Srv.Store.Team().UpdateMember(member) + if result.Err != nil { return nil, result.Err - } else { - member = result.Data.(*model.TeamMember) } + member = result.Data.(*model.TeamMember) a.ClearSessionCacheForUser(userId) @@ -286,11 +281,11 @@ func (a *App) UpdateTeamMemberSchemeRoles(teamId string, userId string, isScheme member.ExplicitRoles = RemoveRoles([]string{model.TEAM_USER_ROLE_ID, model.TEAM_ADMIN_ROLE_ID}, member.ExplicitRoles) } - if result := <-a.Srv.Store.Team().UpdateMember(member); result.Err != nil { + result := <-a.Srv.Store.Team().UpdateMember(member) + if result.Err != nil { return nil, result.Err - } else { - member = result.Data.(*model.TeamMember) } + member = result.Data.(*model.TeamMember) a.ClearSessionCacheForUser(userId) @@ -309,19 +304,17 @@ func (a *App) AddUserToTeam(teamId string, userId string, userRequestorId string tchan := a.Srv.Store.Team().Get(teamId) uchan := a.Srv.Store.User().Get(userId) - var team *model.Team - if result := <-tchan; result.Err != nil { + result := <-tchan + if result.Err != nil { return nil, result.Err - } else { - team = result.Data.(*model.Team) } + team := result.Data.(*model.Team) - var user *model.User - if result := <-uchan; result.Err != nil { + result = <-uchan + if result.Err != nil { return nil, result.Err - } else { - user = result.Data.(*model.User) } + user := result.Data.(*model.User) if err := a.JoinUserToTeam(team, user, userRequestorId); err != nil { return nil, err @@ -331,11 +324,11 @@ func (a *App) AddUserToTeam(teamId string, userId string, userRequestorId string } func (a *App) AddUserToTeamByTeamId(teamId string, user *model.User) *model.AppError { - if result := <-a.Srv.Store.Team().Get(teamId); result.Err != nil { + result := <-a.Srv.Store.Team().Get(teamId) + if result.Err != nil { return result.Err - } else { - return a.JoinUserToTeam(result.Data.(*model.Team), user, "") } + return a.JoinUserToTeam(result.Data.(*model.Team), user, "") } func (a *App) AddUserToTeamByToken(userId string, tokenId string) (*model.Team, *model.AppError) { @@ -359,19 +352,17 @@ func (a *App) AddUserToTeamByToken(userId string, tokenId string) (*model.Team, tchan := a.Srv.Store.Team().Get(tokenData["teamId"]) uchan := a.Srv.Store.User().Get(userId) - var team *model.Team - if result := <-tchan; result.Err != nil { + result = <-tchan + if result.Err != nil { return nil, result.Err - } else { - team = result.Data.(*model.Team) } + team := result.Data.(*model.Team) - var user *model.User - if result := <-uchan; result.Err != nil { + result = <-uchan + if result.Err != nil { return nil, result.Err - } else { - user = result.Data.(*model.User) } + user := result.Data.(*model.User) if err := a.JoinUserToTeam(team, user, ""); err != nil { return nil, err @@ -388,19 +379,17 @@ func (a *App) AddUserToTeamByInviteId(inviteId string, userId string) (*model.Te tchan := a.Srv.Store.Team().GetByInviteId(inviteId) uchan := a.Srv.Store.User().Get(userId) - var team *model.Team - if result := <-tchan; result.Err != nil { + result := <-tchan + if result.Err != nil { return nil, result.Err - } else { - team = result.Data.(*model.Team) } + team := result.Data.(*model.Team) - var user *model.User - if result := <-uchan; result.Err != nil { + result = <-uchan + if result.Err != nil { return nil, result.Err - } else { - user = result.Data.(*model.User) } + user := result.Data.(*model.User) if err := a.JoinUserToTeam(team, user, ""); err != nil { return nil, err @@ -424,34 +413,39 @@ func (a *App) joinUserToTeam(team *model.Team, user *model.User) (*model.TeamMem tm.SchemeAdmin = true } - if etmr := <-a.Srv.Store.Team().GetMember(team.Id, user.Id); etmr.Err == nil { - // Membership already exists. Check if deleted and and update, otherwise do nothing - rtm := etmr.Data.(*model.TeamMember) - - // Do nothing if already added - if rtm.DeleteAt == 0 { - return rtm, true, nil - } - - if membersCount := <-a.Srv.Store.Team().GetActiveMemberCount(tm.TeamId); membersCount.Err != nil { - return nil, false, membersCount.Err - } else if membersCount.Data.(int64) >= int64(*a.Config().TeamSettings.MaxUsersPerTeam) { - return nil, false, model.NewAppError("joinUserToTeam", "app.team.join_user_to_team.max_accounts.app_error", nil, "teamId="+tm.TeamId, http.StatusBadRequest) - } else { - if tmr := <-a.Srv.Store.Team().UpdateMember(tm); tmr.Err != nil { - return nil, false, tmr.Err - } else { - return tmr.Data.(*model.TeamMember), false, nil - } - } - } else { - // Membership appears to be missing. Lets try to add. - if tmr := <-a.Srv.Store.Team().SaveMember(tm, *a.Config().TeamSettings.MaxUsersPerTeam); tmr.Err != nil { + etmr := <-a.Srv.Store.Team().GetMember(team.Id, user.Id) + if etmr.Err != nil { + // Membership appears to be missing. Lets try to add. + tmr := <-a.Srv.Store.Team().SaveMember(tm, *a.Config().TeamSettings.MaxUsersPerTeam) + if tmr.Err != nil { return nil, false, tmr.Err - } else { - return tmr.Data.(*model.TeamMember), false, nil } + return tmr.Data.(*model.TeamMember), false, nil } + + // Membership already exists. Check if deleted and and update, otherwise do nothing + rtm := etmr.Data.(*model.TeamMember) + + // Do nothing if already added + if rtm.DeleteAt == 0 { + return rtm, true, nil + } + + membersCount := <-a.Srv.Store.Team().GetActiveMemberCount(tm.TeamId) + if membersCount.Err != nil { + return nil, false, membersCount.Err + } + + if membersCount.Data.(int64) >= int64(*a.Config().TeamSettings.MaxUsersPerTeam) { + return nil, false, model.NewAppError("joinUserToTeam", "app.team.join_user_to_team.max_accounts.app_error", nil, "teamId="+tm.TeamId, http.StatusBadRequest) + } + + tmr := <-a.Srv.Store.Team().UpdateMember(tm) + if tmr.Err != nil { + return nil, false, tmr.Err + } + + return tmr.Data.(*model.TeamMember), false, nil } func (a *App) JoinUserToTeam(team *model.Team, user *model.User, userRequestorId string) *model.AppError { @@ -461,7 +455,8 @@ func (a *App) JoinUserToTeam(team *model.Team, user *model.User, userRequestorId tm, alreadyAdded, err := a.joinUserToTeam(team, user) if err != nil { return err - } else if alreadyAdded { + } + if alreadyAdded { return nil } @@ -503,116 +498,116 @@ func (a *App) JoinUserToTeam(team *model.Team, user *model.User, userRequestorId } func (a *App) GetTeam(teamId string) (*model.Team, *model.AppError) { - if result := <-a.Srv.Store.Team().Get(teamId); result.Err != nil { + result := <-a.Srv.Store.Team().Get(teamId) + if result.Err != nil { return nil, result.Err - } else { - return result.Data.(*model.Team), nil } + return result.Data.(*model.Team), nil } func (a *App) GetTeamByName(name string) (*model.Team, *model.AppError) { - if result := <-a.Srv.Store.Team().GetByName(name); result.Err != nil { + result := <-a.Srv.Store.Team().GetByName(name) + if result.Err != nil { result.Err.StatusCode = http.StatusNotFound return nil, result.Err - } else { - return result.Data.(*model.Team), nil } + return result.Data.(*model.Team), nil } func (a *App) GetTeamByInviteId(inviteId string) (*model.Team, *model.AppError) { - if result := <-a.Srv.Store.Team().GetByInviteId(inviteId); result.Err != nil { + result := <-a.Srv.Store.Team().GetByInviteId(inviteId) + if result.Err != nil { return nil, result.Err - } else { - return result.Data.(*model.Team), nil } + return result.Data.(*model.Team), nil } func (a *App) GetAllTeams() ([]*model.Team, *model.AppError) { - if result := <-a.Srv.Store.Team().GetAll(); result.Err != nil { + result := <-a.Srv.Store.Team().GetAll() + if result.Err != nil { return nil, result.Err - } else { - return result.Data.([]*model.Team), nil } + return result.Data.([]*model.Team), nil } func (a *App) GetAllTeamsPage(offset int, limit int) ([]*model.Team, *model.AppError) { - if result := <-a.Srv.Store.Team().GetAllPage(offset, limit); result.Err != nil { + result := <-a.Srv.Store.Team().GetAllPage(offset, limit) + if result.Err != nil { return nil, result.Err - } else { - return result.Data.([]*model.Team), nil } + return result.Data.([]*model.Team), nil } func (a *App) GetAllOpenTeams() ([]*model.Team, *model.AppError) { - if result := <-a.Srv.Store.Team().GetAllTeamListing(); result.Err != nil { + result := <-a.Srv.Store.Team().GetAllTeamListing() + if result.Err != nil { return nil, result.Err - } else { - return result.Data.([]*model.Team), nil } + return result.Data.([]*model.Team), nil } func (a *App) SearchAllTeams(term string) ([]*model.Team, *model.AppError) { - if result := <-a.Srv.Store.Team().SearchAll(term); result.Err != nil { + result := <-a.Srv.Store.Team().SearchAll(term) + if result.Err != nil { return nil, result.Err - } else { - return result.Data.([]*model.Team), nil } + return result.Data.([]*model.Team), nil } func (a *App) SearchOpenTeams(term string) ([]*model.Team, *model.AppError) { - if result := <-a.Srv.Store.Team().SearchOpen(term); result.Err != nil { + result := <-a.Srv.Store.Team().SearchOpen(term) + if result.Err != nil { return nil, result.Err - } else { - return result.Data.([]*model.Team), nil } + return result.Data.([]*model.Team), nil } func (a *App) GetAllOpenTeamsPage(offset int, limit int) ([]*model.Team, *model.AppError) { - if result := <-a.Srv.Store.Team().GetAllTeamPageListing(offset, limit); result.Err != nil { + result := <-a.Srv.Store.Team().GetAllTeamPageListing(offset, limit) + if result.Err != nil { return nil, result.Err - } else { - return result.Data.([]*model.Team), nil } + return result.Data.([]*model.Team), nil } func (a *App) GetTeamsForUser(userId string) ([]*model.Team, *model.AppError) { - if result := <-a.Srv.Store.Team().GetTeamsByUserId(userId); result.Err != nil { + result := <-a.Srv.Store.Team().GetTeamsByUserId(userId) + if result.Err != nil { return nil, result.Err - } else { - return result.Data.([]*model.Team), nil } + return result.Data.([]*model.Team), nil } func (a *App) GetTeamMember(teamId, userId string) (*model.TeamMember, *model.AppError) { - if result := <-a.Srv.Store.Team().GetMember(teamId, userId); result.Err != nil { + result := <-a.Srv.Store.Team().GetMember(teamId, userId) + if result.Err != nil { return nil, result.Err - } else { - return result.Data.(*model.TeamMember), nil } + return result.Data.(*model.TeamMember), nil } func (a *App) GetTeamMembersForUser(userId string) ([]*model.TeamMember, *model.AppError) { - if result := <-a.Srv.Store.Team().GetTeamsForUser(userId); result.Err != nil { + result := <-a.Srv.Store.Team().GetTeamsForUser(userId) + if result.Err != nil { return nil, result.Err - } else { - return result.Data.([]*model.TeamMember), nil } + return result.Data.([]*model.TeamMember), nil } func (a *App) GetTeamMembers(teamId string, offset int, limit int) ([]*model.TeamMember, *model.AppError) { - if result := <-a.Srv.Store.Team().GetMembers(teamId, offset, limit); result.Err != nil { + result := <-a.Srv.Store.Team().GetMembers(teamId, offset, limit) + if result.Err != nil { return nil, result.Err - } else { - return result.Data.([]*model.TeamMember), nil } + return result.Data.([]*model.TeamMember), nil } func (a *App) GetTeamMembersByIds(teamId string, userIds []string) ([]*model.TeamMember, *model.AppError) { - if result := <-a.Srv.Store.Team().GetMembersByIds(teamId, userIds); result.Err != nil { + result := <-a.Srv.Store.Team().GetMembersByIds(teamId, userIds) + if result.Err != nil { return nil, result.Err - } else { - return result.Data.([]*model.TeamMember), nil } + return result.Data.([]*model.TeamMember), nil } func (a *App) AddTeamMember(teamId, userId string) (*model.TeamMember, *model.AppError) { @@ -641,11 +636,11 @@ func (a *App) AddTeamMembers(teamId string, userIds []string, userRequestorId st return nil, err } - if teamMember, err := a.GetTeamMember(teamId, userId); err != nil { + teamMember, err := a.GetTeamMember(teamId, userId) + if err != nil { return nil, err - } else { - members = append(members, teamMember) } + members = append(members, teamMember) message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_ADDED_TO_TEAM, "", "", userId, nil) message.Add("team_id", teamId) @@ -657,33 +652,30 @@ func (a *App) AddTeamMembers(teamId string, userIds []string, userRequestorId st } func (a *App) AddTeamMemberByToken(userId, tokenId string) (*model.TeamMember, *model.AppError) { - var team *model.Team - var err *model.AppError - - if team, err = a.AddUserToTeamByToken(userId, tokenId); err != nil { + team, err := a.AddUserToTeamByToken(userId, tokenId) + if err != nil { return nil, err } - if teamMember, err := a.GetTeamMember(team.Id, userId); err != nil { + teamMember, err := a.GetTeamMember(team.Id, userId) + if err != nil { return nil, err - } else { - return teamMember, nil } + + return teamMember, nil } func (a *App) AddTeamMemberByInviteId(inviteId, userId string) (*model.TeamMember, *model.AppError) { - var team *model.Team - var err *model.AppError - - if team, err = a.AddUserToTeamByInviteId(inviteId, userId); err != nil { + team, err := a.AddUserToTeamByInviteId(inviteId, userId) + if err != nil { return nil, err } - if teamMember, err := a.GetTeamMember(team.Id, userId); err != nil { + teamMember, err := a.GetTeamMember(team.Id, userId) + if err != nil { return nil, err - } else { - return teamMember, nil } + return teamMember, nil } func (a *App) GetTeamUnread(teamId, userId string) (*model.TeamUnread, *model.AppError) { @@ -714,19 +706,17 @@ func (a *App) RemoveUserFromTeam(teamId string, userId string, requestorId strin tchan := a.Srv.Store.Team().Get(teamId) uchan := a.Srv.Store.User().Get(userId) - var team *model.Team - if result := <-tchan; result.Err != nil { + result := <-tchan + if result.Err != nil { return result.Err - } else { - team = result.Data.(*model.Team) } + team := result.Data.(*model.Team) - var user *model.User - if result := <-uchan; result.Err != nil { + result = <-uchan + if result.Err != nil { return result.Err - } else { - user = result.Data.(*model.User) } + user := result.Data.(*model.User) if err := a.LeaveTeam(team, user, requestorId); err != nil { return err @@ -749,7 +739,6 @@ func (a *App) LeaveTeam(team *model.Team, user *model.User, requestorId string) } else { return result.Err } - } else { channelList = result.Data.(*model.ChannelList) } @@ -763,12 +752,11 @@ func (a *App) LeaveTeam(team *model.Team, user *model.User, requestorId string) } } - var channel *model.Channel - if result := <-a.Srv.Store.Channel().GetByName(team.Id, model.DEFAULT_CHANNEL, false); result.Err != nil { + result := <-a.Srv.Store.Channel().GetByName(team.Id, model.DEFAULT_CHANNEL, false) + if result.Err != nil { return result.Err - } else { - channel = result.Data.(*model.Channel) } + channel := result.Data.(*model.Channel) if *a.Config().ServiceSettings.ExperimentalEnableDefaultChannelLeaveJoinMessages { if requestorId == user.Id { @@ -874,19 +862,17 @@ func (a *App) InviteNewUsersToTeam(emailList []string, teamId, senderId string) tchan := a.Srv.Store.Team().Get(teamId) uchan := a.Srv.Store.User().Get(senderId) - var team *model.Team - if result := <-tchan; result.Err != nil { + result := <-tchan + if result.Err != nil { return result.Err - } else { - team = result.Data.(*model.Team) } + team := result.Data.(*model.Team) - var user *model.User - if result := <-uchan; result.Err != nil { + result = <-uchan + if result.Err != nil { return result.Err - } else { - user = result.Data.(*model.User) } + user := result.Data.(*model.User) var invalidEmailList []string @@ -911,48 +897,47 @@ func (a *App) InviteNewUsersToTeam(emailList []string, teamId, senderId string) func (a *App) FindTeamByName(name string) bool { if result := <-a.Srv.Store.Team().GetByName(name); result.Err != nil { return false - } else { - return true } + return true } func (a *App) GetTeamsUnreadForUser(excludeTeamId string, userId string) ([]*model.TeamUnread, *model.AppError) { - if result := <-a.Srv.Store.Team().GetChannelUnreadsForAllTeams(excludeTeamId, userId); result.Err != nil { + result := <-a.Srv.Store.Team().GetChannelUnreadsForAllTeams(excludeTeamId, userId) + if result.Err != nil { return nil, result.Err - } else { - data := result.Data.([]*model.ChannelUnread) - members := []*model.TeamUnread{} - membersMap := make(map[string]*model.TeamUnread) - - unreads := func(cu *model.ChannelUnread, tu *model.TeamUnread) *model.TeamUnread { - tu.MentionCount += cu.MentionCount - - if cu.NotifyProps["mark_unread"] != model.CHANNEL_MARK_UNREAD_MENTION { - tu.MsgCount += cu.MsgCount - } - - return tu - } - - for i := range data { - id := data[i].TeamId - if mu, ok := membersMap[id]; ok { - membersMap[id] = unreads(data[i], mu) - } else { - membersMap[id] = unreads(data[i], &model.TeamUnread{ - MsgCount: 0, - MentionCount: 0, - TeamId: id, - }) - } - } - - for _, val := range membersMap { - members = append(members, val) - } - - return members, nil } + data := result.Data.([]*model.ChannelUnread) + members := []*model.TeamUnread{} + membersMap := make(map[string]*model.TeamUnread) + + unreads := func(cu *model.ChannelUnread, tu *model.TeamUnread) *model.TeamUnread { + tu.MentionCount += cu.MentionCount + + if cu.NotifyProps["mark_unread"] != model.CHANNEL_MARK_UNREAD_MENTION { + tu.MsgCount += cu.MsgCount + } + + return tu + } + + for i := range data { + id := data[i].TeamId + if mu, ok := membersMap[id]; ok { + membersMap[id] = unreads(data[i], mu) + } else { + membersMap[id] = unreads(data[i], &model.TeamUnread{ + MsgCount: 0, + MentionCount: 0, + TeamId: id, + }) + } + } + + for _, val := range membersMap { + members = append(members, val) + } + + return members, nil } func (a *App) PermanentDeleteTeamId(teamId string) *model.AppError { @@ -1021,17 +1006,17 @@ func (a *App) GetTeamStats(teamId string) (*model.TeamStats, *model.AppError) { stats := &model.TeamStats{} stats.TeamId = teamId - if result := <-tchan; result.Err != nil { + result := <-tchan + if result.Err != nil { return nil, result.Err - } else { - stats.TotalMemberCount = result.Data.(int64) } + stats.TotalMemberCount = result.Data.(int64) - if result := <-achan; result.Err != nil { + result = <-achan + if result.Err != nil { return nil, result.Err - } else { - stats.ActiveMemberCount = result.Data.(int64) } + stats.ActiveMemberCount = result.Data.(int64) return stats, nil } @@ -1059,13 +1044,14 @@ func (a *App) GetTeamIdFromQuery(query url.Values) (string, *model.AppError) { tokenData := model.MapFromJson(strings.NewReader(token.Extra)) return tokenData["teamId"], nil - } else if len(inviteId) > 0 { - if result := <-a.Srv.Store.Team().GetByInviteId(inviteId); result.Err != nil { - // soft fail, so we still create user but don't auto-join team - mlog.Error(fmt.Sprintf("%v", result.Err)) - } else { + } + if len(inviteId) > 0 { + result := <-a.Srv.Store.Team().GetByInviteId(inviteId) + if result.Err == nil { return result.Data.(*model.Team).Id, nil } + // soft fail, so we still create user but don't auto-join team + mlog.Error(fmt.Sprintf("%v", result.Err)) } return "", nil @@ -1090,14 +1076,15 @@ func (a *App) SanitizeTeams(session model.Session, teams []*model.Team) []*model func (a *App) GetTeamIcon(team *model.Team) ([]byte, *model.AppError) { if len(*a.Config().FileSettings.DriverName) == 0 { return nil, model.NewAppError("GetTeamIcon", "api.team.get_team_icon.filesettings_no_driver.app_error", nil, "", http.StatusNotImplemented) - } else { - path := "teams/" + team.Id + "/teamIcon.png" - if data, err := a.ReadFile(path); err != nil { - return nil, model.NewAppError("GetTeamIcon", "api.team.get_team_icon.read_file.app_error", nil, err.Error(), http.StatusNotFound) - } else { - return data, nil - } } + + path := "teams/" + team.Id + "/teamIcon.png" + data, err := a.ReadFile(path) + if err != nil { + return nil, model.NewAppError("GetTeamIcon", "api.team.get_team_icon.read_file.app_error", nil, err.Error(), http.StatusNotFound) + } + + return data, nil } func (a *App) SetTeamIcon(teamId string, imageData *multipart.FileHeader) *model.AppError { @@ -1110,7 +1097,6 @@ func (a *App) SetTeamIcon(teamId string, imageData *multipart.FileHeader) *model } func (a *App) SetTeamIconFromFile(teamId string, file multipart.File) *model.AppError { - team, getTeamErr := a.GetTeam(teamId) if getTeamErr != nil { @@ -1125,7 +1111,8 @@ func (a *App) SetTeamIconFromFile(teamId string, file multipart.File) *model.App config, _, err := image.DecodeConfig(file) if err != nil { return model.NewAppError("SetTeamIcon", "api.team.set_team_icon.decode_config.app_error", nil, err.Error(), http.StatusBadRequest) - } else if config.Width*config.Height > model.MaxImageSize { + } + if config.Width*config.Height > model.MaxImageSize { return model.NewAppError("SetTeamIcon", "api.team.set_team_icon.too_large.app_error", nil, err.Error(), http.StatusBadRequest) }