{
}
public render() {
- const { avatarPath, color, size } = this.props;
+ const { avatarPath, color, size, noteToSelf } = this.props;
const { imageBroken } = this.state;
- const hasImage = avatarPath && !imageBroken;
+ const hasImage = !noteToSelf && avatarPath && !imageBroken;
if (size !== 28 && size !== 36 && size !== 48 && size !== 80) {
throw new Error(`Size ${size} is not supported!`);
diff --git a/ts/components/ConversationListItem.md b/ts/components/ConversationListItem.md
index 77c0994d4..25bdeba9c 100644
--- a/ts/components/ConversationListItem.md
+++ b/ts/components/ConversationListItem.md
@@ -38,6 +38,27 @@
```
+#### Conversation with yourself
+
+```jsx
+
+ console.log('onClick')}
+ i18n={util.i18n}
+ />
+
+```
+
#### All types of status
```jsx
diff --git a/ts/components/ConversationListItem.tsx b/ts/components/ConversationListItem.tsx
index 7b0066262..9383a12b7 100644
--- a/ts/components/ConversationListItem.tsx
+++ b/ts/components/ConversationListItem.tsx
@@ -16,6 +16,7 @@ interface Props {
color?: string;
conversationType: 'group' | 'direct';
avatarPath?: string;
+ isMe: boolean;
lastUpdated: number;
unreadCount: number;
@@ -38,6 +39,7 @@ export class ConversationListItem extends React.Component
{
color,
conversationType,
i18n,
+ isMe,
name,
phoneNumber,
profileName,
@@ -48,6 +50,7 @@ export class ConversationListItem extends React.Component {
{
const {
unreadCount,
i18n,
+ isMe,
lastUpdated,
name,
phoneNumber,
@@ -94,12 +98,16 @@ export class ConversationListItem extends React.Component {
: null
)}
>
-
+ {isMe ? (
+ i18n('noteToSelf')
+ ) : (
+
+ )}
- console.log('onSetDisappearingMessages', seconds)
- }
- onDeleteMessages={() => console.log('onDeleteMessages')}
- onResetSession={() => console.log('onResetSession')}
- onShowSafetyNumber={() => console.log('onShowSafetyNumber')}
- onShowAllMedia={() => console.log('onShowAllMedia')}
- onShowGroupMembers={() => console.log('onShowGroupMembers')}
- onGoBack={() => console.log('onGoBack')}
-/>
+
+
+ console.log('onSetDisappearingMessages', seconds)
+ }
+ onDeleteMessages={() => console.log('onDeleteMessages')}
+ onResetSession={() => console.log('onResetSession')}
+ onShowSafetyNumber={() => console.log('onShowSafetyNumber')}
+ onShowAllMedia={() => console.log('onShowAllMedia')}
+ onShowGroupMembers={() => console.log('onShowGroupMembers')}
+ onGoBack={() => console.log('onGoBack')}
+ />
+
```
#### With name, not verified, no avatar
```jsx
-
+
+
+
```
#### Profile, no name
```jsx
-
+
+
+
```
#### No name, no profile, no color
```jsx
-
+
+
+
```
### With back button
```jsx
-
+
+
+
```
### Disappearing messages set
```jsx
-
- console.log('onSetDisappearingMessages', seconds)
- }
- onDeleteMessages={() => console.log('onDeleteMessages')}
- onResetSession={() => console.log('onResetSession')}
- onShowSafetyNumber={() => console.log('onShowSafetyNumber')}
- onShowAllMedia={() => console.log('onShowAllMedia')}
- onShowGroupMembers={() => console.log('onShowGroupMembers')}
- onGoBack={() => console.log('onGoBack')}
-/>
+
+
+ console.log('onSetDisappearingMessages', seconds)
+ }
+ onDeleteMessages={() => console.log('onDeleteMessages')}
+ onResetSession={() => console.log('onResetSession')}
+ onShowSafetyNumber={() => console.log('onShowSafetyNumber')}
+ onShowAllMedia={() => console.log('onShowAllMedia')}
+ onShowGroupMembers={() => console.log('onShowGroupMembers')}
+ onGoBack={() => console.log('onGoBack')}
+ />
+
```
### In a group
@@ -106,34 +118,38 @@ Note the five items in gear menu, and the second-level menu with disappearing me
Note that the menu should includes 'Show Members' instead of 'Show Safety Number'
```jsx
-
- console.log('onSetDisappearingMessages', seconds)
- }
- onDeleteMessages={() => console.log('onDeleteMessages')}
- onResetSession={() => console.log('onResetSession')}
- onShowSafetyNumber={() => console.log('onShowSafetyNumber')}
- onShowAllMedia={() => console.log('onShowAllMedia')}
- onShowGroupMembers={() => console.log('onShowGroupMembers')}
- onGoBack={() => console.log('onGoBack')}
-/>
+
+
+ console.log('onSetDisappearingMessages', seconds)
+ }
+ onDeleteMessages={() => console.log('onDeleteMessages')}
+ onResetSession={() => console.log('onResetSession')}
+ onShowSafetyNumber={() => console.log('onShowSafetyNumber')}
+ onShowAllMedia={() => console.log('onShowAllMedia')}
+ onShowGroupMembers={() => console.log('onShowGroupMembers')}
+ onGoBack={() => console.log('onGoBack')}
+ />
+
```
### In chat with yourself
-Note that the menu should not have a 'Show Safety Number' entry.
+This is the 'Note to self' conversation. Note that the menu should not have a 'Show Safety Number' entry.
```jsx
-
+
+
+
```
diff --git a/ts/components/conversation/ConversationHeader.tsx b/ts/components/conversation/ConversationHeader.tsx
index a81ded580..3a0fca47d 100644
--- a/ts/components/conversation/ConversationHeader.tsx
+++ b/ts/components/conversation/ConversationHeader.tsx
@@ -84,7 +84,22 @@ export class ConversationHeader extends React.Component {
}
public renderTitle() {
- const { name, phoneNumber, i18n, profileName, isVerified } = this.props;
+ const {
+ name,
+ phoneNumber,
+ i18n,
+ isMe,
+ profileName,
+ isVerified,
+ } = this.props;
+
+ if (isMe) {
+ return (
+
+ {i18n('noteToSelf')}
+
+ );
+ }
return (
@@ -113,6 +128,7 @@ export class ConversationHeader extends React.Component
{
color,
i18n,
isGroup,
+ isMe,
name,
phoneNumber,
profileName,
@@ -125,6 +141,7 @@ export class ConversationHeader extends React.Component {
color={color}
conversationType={isGroup ? 'group' : 'direct'}
i18n={i18n}
+ noteToSelf={isMe}
name={name}
phoneNumber={phoneNumber}
profileName={profileName}
diff --git a/ts/util/lint/exceptions.json b/ts/util/lint/exceptions.json
index e30b40eeb..599c7f503 100644
--- a/ts/util/lint/exceptions.json
+++ b/ts/util/lint/exceptions.json
@@ -206,8 +206,8 @@
{
"rule": "jQuery-wrap(",
"path": "js/models/messages.js",
- "line": " this.send(wrap(promise));",
- "lineNumber": 820,
+ "line": " return this.send(wrap(promise));",
+ "lineNumber": 854,
"reasonCategory": "falseMatch",
"updated": "2018-10-05T23:12:28.961Z"
},
@@ -215,7 +215,7 @@
"rule": "jQuery-wrap(",
"path": "js/models/messages.js",
"line": " return wrap(",
- "lineNumber": 1029,
+ "lineNumber": 1091,
"reasonCategory": "falseMatch",
"updated": "2018-10-05T23:12:28.961Z"
},
@@ -527,7 +527,7 @@
"rule": "jQuery-$(",
"path": "js/views/conversation_search_view.js",
"line": " this.$new_contact = this.$('.new-contact');",
- "lineNumber": 42,
+ "lineNumber": 40,
"reasonCategory": "usageTrusted",
"updated": "2018-09-19T21:59:32.770Z",
"reasonDetail": "Protected from arbitrary input"
@@ -536,7 +536,7 @@
"rule": "jQuery-append(",
"path": "js/views/conversation_search_view.js",
"line": " this.$el.append(this.typeahead_view.el);",
- "lineNumber": 59,
+ "lineNumber": 57,
"reasonCategory": "usageTrusted",
"updated": "2018-09-19T18:13:29.628Z",
"reasonDetail": "Interacting with already-existing DOM nodes"
@@ -545,7 +545,7 @@
"rule": "jQuery-$(",
"path": "js/views/conversation_search_view.js",
"line": " this.new_contact_view.$('.number').text(i18n('invalidNumberError'));",
- "lineNumber": 111,
+ "lineNumber": 119,
"reasonCategory": "usageTrusted",
"updated": "2018-09-19T21:59:32.770Z",
"reasonDetail": "Protected from arbitrary input"
@@ -554,7 +554,7 @@
"rule": "jQuery-insertAfter(",
"path": "js/views/conversation_search_view.js",
"line": " this.hintView.$el.insertAfter(this.$input);",
- "lineNumber": 147,
+ "lineNumber": 155,
"reasonCategory": "usageTrusted",
"updated": "2018-09-19T18:13:29.628Z",
"reasonDetail": "Interacting with already-existing DOM nodes"
@@ -6215,4 +6215,4 @@
"updated": "2018-09-17T20:50:40.689Z",
"reasonDetail": "Hard-coded value"
}
-]
+]
\ No newline at end of file