summaryrefslogtreecommitdiffstats
path: root/app
diff options
context:
space:
mode:
authorJoram Wilander <jwawilander@gmail.com>2017-02-03 15:17:34 -0500
committerGitHub <noreply@github.com>2017-02-03 15:17:34 -0500
commit7ff2aef7facdeb025a1651ef411fceb3d81932c1 (patch)
tree7ea2f7b89e4b4c1acf3ca021377b0166089ba397 /app
parent948b557453550646ad3213cb4144055eb7db0d69 (diff)
downloadchat-7ff2aef7facdeb025a1651ef411fceb3d81932c1.tar.gz
chat-7ff2aef7facdeb025a1651ef411fceb3d81932c1.tar.bz2
chat-7ff2aef7facdeb025a1651ef411fceb3d81932c1.zip
Implement GET /users endpoint for APIv4 (#5277)
Diffstat (limited to 'app')
-rw-r--r--app/channel.go10
-rw-r--r--app/notification.go2
-rw-r--r--app/user.go134
3 files changed, 130 insertions, 16 deletions
diff --git a/app/channel.go b/app/channel.go
index 02124f3c8..3609a36b7 100644
--- a/app/channel.go
+++ b/app/channel.go
@@ -404,22 +404,20 @@ func AddUserToChannel(user *model.User, channel *model.Channel) (*model.ChannelM
}
func AddDirectChannels(teamId string, user *model.User) *model.AppError {
- var profiles map[string]*model.User
+ var profiles []*model.User
if result := <-Srv.Store.User().GetProfiles(teamId, 0, 100); result.Err != nil {
return model.NewLocAppError("AddDirectChannels", "api.user.add_direct_channels_and_forget.failed.error", map[string]interface{}{"UserId": user.Id, "TeamId": teamId, "Error": result.Err.Error()}, "")
} else {
- profiles = result.Data.(map[string]*model.User)
+ profiles = result.Data.([]*model.User)
}
var preferences model.Preferences
- for id := range profiles {
- if id == user.Id {
+ for _, profile := range profiles {
+ if profile.Id == user.Id {
continue
}
- profile := profiles[id]
-
preference := model.Preference{
UserId: user.Id,
Category: model.PREFERENCE_CATEGORY_DIRECT_CHANNEL_SHOW,
diff --git a/app/notification.go b/app/notification.go
index 9ad0b346b..cc4e13ab1 100644
--- a/app/notification.go
+++ b/app/notification.go
@@ -25,7 +25,7 @@ import (
)
func SendNotifications(post *model.Post, team *model.Team, channel *model.Channel, sender *model.User) ([]string, *model.AppError) {
- pchan := Srv.Store.User().GetProfilesInChannel(channel.Id, -1, -1, true)
+ pchan := Srv.Store.User().GetAllProfilesInChannel(channel.Id, true)
fchan := Srv.Store.FileInfo().GetForPost(post.Id)
var profileMap map[string]*model.User
diff --git a/app/user.go b/app/user.go
index f9137b1e9..bc809cfaa 100644
--- a/app/user.go
+++ b/app/user.go
@@ -377,44 +377,160 @@ func GetUserForLogin(loginId string, onlyLdap bool) (*model.User, *model.AppErro
}
}
-func GetUsers(offset int, limit int) (map[string]*model.User, *model.AppError) {
+func GetUsers(offset int, limit int) ([]*model.User, *model.AppError) {
if result := <-Srv.Store.User().GetAllProfiles(offset, limit); result.Err != nil {
return nil, result.Err
} else {
- return result.Data.(map[string]*model.User), nil
+ return result.Data.([]*model.User), nil
+ }
+}
+
+func GetUsersMap(page int, perPage int, asAdmin bool) (map[string]*model.User, *model.AppError) {
+ users, err := GetUsers(page*perPage, perPage)
+ if err != nil {
+ return nil, err
+ }
+
+ userMap := make(map[string]*model.User, len(users))
+
+ for _, user := range users {
+ SanitizeProfile(user, asAdmin)
+ userMap[user.Id] = user
}
+
+ return userMap, nil
+}
+
+func GetUsersPage(page int, perPage int, asAdmin bool) ([]*model.User, *model.AppError) {
+ users, err := GetUsers(page*perPage, perPage)
+ if err != nil {
+ return nil, err
+ }
+
+ for _, user := range users {
+ SanitizeProfile(user, asAdmin)
+ }
+
+ return users, nil
}
func GetUsersEtag() string {
return (<-Srv.Store.User().GetEtagForAllProfiles()).Data.(string)
}
-func GetUsersInTeam(teamId string, offset int, limit int) (map[string]*model.User, *model.AppError) {
+func GetUsersInTeam(teamId string, offset int, limit int) ([]*model.User, *model.AppError) {
if result := <-Srv.Store.User().GetProfiles(teamId, offset, limit); result.Err != nil {
return nil, result.Err
} else {
- return result.Data.(map[string]*model.User), nil
+ return result.Data.([]*model.User), nil
+ }
+}
+
+func GetUsersInTeamMap(teamId string, offset int, limit int, asAdmin bool) (map[string]*model.User, *model.AppError) {
+ users, err := GetUsersInTeam(teamId, offset, limit)
+ if err != nil {
+ return nil, err
+ }
+
+ userMap := make(map[string]*model.User, len(users))
+
+ for _, user := range users {
+ SanitizeProfile(user, asAdmin)
+ userMap[user.Id] = user
}
+
+ return userMap, nil
+}
+
+func GetUsersInTeamPage(teamId string, page int, perPage int, asAdmin bool) ([]*model.User, *model.AppError) {
+ users, err := GetUsersInTeam(teamId, page*perPage, perPage)
+ if err != nil {
+ return nil, err
+ }
+
+ for _, user := range users {
+ SanitizeProfile(user, asAdmin)
+ }
+
+ return users, nil
}
func GetUsersInTeamEtag(teamId string) string {
return (<-Srv.Store.User().GetEtagForProfiles(teamId)).Data.(string)
}
-func GetUsersInChannel(channelId string, offset int, limit int) (map[string]*model.User, *model.AppError) {
- if result := <-Srv.Store.User().GetProfilesInChannel(channelId, offset, limit, false); result.Err != nil {
+func GetUsersInChannel(channelId string, offset int, limit int) ([]*model.User, *model.AppError) {
+ if result := <-Srv.Store.User().GetProfilesInChannel(channelId, offset, limit); result.Err != nil {
return nil, result.Err
} else {
- return result.Data.(map[string]*model.User), nil
+ return result.Data.([]*model.User), nil
+ }
+}
+
+func GetUsersInChannelMap(channelId string, offset int, limit int, asAdmin bool) (map[string]*model.User, *model.AppError) {
+ users, err := GetUsersInChannel(channelId, offset, limit)
+ if err != nil {
+ return nil, err
+ }
+
+ userMap := make(map[string]*model.User, len(users))
+
+ for _, user := range users {
+ SanitizeProfile(user, asAdmin)
+ userMap[user.Id] = user
}
+
+ return userMap, nil
+}
+
+func GetUsersInChannelPage(channelId string, page int, perPage int, asAdmin bool) ([]*model.User, *model.AppError) {
+ users, err := GetUsersInChannel(channelId, page*perPage, perPage)
+ if err != nil {
+ return nil, err
+ }
+
+ for _, user := range users {
+ SanitizeProfile(user, asAdmin)
+ }
+
+ return users, nil
}
-func GetUsersNotInChannel(teamId string, channelId string, offset int, limit int) (map[string]*model.User, *model.AppError) {
+func GetUsersNotInChannel(teamId string, channelId string, offset int, limit int) ([]*model.User, *model.AppError) {
if result := <-Srv.Store.User().GetProfilesNotInChannel(teamId, channelId, offset, limit); result.Err != nil {
return nil, result.Err
} else {
- return result.Data.(map[string]*model.User), nil
+ return result.Data.([]*model.User), nil
+ }
+}
+
+func GetUsersNotInChannelMap(teamId string, channelId string, offset int, limit int, asAdmin bool) (map[string]*model.User, *model.AppError) {
+ users, err := GetUsersNotInChannel(teamId, channelId, offset, limit)
+ if err != nil {
+ return nil, err
+ }
+
+ userMap := make(map[string]*model.User, len(users))
+
+ for _, user := range users {
+ SanitizeProfile(user, asAdmin)
+ userMap[user.Id] = user
}
+
+ return userMap, nil
+}
+
+func GetUsersNotInChannelPage(teamId string, channelId string, page int, perPage int, asAdmin bool) ([]*model.User, *model.AppError) {
+ users, err := GetUsersNotInChannel(teamId, channelId, page*perPage, perPage)
+ if err != nil {
+ return nil, err
+ }
+
+ for _, user := range users {
+ SanitizeProfile(user, asAdmin)
+ }
+
+ return users, nil
}
func GetUsersByIds(userIds []string, asAdmin bool) ([]*model.User, *model.AppError) {