[MM-44954] Regenerate default avatar (#22871)

* Regenerate default profile picture if username has changed

- Only actions is profile picture has not been changed
- Adjusts ResetLastPictureUpdate store function to store
-curTime instead of 0
    - This is to support updating the default picture while still
    retaining the ability to discern a default image from a set one.
- Changes SetDefaultProfileImage to leverage UpdateDefaultProfileImage
- Test updates around updating user default profile pictures

* App interface updates

* Only display picture update date if non-negative

- Ensures we don't display negative timestamps (default images)
- Change ported for mono-repo changes

* Remove duplicate test assertion

---------

Co-authored-by: Nathan Geist <ngeist@spiria.com>
Co-authored-by: Mattermost Build <build@mattermost.com>
Этот коммит содержится в:
Nathan
2023-05-04 08:14:26 -06:00
коммит произвёл GitHub
родитель 349e5d4573
Коммит 670b0e4c9f
8 изменённых файлов: 105 добавлений и 18 удалений

Просмотреть файл

@@ -285,7 +285,7 @@ func (us SqlUserStore) UpdateLastPictureUpdate(userId string) error {
func (us SqlUserStore) ResetLastPictureUpdate(userId string) error {
curTime := model.GetMillis()
if _, err := us.GetMasterX().Exec("UPDATE Users SET LastPictureUpdate = ?, UpdateAt = ? WHERE Id = ?", 0, curTime, userId); err != nil {
if _, err := us.GetMasterX().Exec("UPDATE Users SET LastPictureUpdate = ?, UpdateAt = ? WHERE Id = ?", -curTime, curTime, userId); err != nil {
return errors.Wrapf(err, "failed to update User with userId=%s", userId)
}

Просмотреть файл

@@ -5895,6 +5895,7 @@ func testDeactivateGuests(t *testing.T, ss store.Store) {
}
func testUserStoreResetLastPictureUpdate(t *testing.T, ss store.Store) {
startTime := model.GetMillis()
u1 := &model.User{}
u1.Email = MakeEmail()
_, err := ss.User().Save(u1)
@@ -5909,8 +5910,7 @@ func testUserStoreResetLastPictureUpdate(t *testing.T, ss store.Store) {
user, err := ss.User().Get(context.Background(), u1.Id)
require.NoError(t, err)
assert.NotZero(t, user.LastPictureUpdate)
assert.NotZero(t, user.UpdateAt)
assert.GreaterOrEqual(t, user.LastPictureUpdate, startTime)
// Ensure update at timestamp changes
time.Sleep(time.Millisecond)
@@ -5923,8 +5923,8 @@ func testUserStoreResetLastPictureUpdate(t *testing.T, ss store.Store) {
user2, err := ss.User().Get(context.Background(), u1.Id)
require.NoError(t, err)
assert.True(t, user2.UpdateAt > user.UpdateAt)
assert.Zero(t, user2.LastPictureUpdate)
assert.Greater(t, user2.UpdateAt, user.UpdateAt)
assert.Less(t, user2.LastPictureUpdate, -startTime)
}
func testGetKnownUsers(t *testing.T, ss store.Store) {