summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristopher Speller <crspeller@gmail.com>2015-07-17 09:44:51 -0400
committerChristopher Speller <crspeller@gmail.com>2015-07-17 09:44:51 -0400
commitf49fccdee356d604a58ad0cddcc2fe5b7ebf5cc8 (patch)
treec4cd7d4be00788e68a7f7950945cf67fef7d2213
parent3f328546f8af55f655290aefad245b0f3b049bcd (diff)
parent1fe86a004ef2a99c55a583b2b2b0bf1c40b6afe3 (diff)
downloadchat-f49fccdee356d604a58ad0cddcc2fe5b7ebf5cc8.tar.gz
chat-f49fccdee356d604a58ad0cddcc2fe5b7ebf5cc8.tar.bz2
chat-f49fccdee356d604a58ad0cddcc2fe5b7ebf5cc8.zip
Merge pull request #196 from nickago/MM-1058
MM-1058 Added last updated for pictures
-rw-r--r--api/user.go2
-rw-r--r--model/user.go1
-rw-r--r--store/sql_user_store.go8
-rw-r--r--store/store.go2
-rw-r--r--web/react/components/user_settings.jsx9
5 files changed, 16 insertions, 6 deletions
diff --git a/api/user.go b/api/user.go
index 0c63868b3..3c0062f8c 100644
--- a/api/user.go
+++ b/api/user.go
@@ -729,7 +729,7 @@ func uploadProfileImage(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- Srv.Store.User().UpdateUpdateAt(c.Session.UserId)
+ Srv.Store.User().UpdateLastPictureUpdate(c.Session.UserId)
c.LogAudit("")
}
diff --git a/model/user.go b/model/user.go
index b94ceb899..c5a4d846d 100644
--- a/model/user.go
+++ b/model/user.go
@@ -45,6 +45,7 @@ type User struct {
Props StringMap `json:"props"`
NotifyProps StringMap `json:"notify_props"`
LastPasswordUpdate int64 `json:"last_password_update"`
+ LastPictureUpdate int64 `json:"last_picture_update"`
}
// IsValid validates the user and returns an error if it isn't configured
diff --git a/store/sql_user_store.go b/store/sql_user_store.go
index 77470946c..665e4d697 100644
--- a/store/sql_user_store.go
+++ b/store/sql_user_store.go
@@ -37,6 +37,7 @@ func NewSqlUserStore(sqlStore *SqlStore) UserStore {
}
func (s SqlUserStore) UpgradeSchemaIfNeeded() {
+ s.CreateColumnIfNotExists("Users","LastPictureUpdate", "LastPasswordUpdate", "bigint(20)", "0")
}
func (us SqlUserStore) CreateIndexesIfNotExists() {
@@ -120,6 +121,7 @@ func (us SqlUserStore) Update(user *model.User, allowActiveUpdate bool) StoreCha
user.AuthData = oldUser.AuthData
user.Password = oldUser.Password
user.LastPasswordUpdate = oldUser.LastPasswordUpdate
+ user.LastPictureUpdate = oldUser.LastPictureUpdate
user.TeamId = oldUser.TeamId
user.LastActivityAt = oldUser.LastActivityAt
user.LastPingAt = oldUser.LastPingAt
@@ -150,13 +152,15 @@ func (us SqlUserStore) Update(user *model.User, allowActiveUpdate bool) StoreCha
return storeChannel
}
-func (us SqlUserStore) UpdateUpdateAt(userId string) StoreChannel {
+func (us SqlUserStore) UpdateLastPictureUpdate(userId string) StoreChannel {
storeChannel := make(StoreChannel)
go func() {
result := StoreResult{}
- if _, err := us.GetMaster().Exec("UPDATE Users SET UpdateAt = ? WHERE Id = ?", model.GetMillis(), userId); err != nil {
+ curTime := model.GetMillis()
+
+ if _, err := us.GetMaster().Exec("UPDATE Users SET LastPictureUpdate = ?, UpdateAt = ? WHERE Id = ?", curTime, curTime, userId); err != nil {
result.Err = model.NewAppError("SqlUserStore.UpdateUpdateAt", "We couldn't update the update_at", "user_id="+userId)
} else {
result.Data = userId
diff --git a/store/store.go b/store/store.go
index 0ed045788..9faa6a9d7 100644
--- a/store/store.go
+++ b/store/store.go
@@ -77,7 +77,7 @@ type PostStore interface {
type UserStore interface {
Save(user *model.User) StoreChannel
Update(user *model.User, allowRoleUpdate bool) StoreChannel
- UpdateUpdateAt(userId string) StoreChannel
+ UpdateLastPictureUpdate(userId string) StoreChannel
UpdateLastPingAt(userId string, time int64) StoreChannel
UpdateLastActivityAt(userId string, time int64) StoreChannel
UpdateUserAndSessionActivity(userId string, sessionId string, time int64) StoreChannel
diff --git a/web/react/components/user_settings.jsx b/web/react/components/user_settings.jsx
index 17afadce2..38e4b1aea 100644
--- a/web/react/components/user_settings.jsx
+++ b/web/react/components/user_settings.jsx
@@ -820,6 +820,7 @@ var GeneralTab = React.createClass({
client.uploadProfileImage(formData,
function(data) {
this.submitActive = false;
+ AsyncClient.getMe();
window.location.reload();
}.bind(this),
function(err) {
@@ -989,7 +990,7 @@ var GeneralTab = React.createClass({
<SettingPicture
title="Profile Picture"
submit={this.submitPicture}
- src={"/api/v1/users/" + user.id + "/image"}
+ src={"/api/v1/users/" + user.id + "/image?time=" + user.last_picture_update}
server_error={server_error}
client_error={client_error}
updateSection={function(e){self.updateSection("");e.preventDefault();}}
@@ -1000,10 +1001,14 @@ var GeneralTab = React.createClass({
);
} else {
+ var minMessage = "Click Edit to upload an image.";
+ if (user.last_picture_update) {
+ minMessage = "Image last updated " + utils.displayDate(user.last_picture_update)
+ }
pictureSection = (
<SettingItemMin
title="Profile Picture"
- describe="Picture inside."
+ describe={minMessage}
updateSection={function(){self.updateSection("picture");}}
/>
);