UNPKG

react-native-share

Version:
106 lines 4.19 kB
import { Platform } from 'react-native'; import NativeRNShare from '../codegenSpec/NativeRNShare'; import Overlay from './components/Overlay'; import Sheet from './components/Sheet'; import Button from './components/Button'; import ShareSheet from './components/ShareSheet'; import requireAndAskPermissions from './helpers/requireAndAskPermissions'; import { Social, ShareAsset } from './types'; const RNShare = { Button, ShareSheet, Overlay, Sheet, Social: { FACEBOOK: NativeRNShare.getConstants().FACEBOOK || Social.Facebook, FACEBOOK_STORIES: NativeRNShare.getConstants().FACEBOOKSTORIES || Social.FacebookStories, PAGESMANAGER: NativeRNShare.getConstants().PAGESMANAGER || Social.Pagesmanager, TWITTER: NativeRNShare.getConstants().TWITTER || Social.Twitter, WHATSAPP: NativeRNShare.getConstants().WHATSAPP || Social.Whatsapp, WHATSAPPBUSINESS: NativeRNShare.getConstants().WHATSAPPBUSINESS || Social.Whatsappbusiness, INSTAGRAM: NativeRNShare.getConstants().INSTAGRAM || Social.Instagram, INSTAGRAM_STORIES: NativeRNShare.getConstants().INSTAGRAMSTORIES || Social.InstagramStories, GOOGLEPLUS: NativeRNShare.getConstants().GOOGLEPLUS || Social.Googleplus, EMAIL: NativeRNShare.getConstants().EMAIL || Social.Email, PINTEREST: NativeRNShare.getConstants().PINTEREST || Social.Pinterest, LINKEDIN: NativeRNShare.getConstants().LINKEDIN || Social.Linkedin, SMS: NativeRNShare.getConstants().SMS || Social.Sms, TELEGRAM: NativeRNShare.getConstants().TELEGRAM || Social.Telegram, MESSENGER: NativeRNShare.getConstants().MESSENGER || Social.Messenger, SNAPCHAT: NativeRNShare.getConstants().SNAPCHAT || Social.Snapchat, VIBER: NativeRNShare.getConstants().VIBER || Social.Viber }, open(options) { return new Promise((resolve, reject) => { requireAndAskPermissions(options).then(() => { if (Platform.OS === 'ios' && options.url && !options.urls) { // Backward compatibility with { Share } from react-native const url = options.url; delete options.url; options.urls = [url]; if (options.filename && !options.filenames) { options.filenames = [options.filename]; } } NativeRNShare.open(options).then(ret => { if (ret.success) { return resolve({ success: ret.success, message: ret.message }); } else if (options.failOnCancel === false) { return resolve({ dismissedAction: true, success: ret.success, message: ret.message }); } else { reject(new Error('User did not share')); } }); }).catch(e => reject(e)); }); }, shareSingle(options) { if (Platform.OS === 'ios' || Platform.OS === 'android') { return new Promise((resolve, reject) => { requireAndAskPermissions(options).then(() => { if (options.url) { options.urls = [options.url]; } if (options.social === RNShare.Social.INSTAGRAM_STORIES && !options.appId) { return reject({ success: false, message: 'Instagram Story share requires an appId based on Meta policy.' }); } NativeRNShare.shareSingle(options).then(ret => { return resolve({ success: Boolean(ret.success), message: ret.message }); }).catch(e => reject(e)); }).catch(e => reject(e)); }); } else { throw new Error('Not implemented'); } }, isPackageInstalled(packageName) { if (Platform.OS === 'android') { return new Promise((resolve, reject) => { NativeRNShare.isPackageInstalled(packageName).then(isInstalled => { return resolve({ isInstalled, message: 'Package is Installed' }); }).catch(e => reject(e)); }); } else { throw new Error('Not implemented'); } } }; export { Overlay, Sheet, Button, ShareSheet, ShareAsset, Social }; export default RNShare; //# sourceMappingURL=index.js.map