UNPKG

@sendbird/uikit-react-native

Version:

Sendbird UIKit for React Native: A feature-rich and customizable chat UI kit with messaging, channel management, and user authentication.

49 lines (48 loc) 1.64 kB
/* eslint-disable no-console */ import { NativeModules, UIManager } from 'react-native'; import { Logger } from '@sendbird/uikit-utils'; function checkLink(dmi, logLevel) { const nativeModule = (() => { if (dmi.isComponent) { return UIManager.getViewManagerConfig(dmi.nativeModuleNamespace); } else { return NativeModules[dmi.nativeModuleNamespace]; } })(); if (!nativeModule) { const message = `[UIKit] Cannot use native module, you should install and link ${dmi.packageName} (${dmi.url})`; if (logLevel === 'error') console.error(message); if (logLevel === 'warn') console.warn(message); } } const SBUDynamicModuleRegistry = { '@react-native-community/netinfo': { packageName: '@react-native-community/netinfo', nativeModuleNamespace: 'RNCNetInfo', url: 'https://github.com/react-native-netinfo/react-native-netinfo', getPackage(logLevel) { checkLink(this, logLevel); try { return require('@react-native-community/netinfo'); } catch (e) { return null; } } } }; const SBUDynamicModule = { register(mdi) { SBUDynamicModuleRegistry[mdi.nativeModuleNamespace] = mdi; }, getInfo(name) { return SBUDynamicModuleRegistry[name] ?? null; }, get(name) { let logLevel = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'error'; const dmi = this.getInfo(name); if (!dmi) Logger.warn(`${name} doesn't exist in the dynamic module`); return dmi === null || dmi === void 0 ? void 0 : dmi.getPackage(logLevel); } }; export default SBUDynamicModule; //# sourceMappingURL=dynamicModule.js.map