enesser / vCards-js

Create vCards to import contacts into Outlook, iOS, Mac OS, and Android devices from your website or application.
MIT License
419 stars 154 forks source link

Add React Native Compatibility #22

Open sheparddw opened 7 years ago

sheparddw commented 7 years ago

Some developers are wanting to use this for React Native: https://stackoverflow.com/questions/38644405/react-native-using-a-javascript-module-that-relies-on-node-js-core-module/39236621#39236621 I created a separate branch with React Native compatibility from my fork of this repo. You can either create a new branch with my changes or update the original repo to check the environment and load in react-native-fs if react native: https://github.com/idxbroker/vCards-js/tree/react-native

enesser commented 7 years ago

This is really cool.

Thanks for your work.

I think I might mention your fork in the README for now, and then figure out if making this component React Native-friendly or having a separate repository is best. I'd appreciate everyone else's feedback on what they want to see.

sheparddw commented 7 years ago

No problem. Sounds good. Thanks.

duwerq commented 7 years ago

THANK YOU, that was my stackoverflow question you listed as a reference to this issue. Seriously, you the man!!!

sheparddw commented 7 years ago

👍 Thanks.

RUIFERNANDE5 commented 7 years ago

@sheparddw I can't find your branch on npm? Would be great if u could publish it again since u renamed it 8 months ago I think. Thanks for your work 👍

sheparddw commented 7 years ago

@RUIFERNANDE5 It is not currently on npm, but you are welcome to use it from the github repository in the meantime: https://github.com/idxbroker/vCards-js/tree/react-native You are welcome. Thanks for the feedback. :)

RUIFERNANDE5 commented 7 years ago

That's what I am doing so far. Just one thing, how can I get the file path or even download the file after using saveToFile method? In the last couple of hours I've been digging RNFS but couldn't find anything related to download the written file.

TLDR; I mean, I want to generate the VCard and download it right after.

Thank you

sheparddw commented 7 years ago

When you are using the following from the readme to save the file,

//save to file
const documentPath = rnfs.DocumentDirectoryPath;
contact.saveToFile(`${documentPath}/eric-nesser.vcf`);

You can keep the path as a variable:

const vcfFilePath = `${documentPath}/eric-nesser.vcf`;

Then you can use that vcfFilePath to save it elsewhere.

For example, to save to iCloud for iOS, you could use a library such as react native icloud: https://www.npmjs.com/package/react-native-icloud Then using that library, save the file to iCloud using its

Documents.moveFileToICloud(vcfFilePath, (err,resultURL)=>{}))

method which uses the filepath and can copy or move it to iCloud. See the library's documentation you decide to use for more info on the exact implementation of copying/moving the file.

If you do not wish to use iCloud but rather bring up the action sheet for Airdrop or so on, you can use ActionSheetiOS: https://facebook.github.io/react-native/docs/actionsheetios.html or an android equivalent library.

Hope that helps.