From 88f398ffddbcbb58265d085c09cb72008be3f3d5 Mon Sep 17 00:00:00 2001 From: Saturnino Abril Date: Tue, 1 Aug 2017 20:16:45 +0800 Subject: 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. --- app/channel.go | 161 ++++++++++++++++----------------------------------------- 1 file changed, 44 insertions(+), 117 deletions(-) (limited to 'app/channel.go') 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 { -- cgit v1.2.3-1-g7c22