1 |
|
2 |
|
3 | import invariant from 'invariant';
|
4 | import { EventEmitter, EventSubscription } from 'fbemitter';
|
5 | import { DeviceEventEmitter, NativeModules } from 'react-native';
|
6 |
|
7 | const { ExponentUtil } = NativeModules;
|
8 |
|
9 | export function getCurrentDeviceCountryAsync(): Promise<string> {
|
10 | return ExponentUtil.getCurrentDeviceCountryAsync();
|
11 | }
|
12 |
|
13 | export function getCurrentLocaleAsync(): Promise<string> {
|
14 | return ExponentUtil.getCurrentLocaleAsync();
|
15 | }
|
16 |
|
17 | export function getCurrentTimeZoneAsync(): Promise<string> {
|
18 | return ExponentUtil.getCurrentTimeZoneAsync();
|
19 | }
|
20 |
|
21 | export function reload(): void {
|
22 | ExponentUtil.reload();
|
23 | }
|
24 |
|
25 | let _emitter: ?EventEmitter;
|
26 |
|
27 | function _getEmitter(): EventEmitter {
|
28 | if (!_emitter) {
|
29 | _emitter = new EventEmitter();
|
30 | DeviceEventEmitter.addListener('Exponent.newVersionAvailable', _emitNewVersionAvailable);
|
31 | }
|
32 | return _emitter;
|
33 | }
|
34 |
|
35 | function _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 |
|
44 | export function addNewVersionListenerExperimental(listener: Function): EventSubscription {
|
45 | let emitter = _getEmitter();
|
46 | return emitter.addListener('newVersionAvailable', listener);
|
47 | }
|