diff --git a/src/lib/addons/themes/index.ts b/src/lib/addons/themes/index.ts index 4dcf455..fbebfd4 100644 --- a/src/lib/addons/themes/index.ts +++ b/src/lib/addons/themes/index.ts @@ -141,7 +141,7 @@ export function getCurrentTheme() { * @internal */ export function getThemeFromLoader(): VdThemeInfo | null { - return getStoredTheme(); + return getStoredTheme() ?? getCurrentTheme(); } /** @@ -157,6 +157,7 @@ export async function initThemes() { } await newAwaitStorage(colorsPref); + await awaitStorage(themes); const currentTheme = getThemeFromLoader(); initColors(currentTheme?.data ?? null); diff --git a/src/lib/api/native/loader.ts b/src/lib/api/native/loader.ts index 6aef226..4165c7d 100644 --- a/src/lib/api/native/loader.ts +++ b/src/lib/api/native/loader.ts @@ -10,6 +10,9 @@ const rainLoaderIdentity = globalThis.__RAIN_LOADER__; // @ts-ignore const vendettaLoaderIdentity = globalThis.__vendetta_loader; +// @ts-ignore +const shiggyLoaderIdentity = globalThis.__SHIGGY_LOADER__; + export interface VendettaLoaderIdentity { name: string; features: { @@ -36,6 +39,10 @@ export function isRa1nLoader() { return rainLoaderIdentity != null; } +export function isShiggyLoader() { + return shiggyLoaderIdentity != null; +} + function polyfillVendettaLoaderIdentity() { if (!isPyonLoader() || isVendettaLoader() || !isRa1nLoader()) return null; @@ -98,6 +105,8 @@ export function getLoaderIdentity() { return getVendettaLoaderIdentity(); } else if (isRa1nLoader()) { return rainLoaderIdentity(); + } else if (isShiggyLoader()) { + return shiggyLoaderIdentity; } return null; @@ -116,6 +125,7 @@ export function getLoaderName() { if (isPyonLoader()) return pyonLoaderIdentity.loaderName; else if (isRa1nLoader()) return rainLoaderIdentity.loadername; else if (isVendettaLoader()) return vendettaLoaderIdentity.name; + else if (isShiggyLoader()) return shiggyLoaderIdentity.loaderName; return "Unknown"; } @@ -123,6 +133,7 @@ export function getLoaderName() { export function getLoaderVersion(): string | null { if (isPyonLoader()) return pyonLoaderIdentity.loaderVersion; else if (isRa1nLoader()) return rainLoaderIdentity.loaderVersion; + else if (isShiggyLoader()) return shiggyLoaderIdentity.loaderVersion; return null; } @@ -144,7 +155,9 @@ export function isThemeSupported() { } else if (isVendettaLoader()) { return vendettaLoaderIdentity!!.features.themes != null; } else if (isRa1nLoader()) { - return false; // Ra1n has theme support disabled, this is here just to make sure it doesnt think it does + return false; // Rain has theme support disabled, this is here just to make sure it doesnt think it does + } else if (isShiggyLoader()) { + return shiggyLoaderIdentity.hasThemeSupport; } return false; @@ -158,6 +171,8 @@ export function getStoredTheme(): VdThemeInfo | null { if (!themeProp) return null; // @ts-ignore return globalThis[themeProp] || null; + } else if (isShiggyLoader()) { + return shiggyLoaderIdentity.storedTheme || null; } return null; @@ -168,6 +183,8 @@ export function getThemeFilePath() { return "pyoncord/current-theme.json"; } else if (isVendettaLoader()) { return "vendetta_theme.json"; + } else if (isShiggyLoader()) { + return "ShiggyCord/current-theme.json"; } return null; @@ -241,6 +258,7 @@ export function getLoaderConfigPath() { export function isFontSupported() { if (isPyonLoader()) return pyonLoaderIdentity.fontPatch === 2; + else if (isShiggyLoader()) return shiggyLoaderIdentity.fontPatch === 2; return false; } @@ -248,4 +266,4 @@ export function isFontSupported() { export async function clearBundle() { // TODO: This should be not be hardcoded, maybe put in loader.json? return void await removeCacheFile("bundle.js"); -} \ No newline at end of file +}