Added timestamps to pictures to stop caching

Этот коммит содержится в:
nickago
2015-07-09 16:37:03 -07:00
родитель 6cc8788193
Коммит c3aed62031
6 изменённых файлов: 27 добавлений и 4 удалений

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

@@ -150,6 +150,25 @@ func (us SqlUserStore) Update(user *model.User, allowActiveUpdate bool) StoreCha
return storeChannel 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 { func (us SqlUserStore) UpdateLastPingAt(userId string, time int64) StoreChannel {
storeChannel := make(StoreChannel) storeChannel := make(StoreChannel)

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

@@ -77,6 +77,7 @@ type PostStore interface {
type UserStore interface { type UserStore interface {
Save(user *model.User) StoreChannel Save(user *model.User) StoreChannel
Update(user *model.User, allowRoleUpdate bool) StoreChannel Update(user *model.User, allowRoleUpdate bool) StoreChannel
UpdateUpdateAt(userId string) StoreChannel
UpdateLastPingAt(userId string, time int64) StoreChannel UpdateLastPingAt(userId string, time int64) StoreChannel
UpdateLastActivityAt(userId string, time int64) StoreChannel UpdateLastActivityAt(userId string, time int64) StoreChannel
UpdateUserAndSessionActivity(userId string, sessionId string, time int64) StoreChannel UpdateUserAndSessionActivity(userId string, sessionId string, time int64) StoreChannel

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

@@ -74,12 +74,14 @@ module.exports = React.createClass({
currentUserCss = "current--user"; currentUserCss = "current--user";
} }
var timestamp = UserStore.getCurrentUser().update_at;
return ( return (
<div> <div>
<div id={post.id} className={"post " + this.props.sameUser + " " + rootUser + " " + postType + " " + currentUserCss}> <div id={post.id} className={"post " + this.props.sameUser + " " + rootUser + " " + postType + " " + currentUserCss}>
{ !this.props.hideProfilePic ? { !this.props.hideProfilePic ?
<div className="post-profile-img__container"> <div className="post-profile-img__container">
<img className="post-profile-img" src={"/api/v1/users/" + post.user_id + "/image"} height="36" width="36" /> <img className="post-profile-img" src={"/api/v1/users/" + post.user_id + "/image?time=" + timestamp} height="36" width="36" />
</div> </div>
: "" } : "" }
<div className="post__content"> <div className="post__content">

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

@@ -342,7 +342,7 @@ module.exports = React.createClass({
more_messages = ( more_messages = (
<div className="channel-intro"> <div className="channel-intro">
<div className="post-profile-img__container channel-intro-img"> <div className="post-profile-img__container channel-intro-img">
<img className="post-profile-img" src={"/api/v1/users/" + teammate.id + "/image"} height="50" width="50" /> <img className="post-profile-img" src={"/api/v1/users/" + teammate.id + "/image?time=" + teammate.update_at} height="50" width="50" />
</div> </div>
<div className="channel-intro-profile"> <div className="channel-intro-profile">
<strong><UserProfile userId={teammate.id} /></strong> <strong><UserProfile userId={teammate.id} /></strong>

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

@@ -67,6 +67,7 @@ RootPost = React.createClass({
var message = utils.textToJsx(this.props.post.message); var message = utils.textToJsx(this.props.post.message);
var filenames = this.props.post.filenames; var filenames = this.props.post.filenames;
var isOwner = UserStore.getCurrentId() == this.props.post.user_id; var isOwner = UserStore.getCurrentId() == this.props.post.user_id;
var timestamp = UserStore.getProfile(this.props.post.user_id).update_at;
var type = "Post"; var type = "Post";
if (this.props.post.root_id.length > 0) { if (this.props.post.root_id.length > 0) {
@@ -118,7 +119,7 @@ RootPost = React.createClass({
return ( return (
<div className={"post post--root " + currentUserCss}> <div className={"post post--root " + currentUserCss}>
<div className="post-profile-img__container"> <div className="post-profile-img__container">
<img className="post-profile-img" src={"/api/v1/users/" + this.props.post.user_id + "/image"} height="36" width="36" /> <img className="post-profile-img" src={"/api/v1/users/" + this.props.post.user_id + "/image?time=" + timestamp} height="36" width="36" />
</div> </div>
<div className="post__content"> <div className="post__content">
<ul className="post-header"> <ul className="post-header">

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

@@ -53,7 +53,7 @@ module.exports = React.createClass({
var name = this.props.overwriteName ? this.props.overwriteName : this.state.profile.username; var name = this.props.overwriteName ? this.props.overwriteName : this.state.profile.username;
var data_content = "<img style='margin: 10px' src='/api/v1/users/" + this.state.profile.id + "/image' height='128' width='128' />"; var data_content = "<img style='margin: 10px' src='/api/v1/users/" + this.state.profile.id + "/image?time=" + this.state.profile.update_at + "' height='128' width='128' />";
if (!config.ShowEmail) { if (!config.ShowEmail) {
data_content += "<div class='text-nowrap'>Email not shared</div>"; data_content += "<div class='text-nowrap'>Email not shared</div>";
} else { } else {