From 8ed229a7c79ada24f4ef479a77131309b06b0fdd Mon Sep 17 00:00:00 2001 From: Matt Lyons Date: Wed, 25 Oct 2017 03:02:03 -0700 Subject: [PATCH] Add setting to disable email content max width Closes #228 --- .../lib/message-item-container.jsx | 17 ++++++++++ .../message-list/lib/message-item.jsx | 12 +++++-- .../message-list/lib/message-list.jsx | 33 ++++++++++++++++--- .../message-list/styles/message-list.less | 11 +++---- app/src/config-schema.es6 | 5 +++ 5 files changed, 64 insertions(+), 14 deletions(-) diff --git a/app/internal_packages/message-list/lib/message-item-container.jsx b/app/internal_packages/message-list/lib/message-item-container.jsx index e30eb7dcf..1bd42f7b1 100644 --- a/app/internal_packages/message-list/lib/message-item-container.jsx +++ b/app/internal_packages/message-list/lib/message-item-container.jsx @@ -19,12 +19,18 @@ export default class MessageItemContainer extends React.Component { constructor(props, context) { super(props, context); this.state = this._getStateFromStores(); + this.state.maxWidth = AppEnv.config.get('core.reading.restrictMaxWidth'); } componentDidMount() { if (this.props.message.draft) { this._unlisten = DraftStore.listen(this._onSendingStateChanged); } + + this._disposable = []; + this._disposable.push( + AppEnv.config.onDidChange('core.reading.restrictMaxWidth', this._onMaxWidthChange) + ); } componentWillReceiveProps(newProps) { @@ -39,6 +45,10 @@ export default class MessageItemContainer extends React.Component { if (this._unlisten) { this._unlisten(); } + + for (const dispose of this._disposable) { + dispose.dispose(); + } } focus = () => { @@ -51,6 +61,7 @@ export default class MessageItemContainer extends React.Component { unread: this.props.message.unread, collapsed: this.props.collapsed, 'message-item-wrap': true, + 'message-restrict-width': this.state.maxWidth, 'before-reply-area': this.props.isBeforeReplyArea, }); } @@ -61,6 +72,12 @@ export default class MessageItemContainer extends React.Component { } }; + _onMaxWidthChange = () => { + let newState = this._getStateFromStores(); + newState.maxWidth = AppEnv.config.get('core.reading.restrictMaxWidth'); + this.setState(newState); + }; + _getStateFromStores(props = this.props) { return { isSending: DraftStore.isSendingDraft(props.message.headerMessageId), diff --git a/app/internal_packages/message-list/lib/message-item.jsx b/app/internal_packages/message-list/lib/message-item.jsx index ca80efeb6..058522ea6 100644 --- a/app/internal_packages/message-list/lib/message-item.jsx +++ b/app/internal_packages/message-list/lib/message-item.jsx @@ -307,7 +307,11 @@ export default class MessageItem extends React.Component { return (
-
+
{from && from[0] && from[0].displayName({ compact: true })}
@@ -335,7 +339,11 @@ export default class MessageItem extends React.Component { return (
-
+
{this._renderHeader()} {this._renderAttachments()} diff --git a/app/internal_packages/message-list/lib/message-list.jsx b/app/internal_packages/message-list/lib/message-list.jsx index c6654cccc..d9989d06a 100644 --- a/app/internal_packages/message-list/lib/message-list.jsx +++ b/app/internal_packages/message-list/lib/message-list.jsx @@ -80,6 +80,7 @@ class MessageList extends React.Component { super(props); this.state = this._getStateFromStores(); this.state.minified = true; + this.state.maxWidth = AppEnv.config.get('core.reading.restrictMaxWidth'); this._draftScrollInProgress = false; this.MINIFY_THRESHOLD = 3; } @@ -96,6 +97,11 @@ class MessageList extends React.Component { }); }) ); + + this._disposable = []; + this._disposable.push( + AppEnv.config.onDidChange('core.reading.restrictMaxWidth', this._onChange) + ); } shouldComponentUpdate(nextProps, nextState) { @@ -110,6 +116,9 @@ class MessageList extends React.Component { for (const unsubscribe of this._unsubscribers) { unsubscribe(); } + for (const dispose of this._disposable) { + dispose.dispose(); + } } _globalMenuItems() { @@ -371,6 +380,7 @@ class MessageList extends React.Component { if ((this.state.currentThread || {}).id !== (newState.currentThread || {}).id) { newState.minified = true; } + newState.maxWidth = AppEnv.config.get('core.reading.restrictMaxWidth'); this.setState(newState); }; @@ -392,7 +402,9 @@ class MessageList extends React.Component { } return ( -
+
{subject} @@ -461,8 +473,14 @@ class MessageList extends React.Component { _renderReplyArea() { return ( -
-
+
+
Write a reply…
@@ -482,7 +500,10 @@ class MessageList extends React.Component { key={Utils.generateTempId()} >
{bundle.messages.length} older messages
-
+
{lines.map((msg, i) => (
))} @@ -525,7 +546,9 @@ class MessageList extends React.Component { {this._renderSubject()}