GoonCord/src/ui/fixTheme.ts

31 lines
No EOL
1.2 KiB
TypeScript

// Loosely based on https://github.com/Aliucord/AliucordRN/blob/main/src/ui/patchTheme.ts
// Literally could not figure this out, many thanks
import { findByProps, findByStoreName } from "@metro/filters";
import { FluxDispatcher } from "@metro/common";
import logger from "@/lib/logger";
const ThemeManager = findByProps("updateTheme", "overrideTheme");
const AMOLEDThemeManager = findByProps("setAMOLEDThemeEnabled");
const ThemeStore = findByStoreName("ThemeStore");
const UnsyncedUserSettingsStore = findByStoreName("UnsyncedUserSettingsStore");
export function fixTheme() {
try {
if (ThemeStore) {
function override() {
const theme = ThemeStore.theme || "dark";
ThemeManager.overrideTheme(theme);
if (AMOLEDThemeManager && UnsyncedUserSettingsStore.useAMOLEDTheme === 2) {
AMOLEDThemeManager.setAMOLEDThemeEnabled(true);
}
FluxDispatcher.unsubscribe("I18N_LOAD_START", override);
}
FluxDispatcher.subscribe("I18N_LOAD_START", override);
}
} catch(e) {
logger.error("Failed to fix theme...", e)
}
}