diff --git a/app/channel.go b/app/channel.go index 344083dff5..2420fa2ac4 100644 --- a/app/channel.go +++ b/app/channel.go @@ -2278,7 +2278,9 @@ func (a *App) RemoveUserFromChannel(userIDToRemove string, removerUserId string, } if userIDToRemove == removerUserId { - a.postLeaveChannelMessage(user, channel) + if err := a.postLeaveChannelMessage(user, channel); err != nil { + return err + } } else { a.Srv().Go(func() { a.postRemoveFromChannelMessage(removerUserId, user, channel) diff --git a/config/utils.go b/config/utils.go index 927443dfdb..17f3159650 100644 --- a/config/utils.go +++ b/config/utils.go @@ -86,29 +86,21 @@ func desanitize(actual, target *model.Config) { } } -// fixConfig patches invalid or missing data in the configuration, returning true if changed. -func fixConfig(cfg *model.Config) bool { - changed := false - +// fixConfig patches invalid or missing data in the configuration. +func fixConfig(cfg *model.Config) { // Ensure SiteURL has no trailing slash. if strings.HasSuffix(*cfg.ServiceSettings.SiteURL, "/") { *cfg.ServiceSettings.SiteURL = strings.TrimRight(*cfg.ServiceSettings.SiteURL, "/") - changed = true } // Ensure the directory for a local file store has a trailing slash. if *cfg.FileSettings.DriverName == model.IMAGE_DRIVER_LOCAL { if *cfg.FileSettings.Directory != "" && !strings.HasSuffix(*cfg.FileSettings.Directory, "/") { *cfg.FileSettings.Directory += "/" - changed = true } } - if FixInvalidLocales(cfg) { - changed = true - } - - return changed + FixInvalidLocales(cfg) } // FixInvalidLocales checks and corrects the given config for invalid locale-related settings. diff --git a/store/searchtest/helper.go b/store/searchtest/helper.go index 02a50ad2c0..0581047e72 100644 --- a/store/searchtest/helper.go +++ b/store/searchtest/helper.go @@ -92,17 +92,17 @@ func (th *SearchTestHelper) SetupBasicFixtures() error { return err } - _, err = th.addUserToChannels(user, []string{channelBasic.Id, channelPrivate.Id, channelDeleted.Id}) + err = th.addUserToChannels(user, []string{channelBasic.Id, channelPrivate.Id, channelDeleted.Id}) if err != nil { return err } - _, err = th.addUserToChannels(user2, []string{channelPrivate.Id, channelDeleted.Id}) + err = th.addUserToChannels(user2, []string{channelPrivate.Id, channelDeleted.Id}) if err != nil { return err } - _, err = th.addUserToChannels(useranother, []string{channelAnotherTeam.Id}) + err = th.addUserToChannels(useranother, []string{channelAnotherTeam.Id}) if err != nil { return err } @@ -305,7 +305,7 @@ func (th *SearchTestHelper) createGroupChannel(teamID, displayName string, users } for _, user := range users { - _, err := th.addUserToChannels(user, []string{channel.Id}) + err := th.addUserToChannels(user, []string{channel.Id}) if err != nil { return nil, err } @@ -415,22 +415,19 @@ func (th *SearchTestHelper) addUserToTeams(user *model.User, teamIDS []string) e return nil } -func (th *SearchTestHelper) addUserToChannels(user *model.User, channelIDS []string) ([]*model.ChannelMember, error) { - - channelMembers := make([]*model.ChannelMember, len(channelIDS)) +func (th *SearchTestHelper) addUserToChannels(user *model.User, channelIDS []string) error { for _, channelID := range channelIDS { - cm, err := th.Store.Channel().SaveMember(&model.ChannelMember{ + _, err := th.Store.Channel().SaveMember(&model.ChannelMember{ ChannelId: channelID, UserId: user.Id, NotifyProps: model.GetDefaultChannelNotifyProps(), }) if err != nil { - return nil, errors.New(err.Error()) + return errors.New(err.Error()) } - channelMembers = append(channelMembers, cm) } - return channelMembers, nil + return nil } func (th *SearchTestHelper) assertUsersMatchInAnyOrder(t *testing.T, expected, actual []*model.User) { diff --git a/store/searchtest/user_layer.go b/store/searchtest/user_layer.go index a00b906e2b..b5c1d23121 100644 --- a/store/searchtest/user_layer.go +++ b/store/searchtest/user_layer.go @@ -212,13 +212,13 @@ func testHonorChannelRestrictionsAutocompletingUsers(t *testing.T, th *SearchTes defer th.deleteUser(userAlternate) err = th.addUserToTeams(userAlternate, []string{th.Team.Id}) require.NoError(t, err) - _, err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id}) + err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id}) require.NoError(t, err) guest, err := th.createGuest("guest", "guest", "guest", "one") require.NoError(t, err) err = th.addUserToTeams(guest, []string{th.Team.Id}) require.NoError(t, err) - _, err = th.addUserToChannels(guest, []string{th.ChannelBasic.Id}) + err = th.addUserToChannels(guest, []string{th.ChannelBasic.Id}) require.NoError(t, err) defer th.deleteUser(guest) t.Run("Autocomplete users with channel restrictions", func(t *testing.T) { @@ -317,7 +317,7 @@ func testAutocompleteUserByUsername(t *testing.T, th *SearchTestHelper) { defer th.deleteUser(userAlternate) err = th.addUserToTeams(userAlternate, []string{th.Team.Id}) require.NoError(t, err) - _, err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id}) + err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id}) require.NoError(t, err) options := createDefaultOptions(false, false, false) users, err := th.Store.User().AutocompleteUsersInChannel(th.Team.Id, th.ChannelBasic.Id, "basicusername", options) @@ -331,7 +331,7 @@ func testAutocompleteUserByFirstName(t *testing.T, th *SearchTestHelper) { defer th.deleteUser(userAlternate) err = th.addUserToTeams(userAlternate, []string{th.Team.Id}) require.NoError(t, err) - _, err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id}) + err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id}) require.NoError(t, err) t.Run("Should autocomplete users when the first name is unique", func(t *testing.T) { options := createDefaultOptions(true, false, false) @@ -354,7 +354,7 @@ func testAutocompleteUserByLastName(t *testing.T, th *SearchTestHelper) { defer th.deleteUser(userAlternate) err = th.addUserToTeams(userAlternate, []string{th.Team.Id}) require.NoError(t, err) - _, err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id}) + err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id}) require.NoError(t, err) t.Run("Should return results when the last name is unique", func(t *testing.T) { options := createDefaultOptions(true, false, false) @@ -377,7 +377,7 @@ func testAutocompleteUserByNickName(t *testing.T, th *SearchTestHelper) { defer th.deleteUser(userAlternate) err = th.addUserToTeams(userAlternate, []string{th.Team.Id}) require.NoError(t, err) - _, err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id}) + err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id}) require.NoError(t, err) t.Run("Should return results when the nickname is unique", func(t *testing.T) { options := createDefaultOptions(true, false, false) @@ -403,7 +403,7 @@ func testAutocompleteUserByEmail(t *testing.T, th *SearchTestHelper) { defer th.deleteUser(userAlternate) err = th.addUserToTeams(userAlternate, []string{th.Team.Id}) require.NoError(t, err) - _, err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id}) + err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id}) require.NoError(t, err) t.Run("Should autocomplete users when the email is unique", func(t *testing.T) { options := createDefaultOptions(false, true, false) @@ -458,7 +458,7 @@ func testAutocompleteUserByUsernameWithDot(t *testing.T, th *SearchTestHelper) { defer th.deleteUser(userAlternate) err = th.addUserToTeams(userAlternate, []string{th.Team.Id}) require.NoError(t, err) - _, err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id}) + err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id}) require.NoError(t, err) t.Run("Should return results when searching for the whole username with Dot", func(t *testing.T) { options := createDefaultOptions(false, false, false) @@ -488,7 +488,7 @@ func testAutocompleteUserByUsernameWithUnderscore(t *testing.T, th *SearchTestHe defer th.deleteUser(userAlternate) err = th.addUserToTeams(userAlternate, []string{th.Team.Id}) require.NoError(t, err) - _, err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id}) + err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id}) require.NoError(t, err) t.Run("Should return results when searching for the whole username with underscore", func(t *testing.T) { options := createDefaultOptions(false, false, false) @@ -518,7 +518,7 @@ func testAutocompleteUserByUsernameWithHyphen(t *testing.T, th *SearchTestHelper defer th.deleteUser(userAlternate) err = th.addUserToTeams(userAlternate, []string{th.Team.Id}) require.NoError(t, err) - _, err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id}) + err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id}) require.NoError(t, err) t.Run("Should return results when searching for the whole username with hyphen", func(t *testing.T) { options := createDefaultOptions(false, false, false) @@ -549,7 +549,7 @@ func testShouldEscapePercentageCharacter(t *testing.T, th *SearchTestHelper) { defer th.deleteUser(userAlternate) err = th.addUserToTeams(userAlternate, []string{th.Team.Id}) require.NoError(t, err) - _, err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id}) + err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id}) require.NoError(t, err) t.Run("Should autocomplete users escaping percentage symbol", func(t *testing.T) { options := createDefaultOptions(false, false, false) @@ -571,7 +571,7 @@ func testShouldEscapeUnderscoreCharacter(t *testing.T, th *SearchTestHelper) { defer th.deleteUser(userAlternate) err = th.addUserToTeams(userAlternate, []string{th.Team.Id}) require.NoError(t, err) - _, err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id}) + err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id}) require.NoError(t, err) t.Run("Should autocomplete users escaping underscore symbol", func(t *testing.T) { options := createDefaultOptions(false, false, false) @@ -597,7 +597,7 @@ func testShouldBeAbleToSearchInactiveUsers(t *testing.T, th *SearchTestHelper) { defer th.deleteUser(userAlternate) err = th.addUserToTeams(userAlternate, []string{th.Team.Id}) require.NoError(t, err) - _, err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id}) + err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id}) require.NoError(t, err) t.Run("Should autocomplete inactive users if we allow it", func(t *testing.T) { options := createDefaultOptions(false, false, true) @@ -644,7 +644,7 @@ func testShouldBeAbleToSearchFilteringByRole(t *testing.T, th *SearchTestHelper) require.NoError(t, err) err = th.addUserToTeams(userAlternate2, []string{th.Team.Id}) require.NoError(t, err) - _, err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id}) + err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id}) require.NoError(t, err) t.Run("Should autocomplete users filtering by roles", func(t *testing.T) { options := createDefaultOptions(false, false, true) @@ -694,7 +694,7 @@ func testSearchOneTwoCharUsersnameAndFirstLastNames(t *testing.T, th *SearchTest defer th.deleteUser(userAlternate) err = th.addUserToTeams(userAlternate, []string{th.Team.Id}) require.NoError(t, err) - _, err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id}) + err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id}) require.NoError(t, err) t.Run("Should support two characters in the full name", func(t *testing.T) { options := createDefaultOptions(true, false, false) @@ -719,7 +719,7 @@ func testShouldSupportKoreanCharacters(t *testing.T, th *SearchTestHelper) { err = th.addUserToTeams(userAlternate, []string{th.Team.Id}) require.NoError(t, err) - _, err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id}) + err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id}) require.NoError(t, err) t.Run("Should support hanja korean characters", func(t *testing.T) { options := createDefaultOptions(true, false, false) @@ -743,7 +743,7 @@ func testSearchWithHyphenAtTheEndOfTheTerm(t *testing.T, th *SearchTestHelper) { defer th.deleteUser(userAlternate) err = th.addUserToTeams(userAlternate, []string{th.Team.Id}) require.NoError(t, err) - _, err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id}) + err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id}) require.NoError(t, err) options := createDefaultOptions(true, false, false) users, err := th.Store.User().AutocompleteUsersInChannel(th.Team.Id, th.ChannelBasic.Id, "alternate-", options) @@ -808,7 +808,7 @@ func testSearchUsersInTeamUsernameWithDot(t *testing.T, th *SearchTestHelper) { defer th.deleteUser(userAlternate) err = th.addUserToTeams(userAlternate, []string{th.Team.Id}) require.NoError(t, err) - _, err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id}) + err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id}) require.NoError(t, err) options := createDefaultOptions(true, false, false) users, err := th.Store.User().Search(th.Team.Id, "alternate.", options) @@ -822,7 +822,7 @@ func testSearchUsersInTeamUsernameWithHyphen(t *testing.T, th *SearchTestHelper) defer th.deleteUser(userAlternate) err = th.addUserToTeams(userAlternate, []string{th.Team.Id}) require.NoError(t, err) - _, err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id}) + err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id}) require.NoError(t, err) options := createDefaultOptions(true, false, false) users, err := th.Store.User().Search(th.Team.Id, "alternate-", options) @@ -836,7 +836,7 @@ func testSearchUsersInTeamUsernameWithUnderscore(t *testing.T, th *SearchTestHel defer th.deleteUser(userAlternate) err = th.addUserToTeams(userAlternate, []string{th.Team.Id}) require.NoError(t, err) - _, err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id}) + err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id}) require.NoError(t, err) options := createDefaultOptions(true, false, false) users, err := th.Store.User().Search(th.Team.Id, "alternate_", options)