diff --git a/app/user.go b/app/user.go index 2768ea03df..d2ae4f893c 100644 --- a/app/user.go +++ b/app/user.go @@ -460,7 +460,7 @@ func (a *App) GetUsersPage(options *model.UserGetOptions, asAdmin bool) ([]*mode } func (a *App) GetUsersEtag(restrictionsHash string) string { - return fmt.Sprintf("%v.%v.%v.%v", (<-a.Srv.Store.User().GetEtagForAllProfiles()).Data.(string), a.Config().PrivacySettings.ShowFullName, a.Config().PrivacySettings.ShowEmailAddress, restrictionsHash) + return fmt.Sprintf("%v.%v.%v.%v", a.Srv.Store.User().GetEtagForAllProfiles(), a.Config().PrivacySettings.ShowFullName, a.Config().PrivacySettings.ShowEmailAddress, restrictionsHash) } func (a *App) GetUsersInTeam(options *model.UserGetOptions) ([]*model.User, *model.AppError) { diff --git a/store/sqlstore/user_store.go b/store/sqlstore/user_store.go index 4ea4374429..e0a4300aa1 100644 --- a/store/sqlstore/user_store.go +++ b/store/sqlstore/user_store.go @@ -381,15 +381,12 @@ func (us SqlUserStore) GetAllAfter(limit int, afterId string) ([]*model.User, *m return users, nil } -func (s SqlUserStore) GetEtagForAllProfiles() store.StoreChannel { - return store.Do(func(result *store.StoreResult) { - updateAt, err := s.GetReplica().SelectInt("SELECT UpdateAt FROM Users ORDER BY UpdateAt DESC LIMIT 1") - if err != nil { - result.Data = fmt.Sprintf("%v.%v", model.CurrentVersion, model.GetMillis()) - } else { - result.Data = fmt.Sprintf("%v.%v", model.CurrentVersion, updateAt) - } - }) +func (us SqlUserStore) GetEtagForAllProfiles() string { + updateAt, err := us.GetReplica().SelectInt("SELECT UpdateAt FROM Users ORDER BY UpdateAt DESC LIMIT 1") + if err != nil { + return fmt.Sprintf("%v.%v", model.CurrentVersion, model.GetMillis()) + } + return fmt.Sprintf("%v.%v", model.CurrentVersion, updateAt) } func (us SqlUserStore) GetAllProfiles(options *model.UserGetOptions) ([]*model.User, *model.AppError) { diff --git a/store/store.go b/store/store.go index c635948f43..05a10fd987 100644 --- a/store/store.go +++ b/store/store.go @@ -280,7 +280,7 @@ type UserStore interface { GetByUsername(username string) StoreChannel GetForLogin(loginId string, allowSignInWithUsername, allowSignInWithEmail bool) (*model.User, *model.AppError) VerifyEmail(userId, email string) (string, *model.AppError) - GetEtagForAllProfiles() StoreChannel + GetEtagForAllProfiles() string GetEtagForProfiles(teamId string) string UpdateFailedPasswordAttempts(userId string, attempts int) StoreChannel GetSystemAdminProfiles() (map[string]*model.User, *model.AppError) diff --git a/store/storetest/mocks/UserStore.go b/store/storetest/mocks/UserStore.go index 2cb034605e..a9a1c4e4e0 100644 --- a/store/storetest/mocks/UserStore.go +++ b/store/storetest/mocks/UserStore.go @@ -373,16 +373,14 @@ func (_m *UserStore) GetChannelGroupUsers(channelID string) ([]*model.User, *mod } // GetEtagForAllProfiles provides a mock function with given fields: -func (_m *UserStore) GetEtagForAllProfiles() store.StoreChannel { +func (_m *UserStore) GetEtagForAllProfiles() string { ret := _m.Called() - var r0 store.StoreChannel - if rf, ok := ret.Get(0).(func() store.StoreChannel); ok { + var r0 string + if rf, ok := ret.Get(0).(func() string); ok { r0 = rf() } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(store.StoreChannel) - } + r0 = ret.Get(0).(string) } return r0 diff --git a/store/storetest/user_store.go b/store/storetest/user_store.go index 3b3f990d79..d82025343a 100644 --- a/store/storetest/user_store.go +++ b/store/storetest/user_store.go @@ -457,19 +457,14 @@ func testUserStoreGetAllProfiles(t *testing.T, ss store.Store) { }) t.Run("etag changes for all after user creation", func(t *testing.T) { - result := <-ss.User().GetEtagForAllProfiles() - require.Nil(t, result.Err) - etag := result.Data.(string) + etag := ss.User().GetEtagForAllProfiles() uNew := &model.User{} uNew.Email = MakeEmail() store.Must(ss.User().Save(uNew)) defer func() { require.Nil(t, ss.User().PermanentDelete(uNew.Id)) }() - result = <-ss.User().GetEtagForAllProfiles() - require.Nil(t, result.Err) - updatedEtag := result.Data.(string) - + updatedEtag := ss.User().GetEtagForAllProfiles() require.NotEqual(t, etag, updatedEtag) })