Add hack to work around mystery settings bug

This commit is contained in:
David Baker 2019-11-20 15:34:32 +00:00
parent 71f5c8b2b0
commit a744415221
2 changed files with 9 additions and 4 deletions

View file

@ -185,7 +185,10 @@ export default class GeneralUserSettingsTab extends React.Component {
// The settings watcher doesn't fire until the echo comes back from the // The settings watcher doesn't fire until the echo comes back from the
// server, so to make the theme change immediately we need to manually // server, so to make the theme change immediately we need to manually
// do the dispatch now // do the dispatch now
dis.dispatch({action: 'recheck_theme'}); // XXX: The local echoed value appears to be unreliable, in particular
// when settings custom themes(!) so adding forceTheme to override
// the value from settings.
dis.dispatch({action: 'recheck_theme', forceTheme: newTheme});
}; };
_onUseSystemThemeChanged = (checked) => { _onUseSystemThemeChanged = (checked) => {

View file

@ -60,13 +60,15 @@ export class ThemeWatcher {
_onAction = (payload) => { _onAction = (payload) => {
if (payload.action === 'recheck_theme') { if (payload.action === 'recheck_theme') {
this.recheck(); // XXX forceTheme
this.recheck(payload.forceTheme);
} }
} }
recheck() { // XXX: forceTheme param aded here as local echo appears to be unreliable
recheck(forceTheme) {
const oldTheme = this._currentTheme; const oldTheme = this._currentTheme;
this._currentTheme = this.getEffectiveTheme(); this._currentTheme = forceTheme === undefined ? this.getEffectiveTheme() : forceTheme;
if (oldTheme !== this._currentTheme) { if (oldTheme !== this._currentTheme) {
setTheme(this._currentTheme); setTheme(this._currentTheme);
} }