From ecaa2c1e11844bad096235bf04ecf6f86fc210ef Mon Sep 17 00:00:00 2001
From: Kegan Dougal <kegan@matrix.org>
Date: Mon, 8 Feb 2016 17:20:52 +0000
Subject: [PATCH] Fix the mess of warning bars so it doesn't trigger remounts
 of alllll the components

---
 src/components/structures/MatrixChat.js | 74 +++++++++----------------
 1 file changed, 25 insertions(+), 49 deletions(-)

diff --git a/src/components/structures/MatrixChat.js b/src/components/structures/MatrixChat.js
index 3fbcf80805..e2f5c24b37 100644
--- a/src/components/structures/MatrixChat.js
+++ b/src/components/structures/MatrixChat.js
@@ -900,58 +900,34 @@ module.exports = React.createClass({
                     break;
             }
 
-            // TODO: Fix duplication here and do conditionals like we do above
+            var topBar;
             if (MatrixClientPeg.get().isGuest()) {
-                return (
-                        <div className="mx_MatrixChat_wrapper">
-                            <GuestWarningBar />
-                            <div className="mx_MatrixChat mx_MatrixChat_toolbarShowing">
-                                <LeftPanel selectedRoom={this.state.currentRoom} collapsed={this.state.collapse_lhs} />
-                                <main className="mx_MatrixChat_middlePanel">
-                                    {page_element}
-                                </main>
-                                {right_panel}
-                            </div>
-                        </div>
-                );
-            } else if (Notifier.supportsDesktopNotifications() && !Notifier.isEnabled() && !Notifier.isToolbarHidden()) {
-                return (
-                        <div className="mx_MatrixChat_wrapper">
-                            <MatrixToolbar />
-                            <div className="mx_MatrixChat mx_MatrixChat_toolbarShowing">
-                                <LeftPanel selectedRoom={this.state.currentRoom} collapsed={this.state.collapse_lhs} />
-                                <main className="mx_MatrixChat_middlePanel">
-                                    {page_element}
-                                </main>
-                                {right_panel}
-                            </div>
-                        </div>
-                );
-            } else if (this.state.hasNewVersion) {
-                return (
-                        <div className="mx_MatrixChat_wrapper">
-                            <NewVersionBar />
-                            <div className="mx_MatrixChat mx_MatrixChat_toolbarShowing">
-                                <LeftPanel selectedRoom={this.state.currentRoom} collapsed={this.state.collapse_lhs} />
-                                <main className="mx_MatrixChat_middlePanel">
-                                    {page_element}
-                                </main>
-                                {right_panel}
-                            </div>
-                        </div>
-                );
+                topBar = <GuestWarningBar />;
             }
-            else {
-                return (
-                        <div className="mx_MatrixChat">
-                            <LeftPanel selectedRoom={this.state.currentRoom} collapsed={this.state.collapse_lhs} />
-                            <main className="mx_MatrixChat_middlePanel">
-                                {page_element}
-                            </main>
-                            {right_panel}
-                        </div>
-                );
+            else if (Notifier.supportsDesktopNotifications() && !Notifier.isEnabled() && !Notifier.isToolbarHidden()) {
+                topBar = <MatrixToolbar />;
+            }
+            else if (this.state.hasNewVersion) {
+                topBar = <NewVersionBar />;
             }
+
+            var bodyClasses = "mx_MatrixChat";
+            if (topBar) {
+                bodyClasses += " mx_MatrixChat_toolbarShowing";
+            }
+
+            return (
+                <div className="mx_MatrixChat_wrapper">
+                    {topBar}
+                    <div className={bodyClasses}>
+                        <LeftPanel selectedRoom={this.state.currentRoom} collapsed={this.state.collapse_lhs} />
+                        <main className="mx_MatrixChat_middlePanel">
+                            {page_element}
+                        </main>
+                        {right_panel}
+                    </div>
+                </div>
+            );
         } else if (this.state.logged_in || (!this.state.logged_in && this._autoRegisterAsGuest)) {
             var Spinner = sdk.getComponent('elements.Spinner');
             var logoutLink;
-- 
GitLab