Files
discord-decomp/modules/a11y/native/AccessibilityManager.tsx
T
2026-11-01 12:12:55 +02:00

83 lines
3.2 KiB
TypeScript

// Metro module 13499 (f13500).
import { AccessibilityInfo, Appearance } from "react-native";
import AccessibilityStore from "../AccessibilityStore";
import { AnalyticEvents } from "../../../Constants";
import { SystemTheme } from "../../user_settings/ThemeConstants";
import AccessibilitySystemFeatures from "./AccessibilitySystemFeatures";
import Dispatcher from "../../../Dispatcher";
import AnalyticsUtils from "../../../utils/AnalyticsUtils";
import { updateSaturation } from "../../themes/native/updateSaturation";
import updateSharedValueIfChanged_native from "../../reanimated/utils/updateSharedValueIfChanged.native";
import { accessibilityPreferencesSharedValue } from "./AccessibilityPreferencesSharedValue";
import { setSystemTheme } from "../../user_settings/ThemeActionCreators";
import { AccessibilityAnnouncer } from "../../../design/shared";
const r27 = {
init: function init() {
AccessibilitySystemFeatures.init();
this.updateNativeColors();
this.updateMotionSettings();
AccessibilityStore.addChangeListener(this.updateNativeColors);
AccessibilityStore.addChangeListener(this.updateMotionSettings);
Dispatcher.subscribe("CONNECTION_OPEN", this.updateMotionSettings);
Appearance.addChangeListener(this.updateSystemAppearance);
AccessibilityInfo.addEventListener("screenReaderChanged", (a0) => {
this.updateScreenReaderEnabled(a0);
});
Dispatcher.subscribe("ACCESSIBILITY_COLORBLIND_TOGGLE", () => {
AnalyticsUtils.track(AnalyticEvents.LOCAL_SETTINGS_UPDATED, {
colorblind_enabled: AccessibilityStore.colorblindMode
});
});
this.startAnnouncementQueue();
},
updateNativeColors: () => {
updateSaturation(AccessibilityStore.saturation);
},
updateMotionSettings: () => {
updateSharedValueIfChanged_native(accessibilityPreferencesSharedValue, {
reduceMotion: AccessibilityStore.useReducedMotion,
prefersCrossfades: AccessibilityStore.systemPrefersCrossfades
});
},
checkScreenreaderEnabled: async function checkScreenreaderEnabled() {
const _this = this;
let c27478_1;
c27478_1 = void 0;
let c30632_0 = await AccessibilityInfo.isScreenReaderEnabled();
_this.updateScreenReaderEnabled(c30632_0);
},
updateScreenReaderEnabled: (a0) => {
updateSharedValueIfChanged_native(accessibilityPreferencesSharedValue, {
screenReaderEnabled: a0
});
},
updateSystemAppearance: (a0) => {
let NO_PREFERENCE = SystemTheme.NO_PREFERENCE;
const colorScheme = a0.colorScheme;
if (colorScheme === "light") {
NO_PREFERENCE = SystemTheme.LIGHT;
} else if (colorScheme === "dark") {
NO_PREFERENCE = SystemTheme.DARK;
}
setSystemTheme(NO_PREFERENCE);
},
startAnnouncementQueue: () => {
let c20500_0 = new Set();
AccessibilityInfo.addEventListener("announcementFinished", (a0) => {
if (!a0.success) {
if (!c20500_0.has(a0.announcement)) {
c20500_0.add(a0.announcement);
setTimeout(() => {
AccessibilityAnnouncer.announce(a0.announcement);
}, 150);
} else {
c20500_0.delete(a0.announcement);
}
} else {
c20500_0.delete(a0.announcement);
}
});
}
};
export default r27;