summaryrefslogtreecommitdiffstats
path: root/api
diff options
context:
space:
mode:
authorenahum <nahumhbl@gmail.com>2016-08-18 17:37:55 -0500
committerCorey Hulen <corey@hulen.com>2016-08-18 14:37:55 -0800
commited6b69aab3136b2a5bcddbab77659640cd4d6534 (patch)
treea7c455fd49bb3c43847c1adb011c304c22878410 /api
parent4a2fbcaf983e3180e00bb846f4ed65a2670b9251 (diff)
downloadchat-ed6b69aab3136b2a5bcddbab77659640cd4d6534.tar.gz
chat-ed6b69aab3136b2a5bcddbab77659640cd4d6534.tar.bz2
chat-ed6b69aab3136b2a5bcddbab77659640cd4d6534.zip
PLT-3754 EE: Add a Display Option to disable Join/Leave messages (#3808)
* PLT-3754 EE: Add a Display Option to disable Join/Leave messages * Differentiate between join/leave add/remove messages * Update user removed from channel text message
Diffstat (limited to 'api')
-rw-r--r--api/channel.go66
1 files changed, 38 insertions, 28 deletions
diff --git a/api/channel.go b/api/channel.go
index 3fef273e5..5d3021cee 100644
--- a/api/channel.go
+++ b/api/channel.go
@@ -530,7 +530,7 @@ func joinChannel(c *Context, channelChannel store.StoreChannel, userChannel stor
if _, err := AddUserToChannel(user, channel); err != nil {
return err, nil
}
- go PostUserAddRemoveMessage(c, channel.Id, fmt.Sprintf(utils.T("api.channel.join_channel.post_and_forget"), user.Username))
+ go PostUserAddRemoveMessage(c, channel.Id, fmt.Sprintf(utils.T("api.channel.join_channel.post_and_forget"), user.Username), model.POST_JOIN_LEAVE)
} else {
return model.NewLocAppError("join", "api.channel.join_channel.permissions.app_error", nil, ""), nil
}
@@ -538,11 +538,11 @@ func joinChannel(c *Context, channelChannel store.StoreChannel, userChannel stor
}
}
-func PostUserAddRemoveMessage(c *Context, channelId string, message string) {
+func PostUserAddRemoveMessage(c *Context, channelId string, message, postType string) {
post := &model.Post{
ChannelId: channelId,
Message: message,
- Type: model.POST_JOIN_LEAVE,
+ Type: postType,
}
if _, err := CreatePost(c, post, false); err != nil {
l4g.Error(utils.T("api.channel.post_user_add_remove_message_and_forget.error"), err)
@@ -677,7 +677,7 @@ func leave(c *Context, w http.ResponseWriter, r *http.Request) {
RemoveUserFromChannel(c.Session.UserId, c.Session.UserId, channel)
- go PostUserAddRemoveMessage(c, channel.Id, fmt.Sprintf(utils.T("api.channel.leave.left"), user.Username))
+ go PostUserAddRemoveMessage(c, channel.Id, fmt.Sprintf(utils.T("api.channel.leave.left"), user.Username), model.POST_JOIN_LEAVE)
result := make(map[string]string)
result["id"] = channel.Id
@@ -992,7 +992,7 @@ func addMember(c *Context, w http.ResponseWriter, r *http.Request) {
c.LogAudit("name=" + channel.Name + " user_id=" + userId)
- go PostUserAddRemoveMessage(c, channel.Id, fmt.Sprintf(utils.T("api.channel.add_member.added"), nUser.Username, oUser.Username))
+ go PostUserAddRemoveMessage(c, channel.Id, fmt.Sprintf(utils.T("api.channel.add_member.added"), nUser.Username, oUser.Username), model.POST_ADD_REMOVE)
<-Srv.Store.Channel().UpdateLastViewedAt(id, oUser.Id)
w.Write([]byte(cm.ToJson()))
@@ -1014,38 +1014,48 @@ func removeMember(c *Context, w http.ResponseWriter, r *http.Request) {
sc := Srv.Store.Channel().Get(channelId)
cmc := Srv.Store.Channel().GetMember(channelId, c.Session.UserId)
+ ouc := Srv.Store.User().Get(userIdToRemove)
- if cresult := <-sc; cresult.Err != nil {
- c.Err = cresult.Err
- return
- } else if cmcresult := <-cmc; cmcresult.Err != nil {
- c.Err = cmcresult.Err
+ if oresult := <-ouc; oresult.Err != nil {
+ c.Err = model.NewLocAppError("removeMember", "api.channel.remove_member.user.app_error", nil, "")
return
} else {
- channel := cresult.Data.(*model.Channel)
- removerChannelMember := cmcresult.Data.(model.ChannelMember)
+ oUser := oresult.Data.(*model.User)
- if !c.HasPermissionsToTeam(channel.TeamId, "removeMember") {
+ if cresult := <-sc; cresult.Err != nil {
+ c.Err = cresult.Err
return
- }
-
- if !strings.Contains(removerChannelMember.Roles, model.CHANNEL_ROLE_ADMIN) && !c.IsTeamAdmin() {
- c.Err = model.NewLocAppError("updateChannel", "api.channel.remove_member.permissions.app_error", nil, "")
- c.Err.StatusCode = http.StatusForbidden
+ } else if cmcresult := <-cmc; cmcresult.Err != nil {
+ c.Err = cmcresult.Err
return
- }
+ } else {
+ channel := cresult.Data.(*model.Channel)
+ removerChannelMember := cmcresult.Data.(model.ChannelMember)
- if err := RemoveUserFromChannel(userIdToRemove, c.Session.UserId, channel); err != nil {
- c.Err = model.NewLocAppError("updateChannel", "api.channel.remove_member.unable.app_error", nil, err.Message)
- return
- }
+ if !c.HasPermissionsToTeam(channel.TeamId, "removeMember") {
+ return
+ }
- c.LogAudit("name=" + channel.Name + " user_id=" + userIdToRemove)
+ if !strings.Contains(removerChannelMember.Roles, model.CHANNEL_ROLE_ADMIN) && !c.IsTeamAdmin() {
+ c.Err = model.NewLocAppError("updateChannel", "api.channel.remove_member.permissions.app_error", nil, "")
+ c.Err.StatusCode = http.StatusForbidden
+ return
+ }
- result := make(map[string]string)
- result["channel_id"] = channel.Id
- result["removed_user_id"] = userIdToRemove
- w.Write([]byte(model.MapToJson(result)))
+ if err := RemoveUserFromChannel(userIdToRemove, c.Session.UserId, channel); err != nil {
+ c.Err = model.NewLocAppError("updateChannel", "api.channel.remove_member.unable.app_error", nil, err.Message)
+ return
+ }
+
+ c.LogAudit("name=" + channel.Name + " user_id=" + userIdToRemove)
+
+ go PostUserAddRemoveMessage(c, channel.Id, fmt.Sprintf(utils.T("api.channel.remove_member.removed"), oUser.Username), model.POST_ADD_REMOVE)
+
+ result := make(map[string]string)
+ result["channel_id"] = channel.Id
+ result["removed_user_id"] = userIdToRemove
+ w.Write([]byte(model.MapToJson(result)))
+ }
}
}