expo / config-plugins

Out-of-tree Expo config plugins for packages that haven't adopted the config plugin system yet.
428 stars 91 forks source link

feat: add react-native-permissions config plugin #126

Open Temzasse opened 1 year ago

Temzasse commented 1 year ago

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 Podfile for 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 prebuild with the plugin added to the list of plugins in app.config.js like this:

{
  "expo": {
    "plugins": [
      [
        "@config-plugins/react-native-permissions",
        { "pods": ["Camera", "Notifications"] }
      ]
    ]
  }
}

This is the output of that test:

# @generated begin react-native-permissions - expo prebuild (DO NOT MODIFY) sync-653ec5c60f912dacc52beb097ec7b8b5fce97ee1

  permissions_path = '../node_modules/react-native-permissions/ios'
  pod 'Permission-Camera', :path => "#{permissions_path}/Camera"
  pod 'Permission-Notifications', :path => "#{permissions_path}/Notifications"

# @generated end react-native-permissions

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 /apps folder for this plugin. However, I'm happy to add those if needed 🙂

EvanBacon commented 1 year ago

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.

gvanderclay commented 1 year ago

I think this PR is no longer necessary!

With the addition of react-native setup-ios-permissions in version 3.7.0 of react-native-permissions, the Podfile does not need to be modified. We have successfully setup our project using a managed workflow and react-native-permissions without a config plugin.