39 lines
1.4 KiB
TypeScript
39 lines
1.4 KiB
TypeScript
/*
|
|
Copyright 2024 New Vector Ltd.
|
|
Copyright 2021 The Matrix.org Foundation C.I.C.
|
|
|
|
SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only
|
|
Please see LICENSE files in the repository root for full details.
|
|
*/
|
|
|
|
/**
|
|
* This code is removed on production builds.
|
|
*
|
|
* Webpack's `string-replace-loader` searches for the `use theming` string
|
|
* in this specific file, and replaces it with CSS requires statements that
|
|
* are specific to the themes we have enabled.
|
|
*
|
|
* Without this workaround, webpack would import the CSS of all themes, which
|
|
* would defeat the purpose of hot-reloading since all themes would be compiled,
|
|
* which would result in compilation times on the order of 30s, even on a
|
|
* powerful machine.
|
|
*
|
|
* For more details, see webpack.config.js:184 (string-replace-loader)
|
|
*/
|
|
if (process.env.NODE_ENV === "development") {
|
|
("use theming");
|
|
/**
|
|
* Clean up old hot-module script injections as they hog up memory
|
|
* and anything other than the newest one is really not needed at all.
|
|
* We don't need to do it more frequently than every half a minute or so,
|
|
* but it's done to delay full page reload due to app slowness.
|
|
*/
|
|
setInterval(() => {
|
|
const elements = Array.from(document.querySelectorAll("script[src*=hot-update]"));
|
|
if (elements.length > 1) {
|
|
const oldInjects = elements.slice(0, elements.length - 1);
|
|
oldInjects.forEach((e) => e.remove());
|
|
}
|
|
}, 1000);
|
|
}
|