UNPKG

rn-webim-chat

Version:

Webim chat wrapper for React-Native. Supports Android and iOS. Fixed issues for native platforms build that are present in the official package.

153 lines 5.98 kB
import { NativeEventEmitter, NativeModules, Platform } from 'react-native'; import { WebimEvents } from './types'; import { webimErrorHandler, WebimSubscription } from './utils'; const LINKING_ERROR = `The package 'rn-webim-chat' doesn't seem to be linked. Make sure: \n\n` + Platform.select({ ios: "- You have run 'pod install'\n", default: '' }) + '- You rebuilt the app after installing the package\n' + '- You are not using Expo Go\n'; const RnWebimChat = NativeModules.RnWebimChat ? NativeModules.RnWebimChat : new Proxy({}, { get() { throw new Error(LINKING_ERROR); } }); const emitter = new NativeEventEmitter(RnWebimChat); const DEFAULT_MESSAGES_LIMIT = 100; export class RNWebim { static initSession(params) { return RnWebimChat.initSession(params).catch(webimErrorHandler).then(() => { return; }); } static resumeSession() { return RnWebimChat.resumeSession().catch(webimErrorHandler).then(() => { return; }); } static pauseSession() { return RnWebimChat.pauseSession(); } static destroySession() { let clearData = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; return RnWebimChat.destroySession(clearData).catch(webimErrorHandler).then(() => { return; }); } static getLastMessages() { let limit = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : DEFAULT_MESSAGES_LIMIT; return RnWebimChat.getLastMessages(limit).catch(webimErrorHandler).then(messages => { return messages || []; }); } static getNextMessages() { let limit = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : DEFAULT_MESSAGES_LIMIT; return RnWebimChat.getNextMessages(limit).catch(webimErrorHandler).then(messages => { return messages || []; }); } static getAllMessages() { return RnWebimChat.getAllMessages().catch(webimErrorHandler).then(messages => { return messages || []; }); } static send(message) { return RnWebimChat.send(message).catch(webimErrorHandler).then(id => { return id; }); } static readMessages() { return RnWebimChat.readMessages().catch(webimErrorHandler).then(() => { return; }); } static rateOperator(rate) { return RnWebimChat.rateOperator(rate).catch(webimErrorHandler).then(() => { return; }); } static getCurrentOperator() { return RnWebimChat.getCurrentOperator().catch(webimErrorHandler).then(result => { return result; }); } static tryAttachFile() { return new Promise((resolve, reject) => { RnWebimChat.tryAttachFile(error => reject(webimErrorHandler(error, false)), result => resolve(result)); }); } static sendFile(uri, name, mime, extension) { return new Promise((resolve, reject) => RnWebimChat.sendFile(uri, name, mime, extension, error => reject(webimErrorHandler(error, false)), result => resolve(result))); } static tryAttachAndSendFile() { return new Promise((resolve, reject) => { RnWebimChat.tryAttachFile(error => reject(webimErrorHandler(error, false)), async file => { const { uri, name, mime, extension } = file; try { const result = await RNWebim.sendFile(uri, name, mime, extension); resolve(result); } catch (e) { reject(webimErrorHandler(e, false)); } }); }); } static addTypingListener(listener) { const subscription = emitter.addListener(WebimEvents.TYPING, listener); return new WebimSubscription(() => RNWebim.removeListener(subscription)); } static addFileUploadingListener(listener) { const subscription = emitter.addListener(WebimEvents.FILE_UPLOADING_PROGRESS, listener); return new WebimSubscription(() => RNWebim.removeListener(subscription)); } static addUnreadCountListener(listener) { const subscription = emitter.addListener(WebimEvents.UNREAD_COUNTER, listener); return new WebimSubscription(() => RNWebim.removeListener(subscription)); } static addNewMessageListener(listener) { const subscription = emitter.addListener(WebimEvents.NEW_MESSAGE, listener); return new WebimSubscription(() => RNWebim.removeListener(subscription)); } static addRemoveMessageListener(listener) { const subscription = emitter.addListener(WebimEvents.REMOVE_MESSAGE, listener); return new WebimSubscription(() => RNWebim.removeListener(subscription)); } static addEditMessageListener(listener) { const subscription = emitter.addListener(WebimEvents.EDIT_MESSAGE, listener); return new WebimSubscription(() => RNWebim.removeListener(subscription)); } static addDialogClearedListener(listener) { const subscription = emitter.addListener(WebimEvents.CLEAR_DIALOG, listener); return new WebimSubscription(() => RNWebim.removeListener(subscription)); } static addTokenUpdatedListener(listener) { const subscription = emitter.addListener(WebimEvents.TOKEN_UPDATED, listener); return new WebimSubscription(() => RNWebim.removeListener(subscription)); } static addErrorListener(listener) { const subscription = emitter.addListener(WebimEvents.ERROR, listener); return new WebimSubscription(() => RNWebim.removeListener(subscription)); } static addSateListener(listener) { const subscription = emitter.addListener(WebimEvents.STATE, listener); return new WebimSubscription(() => RNWebim.removeListener(subscription)); } static addListener(event, listener) { const subscription = emitter.addListener(event, listener); return new WebimSubscription(() => RNWebim.removeListener(subscription)); } static removeListener(listener) { emitter.removeSubscription(listener); } static removeAllListeners(event) { emitter.removeAllListeners(event); } } export * from './types'; export * from './utils'; export * from './webimNativeError'; export default RNWebim; //# sourceMappingURL=index.js.map