summaryrefslogtreecommitdiffstats
path: root/app/channel.go
diff options
context:
space:
mode:
authorSaturnino Abril <saturnino.abril@gmail.com>2017-08-01 20:16:45 +0800
committerJoram Wilander <jwawilander@gmail.com>2017-08-01 08:16:45 -0400
commit88f398ffddbcbb58265d085c09cb72008be3f3d5 (patch)
tree6db22e220a781a144808e113505ce040c7e2eac7 /app/channel.go
parentb023b891550cd8fb2f874e822f05921d13f51fb2 (diff)
downloadchat-88f398ffddbcbb58265d085c09cb72008be3f3d5.tar.gz
chat-88f398ffddbcbb58265d085c09cb72008be3f3d5.tar.bz2
chat-88f398ffddbcbb58265d085c09cb72008be3f3d5.zip
Revert " #4755 Combining consecutive user join/leave system messages to single message and few other changes." (#7072)
* Revert "PLT-6603: Don't return all posts on invalid query. (#7061)" This reverts commit 25a2013890c7e07b4621fa9b18342e7f35363049. * Revert " #4755 Combining consecutive user join/leave system messages to single message and few other changes. (#5945)" This reverts commit 8a91235fb3cdc8d094dbc2eaa0d7baa447132b3c.
Diffstat (limited to 'app/channel.go')
-rw-r--r--app/channel.go161
1 files changed, 44 insertions, 117 deletions
diff --git a/app/channel.go b/app/channel.go
index 083700795..03df0e800 100644
--- a/app/channel.go
+++ b/app/channel.go
@@ -897,75 +897,19 @@ func JoinChannel(channel *model.Channel, userId string) *model.AppError {
return nil
}
-func createUserActivitySystemMessage(channel *model.Channel, user *model.User, otherUsername, messageType, message string) *model.AppError {
- props := model.StringInterface{"username": user.Username}
- if messageType == model.POST_ADD_TO_CHANNEL {
- props["addedUsername"] = otherUsername
- }
-
- if messageType == model.POST_REMOVE_FROM_CHANNEL {
- props["removedUsername"] = user.Username
- delete(props, "username")
- }
-
+func postJoinChannelMessage(user *model.User, channel *model.Channel) *model.AppError {
post := &model.Post{
ChannelId: channel.Id,
- Message: message,
- Type: messageType,
+ Message: fmt.Sprintf(utils.T("api.channel.join_channel.post_and_forget"), user.Username),
+ Type: model.POST_JOIN_CHANNEL,
UserId: user.Id,
- Props: props,
+ Props: model.StringInterface{
+ "username": user.Username,
+ },
}
if _, err := CreatePost(post, channel.TeamId, false); err != nil {
- return model.NewLocAppError("createUserActivitySystemMessage", "api.channel.create_user_activity_post.error", nil, err.Error())
- }
-
- return nil
-}
-
-func updateUserActivitySystemMessage(post *model.Post, username, otherUsername, messageType, messageToAdd string) *model.AppError {
- post.Message += " " + messageToAdd
- props := model.StringMap{"type": messageType, "username": username}
- if messageType == model.POST_ADD_TO_CHANNEL {
- props["addedUsername"] = otherUsername
- }
-
- if messageType == model.POST_REMOVE_FROM_CHANNEL {
- props["removedUsername"] = username
- delete(props, "username")
- }
-
- if val, ok := post.Props["messages"]; ok {
- post.Props["messages"] = append(val.([]interface{}), props)
- } else {
- oldProps := make(model.StringInterface)
- for key, value := range post.Props {
- oldProps[key] = value
- }
- oldProps["type"] = post.Type
- post.Props["messages"] = []interface{}{oldProps, props}
- }
-
- if _, err := UpdatePost(post, false); err != nil {
- return model.NewLocAppError("updateUserActivitySystemMessage", "api.channel.update_user_activity_post.error", nil, err.Error())
- }
-
- return nil
-}
-
-func postJoinChannelMessage(user *model.User, channel *model.Channel) *model.AppError {
- message := fmt.Sprintf(utils.T("api.channel.join_channel.post_and_forget"), user.Username)
-
- if post, err := GetLastPostForChannel(channel.Id); err != nil {
- return err
- } else if post.IsUserActivitySystemMessage() {
- if err := updateUserActivitySystemMessage(post, user.Username, "", model.POST_JOIN_CHANNEL, message); err != nil {
- return err
- }
- } else {
- if err := createUserActivitySystemMessage(channel, user, "", model.POST_JOIN_CHANNEL, message); err != nil {
- return err
- }
+ return model.NewLocAppError("postJoinChannelMessage", "api.channel.post_user_add_remove_message_and_forget.error", nil, err.Error())
}
return nil
@@ -1010,64 +954,55 @@ func LeaveChannel(channelId string, userId string) *model.AppError {
}
func postLeaveChannelMessage(user *model.User, channel *model.Channel) *model.AppError {
- message := fmt.Sprintf(utils.T("api.channel.leave.left"), user.Username)
+ post := &model.Post{
+ ChannelId: channel.Id,
+ Message: fmt.Sprintf(utils.T("api.channel.leave.left"), user.Username),
+ Type: model.POST_LEAVE_CHANNEL,
+ UserId: user.Id,
+ Props: model.StringInterface{
+ "username": user.Username,
+ },
+ }
- if post, err := GetLastPostForChannel(channel.Id); err != nil {
- return err
- } else if post.IsUserActivitySystemMessage() {
- if err := updateUserActivitySystemMessage(post, user.Username, "", model.POST_LEAVE_CHANNEL, message); err != nil {
- return err
- }
- } else {
- if err := createUserActivitySystemMessage(channel, user, "", model.POST_LEAVE_CHANNEL, message); err != nil {
- return err
- }
+ if _, err := CreatePost(post, channel.TeamId, false); err != nil {
+ return model.NewLocAppError("postLeaveChannelMessage", "api.channel.post_user_add_remove_message_and_forget.error", nil, err.Error())
}
return nil
}
func PostAddToChannelMessage(user *model.User, addedUser *model.User, channel *model.Channel) *model.AppError {
- message := fmt.Sprintf(utils.T("api.channel.add_member.added"), user.Username, addedUser.Username)
-
- if post, err := GetLastPostForChannel(channel.Id); err != nil {
- return err
- } else if post.IsUserActivitySystemMessage() {
- if err := updateUserActivitySystemMessage(post, user.Username, addedUser.Username, model.POST_ADD_TO_CHANNEL, message); err != nil {
- return err
- }
+ post := &model.Post{
+ ChannelId: channel.Id,
+ Message: fmt.Sprintf(utils.T("api.channel.add_member.added"), addedUser.Username, user.Username),
+ Type: model.POST_ADD_TO_CHANNEL,
+ UserId: user.Id,
+ Props: model.StringInterface{
+ "username": user.Username,
+ "addedUsername": addedUser.Username,
+ },
+ }
- SendNotificationsForSystemMessageAddRemove(user, addedUser, channel, post)
- } else {
- if err := createUserActivitySystemMessage(channel, user, addedUser.Username, model.POST_ADD_TO_CHANNEL, message); err != nil {
- return err
- }
+ if _, err := CreatePost(post, channel.TeamId, false); err != nil {
+ return model.NewLocAppError("postAddToChannelMessage", "api.channel.post_user_add_remove_message_and_forget.error", nil, err.Error())
}
return nil
}
func PostRemoveFromChannelMessage(removerUserId string, removedUser *model.User, channel *model.Channel) *model.AppError {
- message := fmt.Sprintf(utils.T("api.channel.remove_member.removed"), removedUser.Username)
-
- removerUser, err := GetUser(removerUserId)
- if err != nil {
- fmt.Printf("err: %+v\n", err)
- return err
+ post := &model.Post{
+ ChannelId: channel.Id,
+ Message: fmt.Sprintf(utils.T("api.channel.remove_member.removed"), removedUser.Username),
+ Type: model.POST_REMOVE_FROM_CHANNEL,
+ UserId: removerUserId,
+ Props: model.StringInterface{
+ "removedUsername": removedUser.Username,
+ },
}
- if post, err := GetLastPostForChannel(channel.Id); err != nil {
- return err
- } else if post.IsUserActivitySystemMessage() {
- if err := updateUserActivitySystemMessage(post, removedUser.Username, removerUser.Username, model.POST_REMOVE_FROM_CHANNEL, message); err != nil {
- return err
- }
-
- SendNotificationsForSystemMessageAddRemove(removerUser, removedUser, channel, post)
- } else {
- if err := createUserActivitySystemMessage(channel, removedUser, removerUser.Username, model.POST_ADD_TO_CHANNEL, message); err != nil {
- return err
- }
+ if _, err := CreatePost(post, channel.TeamId, false); err != nil {
+ return model.NewLocAppError("postRemoveFromChannelMessage", "api.channel.post_user_add_remove_message_and_forget.error", nil, err.Error())
}
return nil
@@ -1111,28 +1046,20 @@ func RemoveUserFromChannel(userIdToRemove string, removerUserId string, channel
return err
}
- var userToRemove *model.User
- if userToRemove, err = GetUser(userIdToRemove); err != nil {
+ var user *model.User
+ if user, err = GetUser(userIdToRemove); err != nil {
return err
}
if userIdToRemove == removerUserId {
- postLeaveChannelMessage(userToRemove, channel)
+ postLeaveChannelMessage(user, channel)
} else {
- go PostRemoveFromChannelMessage(removerUserId, userToRemove, channel)
+ go PostRemoveFromChannelMessage(removerUserId, user, channel)
}
return nil
}
-func GetLastPostForChannel(channelId string) (*model.Post, *model.AppError) {
- result := <-Srv.Store.Post().GetLastPostForChannel(channelId)
- if result.Err != nil {
- return nil, result.Err
- }
- return result.Data.(*model.Post), nil
-}
-
func GetNumberOfChannelsOnTeam(teamId string) (int, *model.AppError) {
// Get total number of channels on current team
if result := <-Srv.Store.Channel().GetTeamChannels(teamId); result.Err != nil {