react-native-cn-richtext-editor
Version:
RichText Editor for React-Native
80 lines • 2.58 kB
JavaScript
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