Add spec for AccessibilityManager (#24894)

Summary:
Part of https://github.com/facebook/react-native/issues/24875

## Changelog

[General] [Added] - Add TurboModule spec for AccessibilityManager
Pull Request resolved: https://github.com/facebook/react-native/pull/24894

Reviewed By: rickhanlonii

Differential Revision: D15471243

Pulled By: fkgozali

fbshipit-source-id: 33f39d41d70da9380f29f2eb47e8c7682b323030
This commit is contained in:
michalchudziak 2019-05-29 13:01:45 -07:00 коммит произвёл Facebook Github Bot
Родитель a3479c212a
Коммит 71461cb3dd
2 изменённых файлов: 86 добавлений и 11 удалений

Просмотреть файл

@ -10,12 +10,11 @@
'use strict';
const NativeModules = require('../../BatchedBridge/NativeModules');
import NativeAccessibilityManager from './NativeAccessibilityManager';
const Promise = require('../../Promise');
const RCTDeviceEventEmitter = require('../../EventEmitter/RCTDeviceEventEmitter');
const AccessibilityManager = NativeModules.AccessibilityManager;
const CHANGE_EVENT_NAME = {
announcementFinished: 'announcementFinished',
boldTextChanged: 'boldTextChanged',
@ -59,7 +58,11 @@ const AccessibilityInfo = {
*/
isBoldTextEnabled: function(): Promise<boolean> {
return new Promise((resolve, reject) => {
AccessibilityManager.getCurrentBoldTextState(resolve, reject);
if (NativeAccessibilityManager) {
NativeAccessibilityManager.getCurrentBoldTextState(resolve, reject);
} else {
reject(reject);
}
});
},
@ -73,7 +76,11 @@ const AccessibilityInfo = {
*/
isGrayscaleEnabled: function(): Promise<boolean> {
return new Promise((resolve, reject) => {
AccessibilityManager.getCurrentGrayscaleState(resolve, reject);
if (NativeAccessibilityManager) {
NativeAccessibilityManager.getCurrentGrayscaleState(resolve, reject);
} else {
reject(reject);
}
});
},
@ -87,7 +94,11 @@ const AccessibilityInfo = {
*/
isInvertColorsEnabled: function(): Promise<boolean> {
return new Promise((resolve, reject) => {
AccessibilityManager.getCurrentInvertColorsState(resolve, reject);
if (NativeAccessibilityManager) {
NativeAccessibilityManager.getCurrentInvertColorsState(resolve, reject);
} else {
reject(reject);
}
});
},
@ -101,7 +112,11 @@ const AccessibilityInfo = {
*/
isReduceMotionEnabled: function(): Promise<boolean> {
return new Promise((resolve, reject) => {
AccessibilityManager.getCurrentReduceMotionState(resolve, reject);
if (NativeAccessibilityManager) {
NativeAccessibilityManager.getCurrentReduceMotionState(resolve, reject);
} else {
reject(reject);
}
});
},
@ -115,7 +130,14 @@ const AccessibilityInfo = {
*/
isReduceTransparencyEnabled: function(): Promise<boolean> {
return new Promise((resolve, reject) => {
AccessibilityManager.getCurrentReduceTransparencyState(resolve, reject);
if (NativeAccessibilityManager) {
NativeAccessibilityManager.getCurrentReduceTransparencyState(
resolve,
reject,
);
} else {
reject(reject);
}
});
},
@ -129,7 +151,11 @@ const AccessibilityInfo = {
*/
isScreenReaderEnabled: function(): Promise<boolean> {
return new Promise((resolve, reject) => {
AccessibilityManager.getCurrentVoiceOverState(resolve, reject);
if (NativeAccessibilityManager) {
NativeAccessibilityManager.getCurrentVoiceOverState(resolve, reject);
} else {
reject(reject);
}
});
},
@ -204,7 +230,9 @@ const AccessibilityInfo = {
* See http://facebook.github.io/react-native/docs/accessibilityinfo.html#setaccessibilityfocus
*/
setAccessibilityFocus: function(reactTag: number): void {
AccessibilityManager.setAccessibilityFocus(reactTag);
if (NativeAccessibilityManager) {
NativeAccessibilityManager.setAccessibilityFocus(reactTag);
}
},
/**
@ -213,7 +241,9 @@ const AccessibilityInfo = {
* See http://facebook.github.io/react-native/docs/accessibilityinfo.html#announceforaccessibility
*/
announceForAccessibility: function(announcement: string): void {
AccessibilityManager.announceForAccessibility(announcement);
if (NativeAccessibilityManager) {
NativeAccessibilityManager.announceForAccessibility(announcement);
}
},
/**

Просмотреть файл

@ -0,0 +1,45 @@
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @flow
* @format
*/
'use strict';
import type {TurboModule} from 'RCTExport';
import * as TurboModuleRegistry from 'TurboModuleRegistry';
export interface Spec extends TurboModule {
+getCurrentBoldTextState: (
onSuccess: (isBoldTextEnabled: boolean) => void,
onError: (error: Object) => void,
) => void;
+getCurrentGrayscaleState: (
onSuccess: (isGrayscaleEnabled: boolean) => void,
onError: (error: Object) => void,
) => void;
+getCurrentInvertColorsState: (
onSuccess: (isInvertColorsEnabled: boolean) => void,
onError: (error: Object) => void,
) => void;
+getCurrentReduceMotionState: (
onSuccess: (isReduceMotionEnabled: boolean) => void,
onError: (error: Object) => void,
) => void;
+getCurrentReduceTransparencyState: (
onSuccess: (isReduceTransparencyEnabled: boolean) => void,
onError: (error: Object) => void,
) => void;
+getCurrentVoiceOverState: (
onSuccess: (isScreenReaderEnabled: boolean) => void,
onError: (error: Object) => void,
) => void;
+setAccessibilityFocus: (reactTag: number) => void;
+announceForAccessibility: (announcement: string) => void;
}
export default TurboModuleRegistry.get<Spec>('AccessibilityManager');