summaryrefslogtreecommitdiffstats
path: root/webapp
diff options
context:
space:
mode:
authorDebanshu Kundu <debanshu.kundu@joshtechnologygroup.com>2016-12-19 19:35:39 +0530
committerHarrison Healey <harrisonmhealey@gmail.com>2016-12-19 09:05:39 -0500
commit6a5cdd5cdf09317ce259dd146fc4f1cb76d8b9b6 (patch)
treee5d01a5d3eae57c74ca0f4145a3e0e1b14b746d6 /webapp
parent999d1553e1ce45adf58f6082b160bc1147dc592b (diff)
downloadchat-6a5cdd5cdf09317ce259dd146fc4f1cb76d8b9b6.tar.gz
chat-6a5cdd5cdf09317ce259dd146fc4f1cb76d8b9b6.tar.bz2
chat-6a5cdd5cdf09317ce259dd146fc4f1cb76d8b9b6.zip
PLT-135 Showing "(Edited)" indicator if a message has been edited. (#4764)
Diffstat (limited to 'webapp')
-rw-r--r--webapp/components/post_view/components/post_message_container.jsx2
-rw-r--r--webapp/components/post_view/components/post_message_view.jsx38
-rw-r--r--webapp/i18n/en.json1
-rw-r--r--webapp/sass/layout/_post.scss18
-rw-r--r--webapp/utils/post_utils.jsx6
5 files changed, 54 insertions, 11 deletions
diff --git a/webapp/components/post_view/components/post_message_container.jsx b/webapp/components/post_view/components/post_message_container.jsx
index 2d17e74c4..4e27cd29a 100644
--- a/webapp/components/post_view/components/post_message_container.jsx
+++ b/webapp/components/post_view/components/post_message_container.jsx
@@ -89,7 +89,7 @@ export default class PostMessageContainer extends React.Component {
return (
<PostMessageView
options={this.props.options}
- message={this.props.post.message}
+ post={this.props.post}
emojis={this.state.emojis}
enableFormatting={this.state.enableFormatting}
mentionKeys={this.state.mentionKeys}
diff --git a/webapp/components/post_view/components/post_message_view.jsx b/webapp/components/post_view/components/post_message_view.jsx
index 24f96a8d9..eff791aec 100644
--- a/webapp/components/post_view/components/post_message_view.jsx
+++ b/webapp/components/post_view/components/post_message_view.jsx
@@ -2,14 +2,16 @@
// See License.txt for license information.
import React from 'react';
+import {FormattedMessage} from 'react-intl';
import * as TextFormatting from 'utils/text_formatting.jsx';
import * as Utils from 'utils/utils.jsx';
+import * as PostUtils from 'utils/post_utils.jsx';
export default class PostMessageView extends React.Component {
static propTypes = {
options: React.PropTypes.object.isRequired,
- message: React.PropTypes.string.isRequired,
+ post: React.PropTypes.object.isRequired,
emojis: React.PropTypes.object.isRequired,
enableFormatting: React.PropTypes.bool.isRequired,
mentionKeys: React.PropTypes.arrayOf(React.PropTypes.string).isRequired,
@@ -23,7 +25,7 @@ export default class PostMessageView extends React.Component {
return true;
}
- if (nextProps.message !== this.props.message) {
+ if (nextProps.post.message !== this.props.post.message) {
return true;
}
@@ -47,9 +49,28 @@ export default class PostMessageView extends React.Component {
return false;
}
+ editedIndicator() {
+ return (
+ PostUtils.isEdited(this.props.post) ?
+ <span className='edited'>
+ <FormattedMessage
+ id='post_message_view.edited'
+ defaultMessage='(edited)'
+ />
+ </span> :
+ ''
+ );
+ }
+
render() {
if (!this.props.enableFormatting) {
- return <span>{this.props.message}</span>;
+ return (
+ <span>
+ {this.props.post.message}
+ &nbsp;
+ {this.editedIndicator()}
+ </span>
+ );
}
const options = Object.assign({}, this.props.options, {
@@ -62,10 +83,13 @@ export default class PostMessageView extends React.Component {
});
return (
- <span
- onClick={Utils.handleFormattedTextClick}
- dangerouslySetInnerHTML={{__html: TextFormatting.formatText(this.props.message, options)}}
- />
+ <div>
+ <span
+ onClick={Utils.handleFormattedTextClick}
+ dangerouslySetInnerHTML={{__html: TextFormatting.formatText(this.props.post.message, options)}}
+ />
+ {this.editedIndicator()}
+ </div>
);
}
}
diff --git a/webapp/i18n/en.json b/webapp/i18n/en.json
index 10460e2b8..4fa66fa66 100644
--- a/webapp/i18n/en.json
+++ b/webapp/i18n/en.json
@@ -1649,6 +1649,7 @@
"post_info.mobile.unflag": "Unflag",
"post_info.permalink": "Permalink",
"post_info.reply": "Reply",
+ "post_message_view.edited": "(edited)",
"posts_view.loadMore": "Load more messages",
"posts_view.newMsg": "New Messages",
"posts_view.newMsgBelow": "{count} new {count, plural, one {message} other {messages}} below",
diff --git a/webapp/sass/layout/_post.scss b/webapp/sass/layout/_post.scss
index 235794eee..258b29ed8 100644
--- a/webapp/sass/layout/_post.scss
+++ b/webapp/sass/layout/_post.scss
@@ -602,7 +602,7 @@
}
p + p {
- margin-top: 1em;
+ margin: 1em 0;
}
ol,
@@ -983,11 +983,20 @@
word-wrap: break-word;
p {
+ display: inline;
+ }
+
+ div {
margin: 0 0 .4em;
}
p + p {
- margin-top: 1.4em;
+ margin: 1.4em 0;
+ display: block;
+ }
+
+ p:last-of-type {
+ display: inline;
}
li {
@@ -1065,6 +1074,11 @@
color: white;
}
}
+
+ span.edited {
+ color: #A3A3A3;
+ font-size: 0.87em;
+ }
}
.post__link {
diff --git a/webapp/utils/post_utils.jsx b/webapp/utils/post_utils.jsx
index 4bba784cb..d909b35f8 100644
--- a/webapp/utils/post_utils.jsx
+++ b/webapp/utils/post_utils.jsx
@@ -15,6 +15,10 @@ export function isComment(post) {
return false;
}
+export function isEdited(post) {
+ return post.update_at && post.update_at > post.create_at;
+}
+
export function getProfilePicSrcForPost(post, timestamp) {
let src = Client.getUsersRoute() + '/' + post.user_id + '/image?time=' + timestamp;
if (post.props && post.props.from_webhook && global.window.mm_config.EnablePostIconOverride === 'true') {
@@ -28,4 +32,4 @@ export function getProfilePicSrcForPost(post, timestamp) {
}
return src;
-} \ No newline at end of file
+}