From d6c43986fd665b60a8a83d41ef907dab22e990e7 Mon Sep 17 00:00:00 2001 From: megumin Date: Fri, 4 Aug 2023 18:52:20 +0100 Subject: Add proper user-friendly theme manager (#635) Co-authored-by: Justice Almanzar Co-authored-by: Nuckyz <61953774+Nuckyz@users.noreply.github.com> Co-authored-by: V --- src/utils/quickCss.ts | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) (limited to 'src/utils/quickCss.ts') diff --git a/src/utils/quickCss.ts b/src/utils/quickCss.ts index 0ce50e5..488dcfb 100644 --- a/src/utils/quickCss.ts +++ b/src/utils/quickCss.ts @@ -46,9 +46,23 @@ async function initThemes() { document.documentElement.appendChild(themesStyle); } - const { themeLinks } = Settings; - const links = themeLinks.map(link => `@import url("${link.trim()}");`).join("\n"); - themesStyle.textContent = links; + const { themeLinks, enabledThemes } = Settings; + + const links: string[] = [...themeLinks]; + + if (IS_WEB) { + for (const theme of enabledThemes) { + const themeData = await VencordNative.themes.getThemeData(theme); + if (!themeData) continue; + const blob = new Blob([themeData], { type: "text/css" }); + links.push(URL.createObjectURL(blob)); + } + } else { + const localThemes = enabledThemes.map(theme => `vencord:///themes/${theme}?v=${Date.now()}`); + links.push(...localThemes); + } + + themesStyle.textContent = links.map(link => `@import url("${link.trim()}");`).join("\n"); } document.addEventListener("DOMContentLoaded", () => { @@ -57,4 +71,8 @@ document.addEventListener("DOMContentLoaded", () => { initThemes(); addSettingsListener("themeLinks", initThemes); + addSettingsListener("enabledThemes", initThemes); + + if (!IS_WEB) + VencordNative.quickCss.addThemeChangeListener(initThemes); }); -- cgit