diff options
| author | megumin <megumin.bakaretsurie@gmail.com> | 2023-08-04 18:52:20 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-08-04 19:52:20 +0200 |
| commit | d6c43986fd665b60a8a83d41ef907dab22e990e7 (patch) | |
| tree | ff9eda6794ef371568662b389a5e71e32bbbc16c /src/utils | |
| parent | bb7deeb09cb263d158de0d99e873c3d3f43a73bb (diff) | |
| download | Vencord-d6c43986fd665b60a8a83d41ef907dab22e990e7.tar.gz Vencord-d6c43986fd665b60a8a83d41ef907dab22e990e7.tar.bz2 Vencord-d6c43986fd665b60a8a83d41ef907dab22e990e7.zip | |
Add proper user-friendly theme manager (#635)
Co-authored-by: Justice Almanzar <superdash993@gmail.com>
Co-authored-by: Nuckyz <61953774+Nuckyz@users.noreply.github.com>
Co-authored-by: V <vendicated@riseup.net>
Diffstat (limited to 'src/utils')
| -rw-r--r-- | src/utils/IpcEvents.ts | 6 | ||||
| -rw-r--r-- | src/utils/quickCss.ts | 24 |
2 files changed, 27 insertions, 3 deletions
diff --git a/src/utils/IpcEvents.ts b/src/utils/IpcEvents.ts index 6994c91..cb51f81 100644 --- a/src/utils/IpcEvents.ts +++ b/src/utils/IpcEvents.ts @@ -18,8 +18,14 @@ export const enum IpcEvents { QUICK_CSS_UPDATE = "VencordQuickCssUpdate", + THEME_UPDATE = "VencordThemeUpdate", GET_QUICK_CSS = "VencordGetQuickCss", SET_QUICK_CSS = "VencordSetQuickCss", + UPLOAD_THEME = "VencordUploadTheme", + DELETE_THEME = "VencordDeleteTheme", + GET_THEMES_DIR = "VencordGetThemesDir", + GET_THEMES_LIST = "VencordGetThemesList", + GET_THEME_DATA = "VencordGetThemeData", GET_SETTINGS_DIR = "VencordGetSettingsDir", GET_SETTINGS = "VencordGetSettings", SET_SETTINGS = "VencordSetSettings", 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); }); |
