Merge pull request #11445 from vector-im/dbkr/dedup_theming_code
De-dup theming codepull/11488/head
						commit
						8b2ca56283
					
				|  | @ -57,7 +57,7 @@ import WebPlatform from './platform/WebPlatform'; | |||
| import MatrixClientPeg from 'matrix-react-sdk/lib/MatrixClientPeg'; | ||||
| import SettingsStore from "matrix-react-sdk/lib/settings/SettingsStore"; | ||||
| import SdkConfig from "matrix-react-sdk/lib/SdkConfig"; | ||||
| import {getBaseTheme, setTheme, ThemeWatcher} from "matrix-react-sdk/lib/theme"; | ||||
| import {setTheme} from "matrix-react-sdk/lib/theme"; | ||||
| 
 | ||||
| import Olm from 'olm'; | ||||
| 
 | ||||
|  | @ -255,54 +255,7 @@ async function loadApp() { | |||
|     } | ||||
| 
 | ||||
|     // as quickly as we possibly can, set a default theme...
 | ||||
|     // we do this by checking to see if the theme's "base" has loaded first so we can
 | ||||
|     // safely rely on the assets.
 | ||||
|     let a; | ||||
|     const themeWatcher = new ThemeWatcher(); | ||||
|     const theme = themeWatcher.getEffectiveTheme(); | ||||
|     const baseTheme = getBaseTheme(theme); | ||||
|     for (let i = 0; (a = document.getElementsByTagName("link")[i]); i++) { | ||||
|         const href = a.getAttribute("href"); | ||||
|         if (!href) continue; | ||||
|         // shouldn't we be using the 'title' tag rather than the href?
 | ||||
|         const match = href.match(/^bundles\/.*\/theme-(.*)\.css$/); | ||||
|         if (match) { | ||||
|             if (match[1] === baseTheme) { | ||||
|                 // remove the disabled flag off the stylesheet
 | ||||
| 
 | ||||
|                 // Firefox requires setting the attribute to false, so do
 | ||||
|                 // that instead of removing it. Related:
 | ||||
|                 // https://bugzilla.mozilla.org/show_bug.cgi?id=1281135
 | ||||
|                 a.disabled = false; | ||||
| 
 | ||||
|                 // in case the Tinter.tint() in MatrixChat fires before the
 | ||||
|                 // CSS has actually loaded (which in practice happens)...
 | ||||
| 
 | ||||
|                 // This if fixes setTheme to not fire on Firefox
 | ||||
|                 // in case it is the first time loading Riot.
 | ||||
|                 // `InstallTrigger` is a Object which only exists on Firefox
 | ||||
|                 // (it is used for their Plugins) and can be used as a
 | ||||
|                 // feature check.
 | ||||
|                 // Firefox loads css always before js. This is why we dont use
 | ||||
|                 // onload or it's EventListener as those will never trigger.
 | ||||
|                 if (typeof InstallTrigger !== 'undefined') { | ||||
|                     setTheme(theme); | ||||
|                 } else { | ||||
|                     // FIXME: we should probably block loading the app or even
 | ||||
|                     // showing a spinner until the theme is loaded, to avoid
 | ||||
|                     // flashes of unstyled content.
 | ||||
|                     a.onload = () => { | ||||
|                         setTheme(theme); | ||||
|                     }; | ||||
|                 } | ||||
|             } else { | ||||
|                 // Firefox requires this to not be done via `setAttribute`
 | ||||
|                 // or via HTML.
 | ||||
|                 // https://bugzilla.mozilla.org/show_bug.cgi?id=1281135
 | ||||
|                 a.disabled = true; | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|     await setTheme(); | ||||
| 
 | ||||
|     // Now that we've loaded the theme (CSS), display the config syntax error if needed.
 | ||||
|     if (configSyntaxError) { | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 David Baker
						David Baker