feat: add react-native-permissions config plugin#126
feat: add react-native-permissions config plugin#126
Conversation
| ]); | ||
| }; | ||
|
|
||
| function getPodfileContent(pods: string[]) { |
There was a problem hiding this comment.
Would be cool if this was a for loop iterating some array in Podfile properties, similar to what we do in ffmpeg.
|
|
||
| function getPodfileContent(pods: string[]) { | ||
| return ` | ||
| permissions_path = '../node_modules/react-native-permissions/ios' |
There was a problem hiding this comment.
This should use Node module resolution to support monorepos, ex.
Basically you use Node.js to search for react-native-permissions/package.json then you get a string like ../node_modules/react-native-permissions/package.json which you can then append ../ios to. This will allow the module to live anywhere and keep the package working in most cases.
|
This is a pretty complicated config plugin and the current state won't work in monorepos, so I recommend adding unit tests and an example app. |
|
I think this PR is no longer necessary! With the addition of |
Why
While Expo provides ways to request various permissions via different Expo modules there is a need for a generic permission library. The most popular permission library in React Native is react-native-permissions which is currently not compatible with Expo. This plugin allows devs to configure the necessary pods inside the
Podfilefor react-native-permissions library as part of the prebuild process.How
This plugin was built by taking a look at the other Expo Config Plugins in this repo and copying their implementation.
Test Plan
This plugin was first implemented and tested outside of this repo by running
expo prebuildwith the plugin added to the list of plugins inapp.config.jslike this:{ "expo": { "plugins": [ [ "@config-plugins/react-native-permissions", { "pods": ["Camera", "Notifications"] } ] ] } }This is the output of that test:
Since the plugin is so simple there is probably no need to add further tests for this plugin or to add an example app inside
/appsfolder for this plugin. However, I'm happy to add those if needed 🙂