From 2d9b111680cbc79184d4d7bfaf006d6e51c56b8e Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 31 Jan 2020 12:28:14 +0000 Subject: [PATCH 1/2] Add an override for the theme So we can force the light theme on unthemeable pages like the login & complete security page. Fixes https://github.com/vector-im/riot-web/issues/12149 Fixes https://github.com/vector-im/riot-web/issues/12157 --- src/components/structures/MatrixChat.js | 11 +++++++++++ src/settings/controllers/ThemeController.js | 8 ++++++++ 2 files changed, 19 insertions(+) diff --git a/src/components/structures/MatrixChat.js b/src/components/structures/MatrixChat.js index d6ef3341da..a6f279be74 100644 --- a/src/components/structures/MatrixChat.js +++ b/src/components/structures/MatrixChat.js @@ -53,6 +53,7 @@ import createRoom from "../../createRoom"; import KeyRequestHandler from '../../KeyRequestHandler'; import { _t, getCurrentLanguage } from '../../languageHandler'; import SettingsStore, {SettingLevel} from "../../settings/SettingsStore"; +import ThemeController from "../../settings/controllers/ThemeController"; import { startAnyRegistrationFlow } from "../../Registration.js"; import { messageForSyncError } from '../../utils/ErrorUtils'; import ResizeNotifier from "../../utils/ResizeNotifier"; @@ -506,6 +507,8 @@ export default createReactClass({ view: VIEWS.LOGIN, }); this.notifyNewScreen('login'); + ThemeController.setIsLogin(true); + this._themeWatcher.recheck(); break; case 'start_post_registration': this.setState({ @@ -760,6 +763,8 @@ export default createReactClass({ } this.setStateForNewView(newState); + ThemeController.setIsLogin(true); + this._themeWatcher.recheck(); this.notifyNewScreen('register'); }, @@ -910,6 +915,8 @@ export default createReactClass({ view: VIEWS.WELCOME, }); this.notifyNewScreen('welcome'); + ThemeController.setIsLogin(true); + this._themeWatcher.recheck(); }, _viewHome: function() { @@ -919,6 +926,8 @@ export default createReactClass({ }); this._setPage(PageTypes.HomePage); this.notifyNewScreen('home'); + ThemeController.setIsLogin(false); + this._themeWatcher.recheck(); }, _viewUser: function(userId, subAction) { @@ -1231,6 +1240,8 @@ export default createReactClass({ }); this.subTitleStatus = ''; this._setPageSubtitle(); + ThemeController.setIsLogin(true); + this._themeWatcher.recheck(); }, /** diff --git a/src/settings/controllers/ThemeController.js b/src/settings/controllers/ThemeController.js index aae43673bf..1586ab7a7f 100644 --- a/src/settings/controllers/ThemeController.js +++ b/src/settings/controllers/ThemeController.js @@ -19,9 +19,17 @@ import SettingController from "./SettingController"; import {DEFAULT_THEME, enumerateThemes} from "../../theme"; export default class ThemeController extends SettingController { + static isLogin = false; + + static setIsLogin(val) { + ThemeController.isLogin = val; + } + getValueOverride(level, roomId, calculatedValue, calculatedAtLevel) { if (!calculatedValue) return null; // Don't override null themes + if (ThemeController.isLogin) return 'light'; + const themes = enumerateThemes(); // Override in case some no longer supported theme is stored here if (!themes[calculatedValue]) { From cb9362456ff814f8c5f42bd49853d4b86ff11713 Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 31 Jan 2020 13:18:01 +0000 Subject: [PATCH 2/2] remove setter --- src/components/structures/MatrixChat.js | 10 +++++----- src/settings/controllers/ThemeController.js | 4 ---- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/src/components/structures/MatrixChat.js b/src/components/structures/MatrixChat.js index a6f279be74..3ccc4627e1 100644 --- a/src/components/structures/MatrixChat.js +++ b/src/components/structures/MatrixChat.js @@ -507,7 +507,7 @@ export default createReactClass({ view: VIEWS.LOGIN, }); this.notifyNewScreen('login'); - ThemeController.setIsLogin(true); + ThemeController.isLogin = true; this._themeWatcher.recheck(); break; case 'start_post_registration': @@ -763,7 +763,7 @@ export default createReactClass({ } this.setStateForNewView(newState); - ThemeController.setIsLogin(true); + ThemeController.isLogin = true; this._themeWatcher.recheck(); this.notifyNewScreen('register'); }, @@ -915,7 +915,7 @@ export default createReactClass({ view: VIEWS.WELCOME, }); this.notifyNewScreen('welcome'); - ThemeController.setIsLogin(true); + ThemeController.isLogin = true; this._themeWatcher.recheck(); }, @@ -926,7 +926,7 @@ export default createReactClass({ }); this._setPage(PageTypes.HomePage); this.notifyNewScreen('home'); - ThemeController.setIsLogin(false); + ThemeController.isLogin = false; this._themeWatcher.recheck(); }, @@ -1240,7 +1240,7 @@ export default createReactClass({ }); this.subTitleStatus = ''; this._setPageSubtitle(); - ThemeController.setIsLogin(true); + ThemeController.isLogin = true; this._themeWatcher.recheck(); }, diff --git a/src/settings/controllers/ThemeController.js b/src/settings/controllers/ThemeController.js index 1586ab7a7f..4098a5ca3e 100644 --- a/src/settings/controllers/ThemeController.js +++ b/src/settings/controllers/ThemeController.js @@ -21,10 +21,6 @@ import {DEFAULT_THEME, enumerateThemes} from "../../theme"; export default class ThemeController extends SettingController { static isLogin = false; - static setIsLogin(val) { - ThemeController.isLogin = val; - } - getValueOverride(level, roomId, calculatedValue, calculatedAtLevel) { if (!calculatedValue) return null; // Don't override null themes