diff --git a/api/user.go b/api/user.go
index 483ae67b52..5b052e826c 100644
--- a/api/user.go
+++ b/api/user.go
@@ -729,6 +729,8 @@ func uploadProfileImage(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
+ Srv.Store.User().UpdateUpdateAt(c.Session.UserId)
+
c.LogAudit("")
}
diff --git a/store/sql_user_store.go b/store/sql_user_store.go
index fc3d125c4f..77470946c6 100644
--- a/store/sql_user_store.go
+++ b/store/sql_user_store.go
@@ -150,6 +150,25 @@ func (us SqlUserStore) Update(user *model.User, allowActiveUpdate bool) StoreCha
return storeChannel
}
+func (us SqlUserStore) UpdateUpdateAt(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 {
+ result.Err = model.NewAppError("SqlUserStore.UpdateUpdateAt", "We couldn't update the update_at", "user_id="+userId)
+ } else {
+ result.Data = userId
+ }
+
+ storeChannel <- result
+ close(storeChannel)
+ }()
+
+ return storeChannel
+}
+
func (us SqlUserStore) UpdateLastPingAt(userId string, time int64) StoreChannel {
storeChannel := make(StoreChannel)
diff --git a/store/store.go b/store/store.go
index 070ee05622..0ed0457887 100644
--- a/store/store.go
+++ b/store/store.go
@@ -77,6 +77,7 @@ type PostStore interface {
type UserStore interface {
Save(user *model.User) StoreChannel
Update(user *model.User, allowRoleUpdate bool) StoreChannel
+ UpdateUpdateAt(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/member_list_item.jsx b/web/react/components/member_list_item.jsx
index 357fd49a87..cf8c71d7e6 100644
--- a/web/react/components/member_list_item.jsx
+++ b/web/react/components/member_list_item.jsx
@@ -23,6 +23,7 @@ module.exports = React.createClass({
var member = this.props.member;
var isAdmin = this.props.isAdmin;
var isMemberAdmin = member.roles.indexOf("admin") > -1;
+ var timestamp = UserStore.getCurrentUser().update_at;
var invite;
if (member.invited && this.props.handleInvite) {
@@ -53,7 +54,7 @@ module.exports = React.createClass({
return (
-

+
{member.username}
{member.email}
{ invite }
diff --git a/web/react/components/member_list_team.jsx b/web/react/components/member_list_team.jsx
index cfb473e5ee..aa53c5db64 100644
--- a/web/react/components/member_list_team.jsx
+++ b/web/react/components/member_list_team.jsx
@@ -61,7 +61,8 @@ var MemberListTeamItem = React.createClass({
render: function() {
var server_error = this.state.server_error ?
: null;
var user = this.props.user;
- var currentRoles = "Member"
+ var currentRoles = "Member";
+ var timestamp = UserStore.getCurrentUser().update_at;
if (user.roles.length > 0) {
currentRoles = user.roles.charAt(0).toUpperCase() + user.roles.slice(1);
@@ -83,7 +84,7 @@ var MemberListTeamItem = React.createClass({
return (
-

+
{user.full_name.trim() ? user.full_name : user.username}
{user.full_name.trim() ? user.username : email}
diff --git a/web/react/components/mention.jsx b/web/react/components/mention.jsx
index 3c33ddf493..520b81cbb1 100644
--- a/web/react/components/mention.jsx
+++ b/web/react/components/mention.jsx
@@ -1,5 +1,6 @@
// Copyright (c) 2015 Spinpunch, Inc. All Rights Reserved.
// See License.txt for license information.
+var UserStore = require("../stores/user_store.jsx");
module.exports = React.createClass({
handleClick: function() {
@@ -7,8 +8,9 @@ module.exports = React.createClass({
},
render: function() {
var icon;
+ var timestamp = UserStore.getCurrentUser().update_at;
if (this.props.id != null) {
- icon =

;
+ icon =

;
} else {
icon =
;
}
diff --git a/web/react/components/post.jsx b/web/react/components/post.jsx
index 04b5ba082c..726fb1b024 100644
--- a/web/react/components/post.jsx
+++ b/web/react/components/post.jsx
@@ -74,12 +74,14 @@ module.exports = React.createClass({
currentUserCss = "current--user";
}
+ var timestamp = UserStore.getCurrentUser().update_at;
+
return (
{ !this.props.hideProfilePic ?
-

+
: "" }
diff --git a/web/react/components/post_list.jsx b/web/react/components/post_list.jsx
index d6dc9ce303..e6e0282090 100644
--- a/web/react/components/post_list.jsx
+++ b/web/react/components/post_list.jsx
@@ -342,7 +342,7 @@ module.exports = React.createClass({
more_messages = (
-

+
diff --git a/web/react/components/post_right.jsx b/web/react/components/post_right.jsx
index 115ee87d4a..408fbf83ac 100644
--- a/web/react/components/post_right.jsx
+++ b/web/react/components/post_right.jsx
@@ -67,6 +67,7 @@ RootPost = React.createClass({
var message = utils.textToJsx(this.props.post.message);
var filenames = this.props.post.filenames;
var isOwner = UserStore.getCurrentId() == this.props.post.user_id;
+ var timestamp = UserStore.getProfile(this.props.post.user_id).update_at;
var type = "Post";
if (this.props.post.root_id.length > 0) {
@@ -118,7 +119,7 @@ RootPost = React.createClass({
return (
-

+
@@ -227,11 +228,12 @@ CommentPost = React.createClass({
}
var message = utils.textToJsx(this.props.post.message);
+ var timestamp = UserStore.getCurrentUser().update_at;
return (
-

+
diff --git a/web/react/components/search_results.jsx b/web/react/components/search_results.jsx
index 003a38b7ee..156cf0120e 100644
--- a/web/react/components/search_results.jsx
+++ b/web/react/components/search_results.jsx
@@ -76,6 +76,7 @@ SearchItem = React.createClass({
var message = utils.textToJsx(this.props.post.message, {searchTerm: this.props.term, noMentionHighlight: !this.props.isMentionSearch});
var channelName = "";
var channel = ChannelStore.get(this.props.post.channel_id)
+ var timestamp = UserStore.getCurrentUser().update_at;
if (channel) {
if (channel.type === 'D') {
@@ -89,7 +90,7 @@ SearchItem = React.createClass({
{ channelName }
-

+
diff --git a/web/react/components/user_profile.jsx b/web/react/components/user_profile.jsx
index 648960471a..89d0a80ff2 100644
--- a/web/react/components/user_profile.jsx
+++ b/web/react/components/user_profile.jsx
@@ -53,7 +53,7 @@ module.exports = React.createClass({
var name = this.props.overwriteName ? this.props.overwriteName : this.state.profile.username;
- var data_content = "
";
+ var data_content = "
";
if (!config.ShowEmail) {
data_content += "Email not shared
";
} else {