You've already forked matrix-react-sdk
mirror of
https://github.com/matrix-org/matrix-react-sdk.git
synced 2025-11-11 20:22:36 +03:00
Isolate rich text notifications from other input changes
The step that would notify parent components of rich text state changes was stirred into the input's change handler, which leads to race which the parent is sometimes notified of the old rich text state instead of the new. Here we avoid this complication by using a separate path for sending the rich text state when we know we have updated it correctly.
This commit is contained in:
@@ -257,6 +257,8 @@ export default class MessageComposer extends React.Component {
|
||||
}
|
||||
|
||||
onInputStateChanged(inputState) {
|
||||
// Merge the new input state with old to support partial updates
|
||||
inputState = Object.assign({}, this.state.inputState, inputState);
|
||||
this.setState({inputState});
|
||||
}
|
||||
|
||||
|
||||
@@ -628,7 +628,6 @@ export default class MessageComposerInput extends React.Component {
|
||||
}
|
||||
const inputState = {
|
||||
marks: editorState.activeMarks,
|
||||
isRichTextEnabled: this.state.isRichTextEnabled,
|
||||
blockType,
|
||||
};
|
||||
this.props.onInputStateChanged(inputState);
|
||||
@@ -700,6 +699,11 @@ export default class MessageComposerInput extends React.Component {
|
||||
isRichTextEnabled: enabled,
|
||||
}, () => {
|
||||
this._editor.focus();
|
||||
if (this.props.onInputStateChanged) {
|
||||
this.props.onInputStateChanged({
|
||||
isRichTextEnabled: enabled,
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
SettingsStore.setValue("MessageComposerInput.isRichTextEnabled", null, SettingLevel.ACCOUNT, enabled);
|
||||
|
||||
Reference in New Issue
Block a user