Add spec for DeviceInfo module
Summary: Adding flow types for DeviceInfo module and migrating our codebase over to using `DeviceInfo.getConstants()` Reviewed By: fkgozali Differential Revision: D14645744 fbshipit-source-id: e30a060c6dc92938cd1420ba11a1d837c79d1e32
This commit is contained in:
Родитель
40625ceabf
Коммит
96a5001024
|
@ -10,10 +10,6 @@
|
|||
|
||||
'use strict';
|
||||
|
||||
const DeviceInfo = require('../BatchedBridge/NativeModules').DeviceInfo;
|
||||
import NativeDeviceInfo from './NativeDeviceInfo';
|
||||
|
||||
const invariant = require('invariant');
|
||||
|
||||
invariant(DeviceInfo, 'DeviceInfo native module is not installed correctly');
|
||||
|
||||
module.exports = DeviceInfo;
|
||||
module.exports = NativeDeviceInfo;
|
||||
|
|
|
@ -14,6 +14,8 @@ const EventEmitter = require('../vendor/emitter/EventEmitter');
|
|||
const Platform = require('./Platform');
|
||||
const RCTDeviceEventEmitter = require('../EventEmitter/RCTDeviceEventEmitter');
|
||||
|
||||
import NativeDeviceInfo from './NativeDeviceInfo';
|
||||
|
||||
const invariant = require('invariant');
|
||||
|
||||
const eventEmitter = new EventEmitter();
|
||||
|
@ -128,8 +130,7 @@ let dims: ?{[key: string]: any} =
|
|||
global.nativeExtensions.DeviceInfo.Dimensions;
|
||||
let nativeExtensionsEnabled = true;
|
||||
if (!dims) {
|
||||
const DeviceInfo = require('./DeviceInfo');
|
||||
dims = DeviceInfo.Dimensions;
|
||||
dims = NativeDeviceInfo.getConstants().Dimensions;
|
||||
nativeExtensionsEnabled = false;
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,47 @@
|
|||
/**
|
||||
* 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 strict-local
|
||||
* @format
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
import type {TurboModule} from 'RCTExport';
|
||||
import * as TurboModuleRegistry from 'TurboModuleRegistry';
|
||||
|
||||
type DisplayMetricsAndroid = {|
|
||||
width: number,
|
||||
height: number,
|
||||
scale: number,
|
||||
fontScale: number,
|
||||
densityDpi: number,
|
||||
|};
|
||||
|
||||
type DisplayMetricsIOS = {|
|
||||
width: number,
|
||||
height: number,
|
||||
scale: number,
|
||||
fontScale: number,
|
||||
|};
|
||||
|
||||
export interface Spec extends TurboModule {
|
||||
+getConstants: () => {|
|
||||
+Dimensions: {
|
||||
window?: DisplayMetricsIOS,
|
||||
screen?: DisplayMetricsIOS,
|
||||
windowPhysicalPixels?: DisplayMetricsAndroid,
|
||||
screenPhysicalPixels?: DisplayMetricsAndroid,
|
||||
},
|
||||
+isIPhoneX_deprecated?: boolean,
|
||||
|};
|
||||
}
|
||||
|
||||
const NativeModule = TurboModuleRegistry.getEnforcing<Spec>('DeviceInfo');
|
||||
|
||||
const NativeDeviceInfo = NativeModule;
|
||||
|
||||
export default NativeDeviceInfo;
|
|
@ -14,6 +14,6 @@ describe('DeviceInfo', () => {
|
|||
const DeviceInfo = require('../DeviceInfo');
|
||||
|
||||
it('should give device info', () => {
|
||||
expect(DeviceInfo).toHaveProperty('Dimensions');
|
||||
expect(DeviceInfo.getConstants()).toHaveProperty('Dimensions');
|
||||
});
|
||||
});
|
||||
|
|
|
@ -206,7 +206,7 @@ module.exports = {
|
|||
return require('DatePickerAndroid');
|
||||
},
|
||||
get DeviceInfo() {
|
||||
return require('DeviceInfo');
|
||||
return require('NativeDeviceInfo').default;
|
||||
},
|
||||
get Dimensions() {
|
||||
return require('Dimensions');
|
||||
|
|
|
@ -87,7 +87,7 @@ class IsIPhoneXExample extends React.Component<{}> {
|
|||
<View>
|
||||
<Text>
|
||||
Is this an iPhone X:{' '}
|
||||
{DeviceInfo.isIPhoneX_deprecated
|
||||
{DeviceInfo.getConstants().isIPhoneX_deprecated
|
||||
? 'Yeah!'
|
||||
: 'Nope. (Or `isIPhoneX_deprecated` was already removed.)'}
|
||||
</Text>
|
||||
|
|
|
@ -153,19 +153,23 @@ const mockNativeModules = {
|
|||
queryData: jest.fn(),
|
||||
},
|
||||
DeviceInfo: {
|
||||
Dimensions: {
|
||||
window: {
|
||||
fontScale: 2,
|
||||
height: 1334,
|
||||
scale: 2,
|
||||
width: 750,
|
||||
},
|
||||
screen: {
|
||||
fontScale: 2,
|
||||
height: 1334,
|
||||
scale: 2,
|
||||
width: 750,
|
||||
},
|
||||
getConstants() {
|
||||
return {
|
||||
Dimensions: {
|
||||
window: {
|
||||
fontScale: 2,
|
||||
height: 1334,
|
||||
scale: 2,
|
||||
width: 750,
|
||||
},
|
||||
screen: {
|
||||
fontScale: 2,
|
||||
height: 1334,
|
||||
scale: 2,
|
||||
width: 750,
|
||||
},
|
||||
},
|
||||
};
|
||||
},
|
||||
},
|
||||
FacebookSDK: {
|
||||
|
|
Загрузка…
Ссылка в новой задаче