UNPKG

1.35 kBJavaScriptView Raw
1// @flow
2
3import invariant from 'invariant';
4import { EventEmitter, EventSubscription } from 'fbemitter';
5import { DeviceEventEmitter, NativeModules } from 'react-native';
6
7const { ExponentUtil } = NativeModules;
8
9export function getCurrentDeviceCountryAsync(): Promise<string> {
10 return ExponentUtil.getCurrentDeviceCountryAsync();
11}
12
13export function getCurrentLocaleAsync(): Promise<string> {
14 return ExponentUtil.getCurrentLocaleAsync();
15}
16
17export function getCurrentTimeZoneAsync(): Promise<string> {
18 return ExponentUtil.getCurrentTimeZoneAsync();
19}
20
21export function reload(): void {
22 ExponentUtil.reload();
23}
24
25let _emitter: ?EventEmitter;
26
27function _getEmitter(): EventEmitter {
28 if (!_emitter) {
29 _emitter = new EventEmitter();
30 DeviceEventEmitter.addListener('Exponent.newVersionAvailable', _emitNewVersionAvailable);
31 }
32 return _emitter;
33}
34
35function _emitNewVersionAvailable(newVersionEvent): void {
36 if (typeof newVersionEvent === 'string') {
37 newVersionEvent = JSON.parse(newVersionEvent);
38 }
39
40 invariant(_emitter, `EventEmitter must be initialized to use from its listener`);
41 _emitter.emit('newVersionAvailable', newVersionEvent);
42}
43
44export function addNewVersionListenerExperimental(listener: Function): EventSubscription {
45 let emitter = _getEmitter();
46 return emitter.addListener('newVersionAvailable', listener);
47}