diff --git a/browser/components/loop/content/js/panel.js b/browser/components/loop/content/js/panel.js index ac0e7293b811..8039f52f2024 100644 --- a/browser/components/loop/content/js/panel.js +++ b/browser/components/loop/content/js/panel.js @@ -568,7 +568,14 @@ loop.panel = (function(_, mozL10n) { handleFormSubmit: function(event) { event.preventDefault(); - this.props.onChange(this.state.text); + // While we already validate for a non-empty string in the store, we need + // to check it at the component level to avoid desynchronized rendering + // issues. + if (this.state.text.trim()) { + this.props.onChange(this.state.text); + } else { + this.setState({text: this.props.text}); + } this.setState({edit: false}); }, diff --git a/browser/components/loop/content/js/panel.jsx b/browser/components/loop/content/js/panel.jsx index 1847458806c1..fe42da3742f5 100644 --- a/browser/components/loop/content/js/panel.jsx +++ b/browser/components/loop/content/js/panel.jsx @@ -568,7 +568,14 @@ loop.panel = (function(_, mozL10n) { handleFormSubmit: function(event) { event.preventDefault(); - this.props.onChange(this.state.text); + // While we already validate for a non-empty string in the store, we need + // to check it at the component level to avoid desynchronized rendering + // issues. + if (this.state.text.trim()) { + this.props.onChange(this.state.text); + } else { + this.setState({text: this.props.text}); + } this.setState({edit: false}); }, diff --git a/browser/components/loop/content/shared/js/roomStore.js b/browser/components/loop/content/shared/js/roomStore.js index 3f68fd324e91..91ac2328d4a8 100644 --- a/browser/components/loop/content/shared/js/roomStore.js +++ b/browser/components/loop/content/shared/js/roomStore.js @@ -423,10 +423,11 @@ loop.store = loop.store || {}; * @param {sharedActions.RenameRoom} actionData */ renameRoom: function(actionData) { + var oldRoomName = this.getStoreState("roomName"); var newRoomName = actionData.newRoomName.trim(); // Skip update if name is unchanged or empty. - if (!newRoomName || this.getStoreState("roomName") === newRoomName) { + if (!newRoomName || oldRoomName === newRoomName) { return; }