UNPKG

2.22 kBJavaScriptView Raw
1import { EventEmitter } from 'fbemitter';
2import { DeviceEventEmitter, NativeModules } from 'react-native';
3const { ExponentUpdates } = NativeModules;
4export function reload() {
5 ExponentUpdates.reload();
6}
7export function reloadFromCache() {
8 ExponentUpdates.reloadFromCache();
9}
10export async function checkForUpdateAsync() {
11 const result = await ExponentUpdates.checkForUpdateAsync();
12 let returnObj = {
13 isAvailable: !!result,
14 };
15 if (result) {
16 returnObj.manifest = typeof result === 'string' ? JSON.parse(result) : result;
17 }
18 return returnObj;
19}
20export async function fetchUpdateAsync({ eventListener } = {}) {
21 let subscription;
22 let result;
23 if (eventListener && typeof eventListener === 'function') {
24 subscription = addListener(eventListener);
25 }
26 try {
27 result = await ExponentUpdates.fetchUpdateAsync();
28 }
29 finally {
30 subscription && subscription.remove();
31 }
32 let returnObj = {
33 isNew: !!result,
34 };
35 if (result) {
36 returnObj.manifest = typeof result === 'string' ? JSON.parse(result) : result;
37 }
38 return returnObj;
39}
40let _emitter;
41function _getEmitter() {
42 if (!_emitter) {
43 _emitter = new EventEmitter();
44 DeviceEventEmitter.addListener('Exponent.nativeUpdatesEvent', _emitEvent);
45 }
46 return _emitter;
47}
48function _emitEvent(params) {
49 let newParams = params;
50 if (typeof params === 'string') {
51 newParams = JSON.parse(params);
52 }
53 if (newParams.manifestString) {
54 newParams.manifest = JSON.parse(newParams.manifestString);
55 delete newParams.manifestString;
56 }
57 if (!_emitter) {
58 throw new Error(`EventEmitter must be initialized to use from its listener`);
59 }
60 _emitter.emit('Exponent.updatesEvent', newParams);
61}
62export function addListener(listener) {
63 let emitter = _getEmitter();
64 return emitter.addListener('Exponent.updatesEvent', listener);
65}
66export const EventType = {
67 DOWNLOAD_STARTED: 'downloadStart',
68 DOWNLOAD_PROGRESS: 'downloadProgress',
69 DOWNLOAD_FINISHED: 'downloadFinished',
70 NO_UPDATE_AVAILABLE: 'noUpdateAvailable',
71 ERROR: 'error',
72};
73//# sourceMappingURL=Updates.js.map
\No newline at end of file