UNPKG

react-native-cn-richtext-editor

Version:
80 lines 2.58 kB
import { UnavailabilityError } from '@unimodules/core'; import { EventEmitter } from 'fbemitter'; import DeviceEventEmitter from 'react-native/Libraries/EventEmitter/RCTDeviceEventEmitter'; import ExponentUpdates from './ExponentUpdates'; export async function reload() { await ExponentUpdates.reload(); } export async function reloadFromCache() { await ExponentUpdates.reloadFromCache(); } export async function checkForUpdateAsync() { if (!ExponentUpdates.checkForUpdateAsync) { throw new UnavailabilityError('Updates', 'checkForUpdateAsync'); } const result = await ExponentUpdates.checkForUpdateAsync(); let returnObj = { isAvailable: !!result, }; if (result) { returnObj.manifest = typeof result === 'string' ? JSON.parse(result) : result; } return returnObj; } export async function fetchUpdateAsync({ eventListener } = {}) { if (!ExponentUpdates.fetchUpdateAsync) { throw new UnavailabilityError('Updates', 'fetchUpdateAsync'); } let subscription; let result; if (eventListener && typeof eventListener === 'function') { subscription = addListener(eventListener); } try { result = await ExponentUpdates.fetchUpdateAsync(); } finally { subscription && subscription.remove(); } let returnObj = { isNew: !!result, }; if (result) { returnObj.manifest = typeof result === 'string' ? JSON.parse(result) : result; } return returnObj; } let _emitter; function _getEmitter() { if (!_emitter) { _emitter = new EventEmitter(); DeviceEventEmitter.addListener('Exponent.nativeUpdatesEvent', _emitEvent); } return _emitter; } function _emitEvent(params) { let newParams = params; if (typeof params === 'string') { newParams = JSON.parse(params); } if (newParams.manifestString) { newParams.manifest = JSON.parse(newParams.manifestString); delete newParams.manifestString; } if (!_emitter) { throw new Error(`EventEmitter must be initialized to use from its listener`); } _emitter.emit('Exponent.updatesEvent', newParams); } export function addListener(listener) { let emitter = _getEmitter(); return emitter.addListener('Exponent.updatesEvent', listener); } export const EventType = { DOWNLOAD_STARTED: 'downloadStart', DOWNLOAD_PROGRESS: 'downloadProgress', DOWNLOAD_FINISHED: 'downloadFinished', NO_UPDATE_AVAILABLE: 'noUpdateAvailable', ERROR: 'error', }; //# sourceMappingURL=Updates.js.map