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
This commit is contained in:
parent
630507304a
commit
2d9b111680
2 changed files with 19 additions and 0 deletions
|
@ -53,6 +53,7 @@ import createRoom from "../../createRoom";
|
||||||
import KeyRequestHandler from '../../KeyRequestHandler';
|
import KeyRequestHandler from '../../KeyRequestHandler';
|
||||||
import { _t, getCurrentLanguage } from '../../languageHandler';
|
import { _t, getCurrentLanguage } from '../../languageHandler';
|
||||||
import SettingsStore, {SettingLevel} from "../../settings/SettingsStore";
|
import SettingsStore, {SettingLevel} from "../../settings/SettingsStore";
|
||||||
|
import ThemeController from "../../settings/controllers/ThemeController";
|
||||||
import { startAnyRegistrationFlow } from "../../Registration.js";
|
import { startAnyRegistrationFlow } from "../../Registration.js";
|
||||||
import { messageForSyncError } from '../../utils/ErrorUtils';
|
import { messageForSyncError } from '../../utils/ErrorUtils';
|
||||||
import ResizeNotifier from "../../utils/ResizeNotifier";
|
import ResizeNotifier from "../../utils/ResizeNotifier";
|
||||||
|
@ -506,6 +507,8 @@ export default createReactClass({
|
||||||
view: VIEWS.LOGIN,
|
view: VIEWS.LOGIN,
|
||||||
});
|
});
|
||||||
this.notifyNewScreen('login');
|
this.notifyNewScreen('login');
|
||||||
|
ThemeController.setIsLogin(true);
|
||||||
|
this._themeWatcher.recheck();
|
||||||
break;
|
break;
|
||||||
case 'start_post_registration':
|
case 'start_post_registration':
|
||||||
this.setState({
|
this.setState({
|
||||||
|
@ -760,6 +763,8 @@ export default createReactClass({
|
||||||
}
|
}
|
||||||
|
|
||||||
this.setStateForNewView(newState);
|
this.setStateForNewView(newState);
|
||||||
|
ThemeController.setIsLogin(true);
|
||||||
|
this._themeWatcher.recheck();
|
||||||
this.notifyNewScreen('register');
|
this.notifyNewScreen('register');
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -910,6 +915,8 @@ export default createReactClass({
|
||||||
view: VIEWS.WELCOME,
|
view: VIEWS.WELCOME,
|
||||||
});
|
});
|
||||||
this.notifyNewScreen('welcome');
|
this.notifyNewScreen('welcome');
|
||||||
|
ThemeController.setIsLogin(true);
|
||||||
|
this._themeWatcher.recheck();
|
||||||
},
|
},
|
||||||
|
|
||||||
_viewHome: function() {
|
_viewHome: function() {
|
||||||
|
@ -919,6 +926,8 @@ export default createReactClass({
|
||||||
});
|
});
|
||||||
this._setPage(PageTypes.HomePage);
|
this._setPage(PageTypes.HomePage);
|
||||||
this.notifyNewScreen('home');
|
this.notifyNewScreen('home');
|
||||||
|
ThemeController.setIsLogin(false);
|
||||||
|
this._themeWatcher.recheck();
|
||||||
},
|
},
|
||||||
|
|
||||||
_viewUser: function(userId, subAction) {
|
_viewUser: function(userId, subAction) {
|
||||||
|
@ -1231,6 +1240,8 @@ export default createReactClass({
|
||||||
});
|
});
|
||||||
this.subTitleStatus = '';
|
this.subTitleStatus = '';
|
||||||
this._setPageSubtitle();
|
this._setPageSubtitle();
|
||||||
|
ThemeController.setIsLogin(true);
|
||||||
|
this._themeWatcher.recheck();
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -19,9 +19,17 @@ import SettingController from "./SettingController";
|
||||||
import {DEFAULT_THEME, enumerateThemes} from "../../theme";
|
import {DEFAULT_THEME, enumerateThemes} from "../../theme";
|
||||||
|
|
||||||
export default class ThemeController extends SettingController {
|
export default class ThemeController extends SettingController {
|
||||||
|
static isLogin = false;
|
||||||
|
|
||||||
|
static setIsLogin(val) {
|
||||||
|
ThemeController.isLogin = val;
|
||||||
|
}
|
||||||
|
|
||||||
getValueOverride(level, roomId, calculatedValue, calculatedAtLevel) {
|
getValueOverride(level, roomId, calculatedValue, calculatedAtLevel) {
|
||||||
if (!calculatedValue) return null; // Don't override null themes
|
if (!calculatedValue) return null; // Don't override null themes
|
||||||
|
|
||||||
|
if (ThemeController.isLogin) return 'light';
|
||||||
|
|
||||||
const themes = enumerateThemes();
|
const themes = enumerateThemes();
|
||||||
// Override in case some no longer supported theme is stored here
|
// Override in case some no longer supported theme is stored here
|
||||||
if (!themes[calculatedValue]) {
|
if (!themes[calculatedValue]) {
|
||||||
|
|
Loading…
Reference in a new issue