From 5bb5e26d166a7838b4b26562cff1c5472562089b Mon Sep 17 00:00:00 2001 From: puneet Date: Mon, 10 Oct 2022 21:39:08 -0700 Subject: [PATCH 1/2] call updateNumberOfLines when value changes --- src/components/Composer/index.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/components/Composer/index.js b/src/components/Composer/index.js index 37c951ca84dd..89da56ad039a 100755 --- a/src/components/Composer/index.js +++ b/src/components/Composer/index.js @@ -169,7 +169,9 @@ class Composer extends React.Component { this.setState({numberOfLines: 1}); this.props.onClear(); } - if (prevProps.defaultValue !== this.props.defaultValue + + if (prevProps.value !== this.props.value + || prevProps.defaultValue !== this.props.defaultValue || prevProps.isComposerFullSize !== this.props.isComposerFullSize) { this.updateNumberOfLines(); } From 69070accbf8c47de98ad8b6ebc0e5e2b9a86c5a4 Mon Sep 17 00:00:00 2001 From: puneet Date: Mon, 10 Oct 2022 21:41:06 -0700 Subject: [PATCH 2/2] call updateNumberOfLines at onChange when value is notavailable --- src/components/Composer/index.js | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/components/Composer/index.js b/src/components/Composer/index.js index 89da56ad039a..a441d114c2e2 100755 --- a/src/components/Composer/index.js +++ b/src/components/Composer/index.js @@ -135,6 +135,7 @@ class Composer extends React.Component { this.handlePaste = this.handlePaste.bind(this); this.handlePastedHTML = this.handlePastedHTML.bind(this); this.handleWheel = this.handleWheel.bind(this); + this.shouldCallUpdateNumberOfLines = this.shouldCallUpdateNumberOfLines.bind(this); } componentDidMount() { @@ -341,6 +342,18 @@ class Composer extends React.Component { event.stopPropagation(); } + /** + * We want to call updateNumberOfLines only when the parent doesn't provide value in props + * as updateNumberOfLines is already being called when value changes in componentDidUpdate + */ + shouldCallUpdateNumberOfLines() { + if (!_.isEmpty(this.props.value)) { + return; + } + + this.updateNumberOfLines(); + } + /** * Check the current scrollHeight of the textarea (minus any padding) and * divide by line height to get the total number of rows for the textarea. @@ -375,9 +388,7 @@ class Composer extends React.Component { placeholderTextColor={themeColors.placeholderText} ref={el => this.textInput = el} selection={this.state.selection} - onChange={() => { - this.updateNumberOfLines(); - }} + onChange={this.shouldCallUpdateNumberOfLines} onSelectionChange={this.onSelectionChange} numberOfLines={this.state.numberOfLines} style={propStyles}