google-pay / react-native-make-payment

React Native library for making native payments
Apache License 2.0
17 stars 5 forks source link

Expo plugin to enable `com.google.android.gms.wallet.api.enabled` #1

Open whatyoubendoing opened 1 year ago

whatyoubendoing commented 1 year ago
const { AndroidConfig, withAndroidManifest } = require("@expo/config-plugins");

const { addMetaDataItemToMainApplication, getMainApplicationOrThrow } =
  AndroidConfig.Manifest;

/**
 * Adds the following to AndroidManifest.xml:
 *
 * <application>
 *   ...
 *   <meta-data
 *     android:name="com.google.android.gms.wallet.api.enabled"
 *     android:value="true|false" />
 * </application>
 */
function setGooglePayMetaData(modResults) {
  const GOOGLE_PAY_META_NAME = "com.google.android.gms.wallet.api.enabled";
  const mainApplication = getMainApplicationOrThrow(modResults);

  addMetaDataItemToMainApplication(
    mainApplication,
    GOOGLE_PAY_META_NAME,
    "true",
  );

  return modResults;
}

function withGooglePayAndroid(expoConfig) {
  return withAndroidManifest(expoConfig, (config) => {
    config.modResults = setGooglePayMetaData(config.modResults);
    return config;
  });
}

module.exports = function withGooglePay(config, props) {
  config = withGooglePayAndroid(config, props);
  return config;
};
stephenmcd commented 11 months ago

Thanks Ben, would you like to add this as a pull request? Happy to merge.