diff --git a/plugin/__tests__/fixtures/buildGradleFiles.ts b/plugin/__tests__/fixtures/buildGradleFiles.ts index afc7901..71c0582 100644 --- a/plugin/__tests__/fixtures/buildGradleFiles.ts +++ b/plugin/__tests__/fixtures/buildGradleFiles.ts @@ -45,30 +45,6 @@ missingDimensionStrategy "store", "play" versionName "1.16.2" buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString()`; -const appBuildGradleWithAmazonStoreIAP = ` -apply plugin: "com.android.application" - -import com.android.build.OutputFile - -def reactNativeArchitectures() { - def value = project.getProperties().get("reactNativeArchitectures") - return value ? value.split(",") : ["armeabi-v7a", "x86", "x86_64", "arm64-v8a"] -} - -android { - ndkVersion rootProject.ext.ndkVersion - - compileSdkVersion rootProject.ext.compileSdkVersion - - defaultConfig { -missingDimensionStrategy "store", "amazon" - applicationId 'com.test.withIAP' - minSdkVersion rootProject.ext.minSdkVersion - targetSdkVersion rootProject.ext.targetSdkVersion - versionCode 34 - versionName "1.16.2" - buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString()`; - const appBuildGradleWithBothIAP = ` apply plugin: "com.android.application" @@ -90,11 +66,6 @@ productFlavors { dimension "appstore" missingDimensionStrategy "store", "play" } - - amazon { - dimension "appstore" - missingDimensionStrategy "store", "amazon" - } } defaultConfig { @@ -155,7 +126,6 @@ supportLibVersion = "28.0.0" }`; export { - appBuildGradleWithAmazonStoreIAP, appBuildGradleWithBothIAP, appBuildGradleWithoutIAP, appBuildGradleWithPlayStoreIAP, diff --git a/plugin/__tests__/withIAP-test.ts b/plugin/__tests__/withIAP-test.ts index af97321..07531fd 100644 --- a/plugin/__tests__/withIAP-test.ts +++ b/plugin/__tests__/withIAP-test.ts @@ -1,10 +1,6 @@ -import {modifyAppBuildGradle, modifyProjectBuildGradle} from '../src/withIAP'; +import {modifyProjectBuildGradle} from '../src/withIAP'; import { - appBuildGradleWithAmazonStoreIAP, - appBuildGradleWithBothIAP, - appBuildGradleWithoutIAP, - appBuildGradleWithPlayStoreIAP, projectBuildGradleWithIAP, projectBuildGradleWithoutIAP, } from './fixtures/buildGradleFiles'; @@ -25,32 +21,9 @@ describe('Configures Android native project correctly', () => { ); }); - it(`Add play store missingDimenstionStrategy to android/app/build.gradle if is not present`, () => { - expect( - modifyAppBuildGradle(appBuildGradleWithoutIAP, 'Play Store'), - ).toMatch(appBuildGradleWithPlayStoreIAP); - }); - - it(`Add amazon store missingDimenstionStrategy to android/app/build.gradle if is not present`, () => { - expect( - modifyAppBuildGradle(appBuildGradleWithoutIAP, 'Amazon AppStore'), - ).toMatch(appBuildGradleWithAmazonStoreIAP); - }); - - it(`Add play store and amazon payment providers to android/app/build.gradle if is not present`, () => { - expect(modifyAppBuildGradle(appBuildGradleWithoutIAP, 'both')).toMatch( - appBuildGradleWithBothIAP, - ); - }); it(`Doesn't modify android/build.gradle if supportLibVersion already configured`, () => { expect(modifyProjectBuildGradle(projectBuildGradleWithIAP)).toMatch( projectBuildGradleWithIAP, ); }); - - it(`Doesn't modify android/app/build.gradle if missingDimensionStrategy already configured`, () => { - expect( - modifyAppBuildGradle(appBuildGradleWithPlayStoreIAP, 'Play Store'), - ).toMatch(appBuildGradleWithPlayStoreIAP); - }); }); diff --git a/plugin/src/withIAP.ts b/plugin/src/withIAP.ts index 2d17de6..388fa7b 100644 --- a/plugin/src/withIAP.ts +++ b/plugin/src/withIAP.ts @@ -1,38 +1,11 @@ import { WarningAggregator, - withAppBuildGradle, withProjectBuildGradle, } from 'expo/config-plugins'; import {ConfigPlugin, createRunOncePlugin} from 'expo/config-plugins'; const pkg = require('../../package.json'); -type PaymentProvider = 'Amazon AppStore' | 'both' | 'Play Store'; - -const hasPaymentProviderProperValue = ( - paymentProvider: string, -): paymentProvider is PaymentProvider => { - return ['Amazon AppStore', 'Play Store', 'both'].includes(paymentProvider); -}; - -const linesToAdd: {[key in PaymentProvider]: string} = { - ['Amazon AppStore']: `missingDimensionStrategy "store", "amazon"`, - ['Play Store']: `missingDimensionStrategy "store", "play"`, - ['both']: `flavorDimensions "appstore" - -productFlavors { - googlePlay { - dimension "appstore" - missingDimensionStrategy "store", "play" - } - - amazon { - dimension "appstore" - missingDimensionStrategy "store", "amazon" - } -}`, -}; - const addToBuildGradle = ( newLine: string, anchor: RegExp | string, @@ -46,34 +19,6 @@ const addToBuildGradle = ( return lines.join('\n'); }; -export const modifyAppBuildGradle = ( - buildGradle: string, - paymentProvider: PaymentProvider, -) => { - if (paymentProvider === 'both') { - if (buildGradle.includes(`flavorDimensions "appstore"`)) { - return buildGradle; - } - return addToBuildGradle( - linesToAdd[paymentProvider], - 'defaultConfig', - -1, - buildGradle, - ); - } - - const missingDimensionStrategy = linesToAdd[paymentProvider]; - if (buildGradle.includes(missingDimensionStrategy)) { - return buildGradle; - } - return addToBuildGradle( - missingDimensionStrategy, - 'defaultConfig', - 1, - buildGradle, - ); -}; - export const modifyProjectBuildGradle = (buildGradle: string) => { const supportLibVersion = `supportLibVersion = "28.0.0"`; if (buildGradle.includes(supportLibVersion)) { @@ -82,20 +27,7 @@ export const modifyProjectBuildGradle = (buildGradle: string) => { return addToBuildGradle(supportLibVersion, 'ext', 1, buildGradle); }; -const withIAPAndroid: ConfigPlugin<{paymentProvider: PaymentProvider}> = ( - config, - {paymentProvider}, -) => { - // eslint-disable-next-line @typescript-eslint/no-shadow - config = withAppBuildGradle(config, (config) => { - config.modResults.contents = modifyAppBuildGradle( - config.modResults.contents, - paymentProvider, - ); - return config; - }); - - // eslint-disable-next-line @typescript-eslint/no-shadow +const withIAPAndroid: ConfigPlugin = (config) => { config = withProjectBuildGradle(config, (config) => { config.modResults.contents = modifyProjectBuildGradle( config.modResults.contents, @@ -105,27 +37,14 @@ const withIAPAndroid: ConfigPlugin<{paymentProvider: PaymentProvider}> = ( return config; }; -interface Props { - paymentProvider?: PaymentProvider; -} +interface Props {} const withIAP: ConfigPlugin = (config, props) => { - const paymentProvider = props?.paymentProvider ?? 'Play Store'; - - if (!hasPaymentProviderProperValue(paymentProvider)) { - WarningAggregator.addWarningAndroid( - 'expo-iap', - - `The payment provider '${paymentProvider}' is not supported. Please update your app.json file with one of the following supported values: 'Play Store', 'Amazon AppStore', or 'both'.`, - ); - return config; - } try { - config = withIAPAndroid(config, {paymentProvider}); + config = withIAPAndroid(config); } catch (error) { WarningAggregator.addWarningAndroid( 'expo-iap', - `There was a problem configuring expo-iap in your native Android project: ${error}`, ); }