@vineyardbovines/react-native-nitro-stylesheet
Version:
Performant, extended StyleSheet for React Native
143 lines (138 loc) • 5.45 kB
text/typescript
import { useEffect, useState } from "react";
import { NitroAccessibilityModule } from "../modules/Accessibility";
import type { AccessibilitySettings } from "../types/a11y";
export function useAccessibilitySettings() {
const [settings, setSettings] = useState<AccessibilitySettings>({
isReduceMotionEnabled: NitroAccessibilityModule.getIsReduceMotionEnabled(),
isReduceTransparencyEnabled: NitroAccessibilityModule.getIsReduceTransparencyEnabled(),
isGrayscaleEnabled: NitroAccessibilityModule.getIsGrayscaleEnabled(),
isBoldTextEnabled: NitroAccessibilityModule.getIsBoldTextEnabled(),
isVoiceOverEnabled: NitroAccessibilityModule.getIsVoiceOverEnabled(),
isSwitchControlEnabled: NitroAccessibilityModule.getIsSwitchControlEnabled(),
isVideoAutoplayEnabled: NitroAccessibilityModule.getIsVideoAutoplayEnabled(),
isClosedCaptioningEnabled: NitroAccessibilityModule.getIsClosedCaptioningEnabled(),
isDarkerSystemColorsEnabled: NitroAccessibilityModule.getIsDarkerSystemColorsEnabled(),
isMonoAudioEnabled: NitroAccessibilityModule.getIsMonoAudioEnabled(),
isShakeToUndoEnabled: NitroAccessibilityModule.getIsShakeToUndoEnabled(),
isDifferentiateWithoutColorEnabled:
NitroAccessibilityModule.getIsDifferentiateWithoutColorEnabled(),
isInvertColorsEnabled: NitroAccessibilityModule.getIsInvertColorsEnabled(),
isShowButtonShapesEnabled: NitroAccessibilityModule.getIsShowButtonShapesEnabled(),
prefersCrossFadeTransitions: NitroAccessibilityModule.getPrefersCrossFadeTransitionsEnabled(),
isSpeakScreenEnabled: NitroAccessibilityModule.getIsSpeakScreenEnabled(),
isSpeakSelectionEnabled: NitroAccessibilityModule.getIsSpeakSelectionEnabled(),
isOnOffSwitchLabelsEnabled: NitroAccessibilityModule.getIsOnOffSwitchLabelsEnabled(),
});
useEffect(() => {
NitroAccessibilityModule.addReduceMotionListener((isEnabled) =>
setSettings((prevSettings) => ({
...prevSettings,
isReduceMotionEnabled: isEnabled,
}))
);
NitroAccessibilityModule.addReduceTransparencyListener((isEnabled) =>
setSettings((prevSettings) => ({
...prevSettings,
isReduceTransparencyEnabled: isEnabled,
}))
);
NitroAccessibilityModule.addGrayscaleListener((isEnabled) =>
setSettings((prevSettings) => ({
...prevSettings,
isGrayscaleEnabled: isEnabled,
}))
);
NitroAccessibilityModule.addBoldTextListener((isEnabled) =>
setSettings((prevSettings) => ({
...prevSettings,
isBoldTextEnabled: isEnabled,
}))
);
NitroAccessibilityModule.addVoiceOverListener((isEnabled) =>
setSettings((prevSettings) => ({
...prevSettings,
isVoiceOverEnabled: isEnabled,
}))
);
NitroAccessibilityModule.addSwitchControlListener((isEnabled) =>
setSettings((prevSettings) => ({
...prevSettings,
isSwitchControlEnabled: isEnabled,
}))
);
NitroAccessibilityModule.addVideoAutoplayListener((isEnabled) =>
setSettings((prevSettings) => ({
...prevSettings,
isVideoAutoplayEnabled: isEnabled,
}))
);
NitroAccessibilityModule.addClosedCaptioningListener((isEnabled) =>
setSettings((prevSettings) => ({
...prevSettings,
isClosedCaptioningEnabled: isEnabled,
}))
);
NitroAccessibilityModule.addDarkerSystemColorsListener((isEnabled) =>
setSettings((prevSettings) => ({
...prevSettings,
isDarkerSystemColorsEnabled: isEnabled,
}))
);
NitroAccessibilityModule.addMonoAudioListener((isEnabled) =>
setSettings((prevSettings) => ({
...prevSettings,
isMonoAudioEnabled: isEnabled,
}))
);
NitroAccessibilityModule.addShakeToUndoListener((isEnabled) =>
setSettings((prevSettings) => ({
...prevSettings,
isShakeToUndoEnabled: isEnabled,
}))
);
NitroAccessibilityModule.addDifferentiateWithoutColorListener((isEnabled) =>
setSettings((prevSettings) => ({
...prevSettings,
isDifferentiateWithoutColorEnabled: isEnabled,
}))
);
NitroAccessibilityModule.addInvertColorsListener((isEnabled) =>
setSettings((prevSettings) => ({
...prevSettings,
isInvertColorsEnabled: isEnabled,
}))
);
NitroAccessibilityModule.addShowButtonShapesListener((isEnabled) =>
setSettings((prevSettings) => ({
...prevSettings,
isShowButtonShapesEnabled: isEnabled,
}))
);
NitroAccessibilityModule.addPrefersCrossFadeTransitionsListener((isEnabled) =>
setSettings((prevSettings) => ({
...prevSettings,
prefersCrossFadeTransitions: isEnabled,
}))
);
NitroAccessibilityModule.addSpeakScreenListener((isEnabled) =>
setSettings((prevSettings) => ({
...prevSettings,
isSpeakScreenEnabled: isEnabled,
}))
);
NitroAccessibilityModule.addSpeakSelectionListener((isEnabled) =>
setSettings((prevSettings) => ({
...prevSettings,
isSpeakSelectionEnabled: isEnabled,
}))
);
NitroAccessibilityModule.addOnOffSwitchLabelsListener((isEnabled) =>
setSettings((prevSettings) => ({
...prevSettings,
isOnOffSwitchLabelsEnabled: isEnabled,
}))
);
return (): void => NitroAccessibilityModule.removeListeners();
}, []);
return settings;
}