Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

De-dup theming code #11445

Merged
merged 2 commits into from
Nov 21, 2019
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 2 additions & 48 deletions src/vector/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -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} from "matrix-react-sdk/lib/theme";
import {setTheme} from "matrix-react-sdk/lib/theme";

import Olm from 'olm';

Expand Down Expand Up @@ -255,53 +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 theme = SettingsStore.getValue("theme");
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) {
Expand Down