31 lines
No EOL
1.2 KiB
TypeScript
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)
|
|
}
|
|
} |