33 lines
No EOL
1.2 KiB
TypeScript
33 lines
No EOL
1.2 KiB
TypeScript
import { FluxDispatcher, moment } from "@metro/common";
|
|
import { findByProps, findByStoreName } from "@metro/filters";
|
|
import logger from "@lib/logger";
|
|
|
|
const ThemeManager = findByProps("updateTheme", "overrideTheme");
|
|
const AMOLEDThemeManager = findByProps("setAMOLEDThemeEnabled");
|
|
const ThemeStore = findByStoreName("ThemeStore");
|
|
const UnsyncedUserSettingsStore = findByStoreName("UnsyncedUserSettingsStore");
|
|
|
|
function onDispatch({ locale }: { locale: string }) {
|
|
// Theming
|
|
// Based on https://github.com/Aliucord/AliucordRN/blob/main/src/ui/patchTheme.ts
|
|
try {
|
|
const theme = ThemeStore.theme || "dark";
|
|
ThemeManager.overrideTheme(theme);
|
|
if (AMOLEDThemeManager && UnsyncedUserSettingsStore.useAMOLEDTheme === 2) AMOLEDThemeManager.setAMOLEDThemeEnabled(true);
|
|
} catch(e) {
|
|
logger.error("Failed to fix theme...", e);
|
|
}
|
|
|
|
// Timestamps
|
|
try {
|
|
// TODO: Test if this works with all locales
|
|
moment.locale(locale.toLowerCase());
|
|
} catch(e) {
|
|
logger.error("Failed to fix timestamps...", e);
|
|
}
|
|
|
|
// We're done here!
|
|
FluxDispatcher.unsubscribe("I18N_LOAD_SUCCESS", onDispatch);
|
|
}
|
|
|
|
export default () => FluxDispatcher.subscribe("I18N_LOAD_SUCCESS", onDispatch); |