diff --git a/packages/react-native-payments/.babelrc b/.babelrc similarity index 100% rename from packages/react-native-payments/.babelrc rename to .babelrc diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 00000000..7c933f6b --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,65 @@ +const IGNORE = 0; +const WARN = 1; +const ERROR = 2; + +module.exports = { + "extends": "airbnb-base", + "parser": "babel-eslint", + "plugins": [ + "flowtype" + ], + "rules": { + "import/no-named-as-default-member": IGNORE, + "import/no-named-as-default": IGNORE, + "no-tabs": IGNORE, + "camelcase": IGNORE, + "no-console": IGNORE, + "no-param-reassign": IGNORE, + "import/prefer-default-export": IGNORE, + "consistent-return": IGNORE, + "max-len": IGNORE, + "no-continue": IGNORE, + 'no-case-declarations': IGNORE, + "indent": [ERROR, 2, { "SwitchCase": 1, "VariableDeclarator": 1, "ignoredNodes": ["TemplateLiteral > *"] }], + "class-methods-use-this": IGNORE, + "no-restricted-syntax": IGNORE, + "prefer-template": IGNORE, + "no-plusplus": IGNORE, + "default-case": IGNORE, + "no-useless-constructor": IGNORE, + "jsx-a11y/accessible-emoji": IGNORE, + "no-use-before-define": IGNORE, + "curly": IGNORE, + "no-unused-expressions": [ERROR, { "allowShortCircuit": true }], + "prefer-destructuring": IGNORE, + "no-await-in-loop": IGNORE, + "global-require": IGNORE, + "func-names": IGNORE, + "linebreak-style": IGNORE, + "no-empty-function": IGNORE, + "no-labels": IGNORE, + "func-names": IGNORE, + "guard-for-in": IGNORE, + "radix": IGNORE, + "import/no-dynamic-require": IGNORE, + "quote-props": IGNORE, + "no-shadow": IGNORE, + "no-extra-label": IGNORE, + "arrow-parens": IGNORE, + "quotes": IGNORE, + "prefer-rest-params": IGNORE, + "no-nested-ternary": IGNORE, + "newline-per-chained-call": IGNORE, + "no-restricted-globals": IGNORE, + "dot-notation": IGNORE, + "arrow-body-style": IGNORE, + "no-loop-func": IGNORE, + "no-useless-escape": IGNORE, + "no-trailing-spaces": IGNORE, + "import/order": IGNORE, + "no-lonely-if": IGNORE, + }, + "env": { + "jest": true + }, +}; \ No newline at end of file diff --git a/packages/react-native-payments/.flowconfig b/.flowconfig similarity index 100% rename from packages/react-native-payments/.flowconfig rename to .flowconfig diff --git a/.gitignore b/.gitignore index be75b6e8..e75012e4 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,49 @@ +# System +# +.DS_Store + +# Xcode +# +build/ +*.pbxuser +!default.pbxuser +*.mode1v3 +!default.mode1v3 +*.mode2v3 +!default.mode2v3 +*.perspectivev3 +!default.perspectivev3 +xcuserdata +*.xccheckout +*.moved-aside +DerivedData +*.hmap +*.ipa +*.xcuserstate + +# Android +**/android/**/.idea +**/android/**/*.iml +**/android/**/gradlew* +**/android/**/*.properties +**/android/**/.gradle +**/android/**/gradle +**/android/**/.settings +**/android/**/.project + +# npm +# node_modules/ npm-debug.log lerna-debug.log + +# editors +# +jsconfig.json +.vscode/* +.idea +*.iml + +# project +# +coverage diff --git a/packages/react-native-payments/.npmignore b/.npmignore similarity index 100% rename from packages/react-native-payments/.npmignore rename to .npmignore diff --git a/.travis.yml b/.travis.yml index def138b2..bd17f9fc 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,4 @@ language: node_js node_js: - "node" -env: - - TEST_DIR=packages/react-native-payments -script: cd $TEST_DIR && yarn && yarn test -- --verbose --coverage \ No newline at end of file +script: npm test -- --verbose --coverage \ No newline at end of file diff --git a/README.md b/README.md index f5f330e5..0e9a5484 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,166 @@ +# react-native-payments + +[![Codeship Status for freeman-industries/react-native-payments](https://app.codeship.com/projects/d6d17e65-23f0-4154-b7ce-33ce59471b08/status?branch=master)](https://app.codeship.com/projects/418096) + +# 🚨 Important notice 🚨 + +This project is no longer maintained. The good news is that the landscape of payments on React Native has massively changed in the last few years. There is still room for this repo to evolve which I'll detail below, but first I would like to direct your attention to well-funded and well-maintained alternatives that will give you fewer grey hairs. + +## Stripe +- Stripe has released an official React Native SDK supporting Apple Pay that has a huge team of paid engineers behind it. +- It has also been included in the [Expo managed environment](https://docs.expo.dev/versions/latest/sdk/stripe/), which means it works on Expo Go. Huge achievement. +- For a bug free experience and easy integration I strongly recommend you use [@stripe/stripe-react-native](https://github.com/stripe/stripe-react-native) on any new projects. +- More information and discussion in this issue: https://github.com/naoufal/react-native-payments/issues/335 + +## Community forks and alternatives + +### Braintree +- At time of writing, there an actively maintained Braintree RN SDK. +- Check it out: https://github.com/ekreative/react-native-braintree +- More information and discussion in this issue: https://github.com/naoufal/react-native-payments/issues/405 + +### Other forks +- Most notably there is a long running active fork of this library by Appfolio. +- Check it out: https://github.com/appfolio/react-native-payments +- Other projects and discussion in this issue: https://github.com/naoufal/react-native-payments/issues/406 + +## Future of this library + +The scope of this library should probably change to: + +- Support networks and products unavailable within Stripe +- Stick to the principles of the PaymentRequest open interface + +If you want to own that direction, please get in touch. + +- [@naoufal](https://twitter.com/naoufal) (project owner) on Twitter (sometimes difficult to get hold of) +- Me, Nabs (afk maintainer) on [my LinkedIn](https://linkedin.com/in/nabilfreeman) (I also have Twitter [@NabsFreeman](https://twitter.com/NabsFreeman), but I think Elon shadowbanned me during the whole jet thing) + +Naoufal is the only administrator and he needs to appoint authors and maintainers. I can commit and merge PRs to help any new maintainer get started. + +Nabs + +On to the old README... + +# Introduction + +Welcome to the best and most comprehensive library for integrating payments like Apple Pay and Google Pay into your React Native app. + +This library is designed to be fully compatible with React Native 0.61 and onwards. + +
+ + +
+ +# Installation + +``` +npm install --save react-native-payments +``` + +You'll need to autolink on each platform: + +### Android + +``` +npx jetify +``` + +### iOS + +``` +cd ios +pod install +``` + +# Guides + +## Example projects + +- [iOS](https://github.com/freeman-industries/react-native-payments-example-ios) + +## Live demo + +For a step by step guide, check out this talk by @naoufal. + +https://www.youtube.com/watch?v=XrmUuir9OHc&t=652 + +## API Spec + +Down below we have a detailed specification for PaymentRequest and instructions for configuring Apple Pay and Google Pay, which is hopefully enough to get you started. + +We also have some legacy example projects in the `examples` directory that will be rewritten soon and linked above. + +Bear with us while we organize things a bit. + +# Roadmap + +## Completed + +- Apple Pay Stripe + +## Completed, untested + +- Apple Pay Braintree +- Google Pay (Stripe, Braintree) +- Web + +## In progress + +- Stripe: Payment Intents (for SCA) + +## Planned + +- Tutorial docs + +Naoufal, the original author of this library, has done a lot of the hard work integrating iOS, Android, Web platforms and Stripe and Braintree gateways. + +The library has fallen out of regular maintenance and we're working to test and update all parts to be compatible for RN in the 2020s. + +If you're feeling brave give the untested platforms a try and let us know how it worked. + +# Contributors + +Many people have contributed to the development of `react-native-payments` over time. The people below are currently available to help. + +- [@nabilfreeman](https://github.com/nabilfreeman) ⚙️ ✏️ +- [@runticle](https://github.com/runticle) ✏️ + +--- +Merge PRs: ⚙️ | Review issues: ✏️ + +## Join us! + +All contributions, big or small are welcomed. + +For large PRs, please open an issue and have a discussion with us first before you dive in. + +Our plan for this library is for it to be useful to all React Native developers so we want to architect it carefully. + +# In the wild + +These amazing people use `react-native-payments` in their projects. + +- [LeSalon (@lesalonapp)](https://github.com/lesalonapp) +- [Truphone (My Truphone App)](https://truphone.com/consumer/esim-for-smartphone) + +To add your organization, open a PR updating this list. + +--- + +🚧 + +🚧 + +🚧 + +🚧 + +🚧 + +--- + > This project is currently in __beta and APIs are subject to change.__ # React Native Payments @@ -15,17 +178,14 @@ __Features__ - __Cross-platform__. Share payments code between your iOS, Android, and web apps. - __Add-ons__. Easily enable support for Stripe or Braintree via add-ons. -
- - -
- --- ## Table of Contents - [Demo](#demo) - [Installation](#installation) - [Usage](#usage) +- [Testing Payments](#testing-payments) +- [Apple Pay button](#apple-pay-button) - [Add-ons](#add-ons) - [API](#api) - [Resources](#resources) @@ -79,7 +239,7 @@ Apple has a documentation on how to do this in their _[Configuring your Environm 1. Add Android Pay and Google Play Services to your dependencies 1. Enable Android Pay in your Manifest -Google has documentation on how to do this in their _[Setup Android Pay](https://developers.google.com/android-pay/setup)_ guide. +Google has documentation on how to do this in their _[Setup Android Pay](https://developers.google.com/pay/api/android/guides/setup)_ guide. ### Importing the Library Once Apple Pay/Android Pay is enabled in your app, jump into your app's entrypoint and make the `PaymentRequest` globally available to your app. @@ -326,20 +486,22 @@ paymentRequest.show() There are two ways to process Apple Pay/Android Pay payments -- on your server or using a payment processor. #### Processing Payments on Your Server -If you're equiped to process Apple Pay/Android Pay payments on your server, all you have to do is send the Payment Response data to your server. +If you're equipped to process Apple Pay/Android Pay payments on your server, all you have to do is send the Payment Response data to your server. + +> ⚠️ **Note:** When running Apple Pay on simulator, `paymentData` equals to `null`. ```es6 import { NativeModules } from 'react-native'; paymentRequest.show() .then(paymentResponse => { - const { transactionIdentifier, serializedPaymentData } = paymentResponse.details; + const { transactionIdentifier, paymentData } = paymentResponse.details; return fetch('...', { method: 'POST', body: { transactionIdentifier, - serializedPaymentData + paymentData } }) .then(res => res.json()) @@ -438,6 +600,20 @@ paymentResponse.complete('success'); // Alternatively, you can call it with `fai 🚨 _Note: On Android, there is no need to call `paymentResponse.complete` -- the PaymentRequest dismisses itself._ +## Testing Payments + +### Apple Pay + +The sandbox environment is a great way to test offline implementation of Apple Pay for apps, websites, and point of sale systems. Apple offers [detailed guide](https://developer.apple.com/support/apple-pay-sandbox/) for setting up sandbox environment. +> ⚠️ **Note:** It is also important to test Apple Pay in your production environment. Real cards must be used in the production environment. Test cards will not work. +> +> ⚠️ **Note:** There are known differences when running Apple Pay on simulator and real device. Make sure you test Apple Pay on real device before going into production. + +## Apple Pay Button + +Provides a button that is used either to trigger payments through Apple Pay or to prompt the user to set up a card. +[Detailed docs and examples](docs/ApplePayButton.md) + ## Add-ons Here's a list of Payment Processors that you can enable via add-ons: - [Stripe](https://github.com/naoufal/react-native-payments/blob/master/packages/react-native-payments-addon-stripe) @@ -446,10 +622,10 @@ Here's a list of Payment Processors that you can enable via add-ons: 🚨 _Note: On Android, Payment Processors are enabled by default._ ## API -### [NativePayments](https://github.com/naoufal/react-native-payments/blob/master/packages/react-native-payments/docs/NativePayments.md) -### [PaymentRequest](https://github.com/naoufal/react-native-payments/blob/master/packages/react-native-payments/docs/PaymentRequest.md) -### [PaymentRequestUpdateEvent](https://github.com/naoufal/react-native-payments/blob/master/packages/react-native-payments/docs/PaymentRequestUpdateEvent.md) -### [PaymentResponse](https://github.com/naoufal/react-native-payments/blob/master/packages/react-native-payments/docs/PaymentResponse.md) +### [NativePayments](docs/NativePayments.md) +### [PaymentRequest](docs/PaymentRequest.md) +### [PaymentRequestUpdateEvent](docs/PaymentRequestUpdateEvent.md) +### [PaymentResponse](docs/PaymentResponse.md) ## Resources ### Payment Request @@ -466,9 +642,9 @@ Here's a list of Payment Processors that you can enable via add-ons: - [Payment Token Format Reference](https://developer.apple.com/library/content/documentation/PassKit/Reference/PaymentTokenJSON/PaymentTokenJSON.html#//apple_ref/doc/uid/TP40014929) ### Android Pay -- [Setup Android Pay](https://developers.google.com/android-pay/setup) -- [User Flows](https://developers.google.com/android-pay/payment-flows) -- [Best Practices](https://developers.google.com/android-pay/best-practices) +- [Setup Android Pay](https://developers.google.com/pay/api/android/guides/setup) +- [Tutorial](https://developers.google.com/pay/api/android/guides/tutorial) +- [Brand Guidelines](https://developers.google.com/pay/api/android/guides/brand-guidelines) - [Gateway Token Approach](https://developers.google.com/web/fundamentals/discovery-and-monetization/payment-request/android-pay#gateway_token_approach) - [Network Token Approach](https://developers.google.com/web/fundamentals/discovery-and-monetization/payment-request/android-pay#network_token_approach) diff --git a/android/build.gradle b/android/build.gradle new file mode 100644 index 00000000..0d066bd1 --- /dev/null +++ b/android/build.gradle @@ -0,0 +1,27 @@ +apply plugin: 'com.android.library' + +android { + compileSdkVersion 28 + buildToolsVersion "28.0.3" + + defaultConfig { + minSdkVersion 21 + targetSdkVersion 28 + versionCode 1 + versionName "1.0" + ndk { + abiFilters "armeabi-v7a", "x86" + } + } + lintOptions { + warning 'InvalidPackage' + } +} + +dependencies { + implementation 'com.facebook.react:react-native:+' + implementation 'com.google.android.gms:play-services-base:17.0.0' + implementation 'com.google.android.gms:play-services-identity:17.0.0' + implementation 'com.google.android.gms:play-services-wallet:17.0.0' + implementation 'com.android.support:support-v4:23.0.1' +} diff --git a/packages/react-native-payments/android/src/main/AndroidManifest.xml b/android/src/main/AndroidManifest.xml similarity index 100% rename from packages/react-native-payments/android/src/main/AndroidManifest.xml rename to android/src/main/AndroidManifest.xml diff --git a/packages/react-native-payments/android/src/main/java/com/reactnativepayments/ReactNativePaymentsModule.java b/android/src/main/java/com/reactnativepayments/ReactNativePaymentsModule.java similarity index 100% rename from packages/react-native-payments/android/src/main/java/com/reactnativepayments/ReactNativePaymentsModule.java rename to android/src/main/java/com/reactnativepayments/ReactNativePaymentsModule.java diff --git a/packages/react-native-payments/android/src/main/java/com/reactnativepayments/ReactNativePaymentsPackage.java b/android/src/main/java/com/reactnativepayments/ReactNativePaymentsPackage.java similarity index 100% rename from packages/react-native-payments/android/src/main/java/com/reactnativepayments/ReactNativePaymentsPackage.java rename to android/src/main/java/com/reactnativepayments/ReactNativePaymentsPackage.java diff --git a/docs/ApplePayButton.md b/docs/ApplePayButton.md new file mode 100644 index 00000000..d909b17d --- /dev/null +++ b/docs/ApplePayButton.md @@ -0,0 +1,57 @@ +# Apple Pay button + +Provides a button that is used either to trigger payments through Apple Pay or to prompt the user to set up a card. + +`ApplePayButton` uses native API provided by Apple. Due to this fact, button meets User Interface guidelines required by Apple in review process. Make sure you consult [Human Interface Guidelines](https://developer.apple.com/ios/human-interface-guidelines/technologies/apple-pay/) prior to submitting app to App Store. + +## Styling + +### Button type + +Type dictates button's call to action word and a message. Each option +includes the Apple Pay logo alone and the call to action word (based on button type) with +message along with the logo. The API will provide a localization of the action word with +message based on the user’s language settings. Do +not create your own localized payment button. + +![Apple pay button - types](https://user-images.githubusercontent.com/829963/40891710-daae734a-678a-11e8-935f-481199115068.png) + + +### Button style + +In addition to button's type, you can set button's visual appearance. For iOS and web, button artwork is provided in black, white, and white with an outline rule. + +![Apple pay button - styles](https://user-images.githubusercontent.com/829963/40891711-daca8ff8-678a-11e8-89f2-26a0c3dcf9ed.png) + +## Props +| Prop name | required | Type | Default Value | +|--------------|----------|-------------|---------------| +| type | yes | ButtonType | | +| style | yes | ButtonStyle | | +| onPress | yes | Function | | +| width | no | number | | +| height | no | number | 44 | +| cornerRadius | no | number | 4 | + +## Types +```javascript +type ButtonType = + // A button with the Apple Pay logo only. + | 'plain' + // A button with the text “Buy with” and the Apple Pay logo. + | 'buy' + // A button prompting the user to set up a card. + | 'setUp' + // A button with the text “Pay with” and the Apple Pay logo. + | 'inStore' + // A button with the text "Donate with" and the Apple Pay logo. + | 'donate'; + +type ButtonStyle = + // A white button with black lettering (shown here against a gray background to ensure visibility). + | 'white' + // A white button with black lettering and a black outline. + | 'whiteOutline' + // A black button with white lettering. + | 'black'; +``` \ No newline at end of file diff --git a/packages/react-native-payments/docs/NativePayments.md b/docs/NativePayments.md similarity index 88% rename from packages/react-native-payments/docs/NativePayments.md rename to docs/NativePayments.md index 4b6397b0..31bf5b09 100644 --- a/packages/react-native-payments/docs/NativePayments.md +++ b/docs/NativePayments.md @@ -133,6 +133,32 @@ NativePayments.canMakePayments(); --- +### canMakePaymentsUsingNetworks() +**(IOS only)** Returns if user has available cards at Apple Pay that matches passed networks. + +__Arguments__ +- usingNetworks - `Array` + + +
+ +Example + + +```es6 +NativePayments + .canMakePaymentsUsingNetworks(['Visa', 'AmEx', 'MasterCard']) + .then(canMakePayments => { + if (canMakePayments) { + // do some stuff + } + }); +``` + +
+ +--- + ### show() Displays Apple Pay/Android Pay to the user. diff --git a/packages/react-native-payments/docs/PaymentRequest.md b/docs/PaymentRequest.md similarity index 86% rename from packages/react-native-payments/docs/PaymentRequest.md rename to docs/PaymentRequest.md index 0b7ffbaa..622ba067 100644 --- a/packages/react-native-payments/docs/PaymentRequest.md +++ b/docs/PaymentRequest.md @@ -91,6 +91,29 @@ paymentRequest.canMakePayments() --- +### static canMakePaymentsUsingNetworks() +**(IOS only)** Determines if user has active cards in Apple pay that matches passed networks. + +__Arguments__ +- usingNetworks - `Array` + +
+Example + +```es6 +PaymentRequest + .canMakePaymentsUsingNetworks(['Visa', 'AmEx', 'MasterCard']) + .then(canMakePayments => { + if (canMakePayments) { + // do some stuff + } + }); +``` + +
+ +--- + ### show() Displays the payment request to the user. diff --git a/packages/react-native-payments/docs/PaymentRequestUpdateEvent.md b/docs/PaymentRequestUpdateEvent.md similarity index 100% rename from packages/react-native-payments/docs/PaymentRequestUpdateEvent.md rename to docs/PaymentRequestUpdateEvent.md diff --git a/packages/react-native-payments/docs/PaymentResponse.md b/docs/PaymentResponse.md similarity index 100% rename from packages/react-native-payments/docs/PaymentResponse.md rename to docs/PaymentResponse.md diff --git a/packages/react-native-payments/examples/common/App.js b/examples/common/App.js similarity index 100% rename from packages/react-native-payments/examples/common/App.js rename to examples/common/App.js diff --git a/packages/react-native-payments/examples/common/components/Header.js b/examples/common/components/Header.js similarity index 100% rename from packages/react-native-payments/examples/common/components/Header.js rename to examples/common/components/Header.js diff --git a/packages/react-native-payments/examples/common/config/index.js b/examples/common/config/index.js similarity index 100% rename from packages/react-native-payments/examples/common/config/index.js rename to examples/common/config/index.js diff --git a/packages/react-native-payments/examples/common/handlers/index.js b/examples/common/handlers/index.js similarity index 100% rename from packages/react-native-payments/examples/common/handlers/index.js rename to examples/common/handlers/index.js diff --git a/packages/react-native-payments/examples/common/services/shipping.js b/examples/common/services/shipping.js similarity index 100% rename from packages/react-native-payments/examples/common/services/shipping.js rename to examples/common/services/shipping.js diff --git a/packages/react-native-payments/examples/common/styles/index.js b/examples/common/styles/index.js similarity index 100% rename from packages/react-native-payments/examples/common/styles/index.js rename to examples/common/styles/index.js diff --git a/examples/native-next/.babelrc b/examples/native-next/.babelrc new file mode 100644 index 00000000..a9ce1369 --- /dev/null +++ b/examples/native-next/.babelrc @@ -0,0 +1,3 @@ +{ + "presets": ["react-native"] +} diff --git a/packages/react-native-payments/examples/braintree/.buckconfig b/examples/native-next/.buckconfig similarity index 100% rename from packages/react-native-payments/examples/braintree/.buckconfig rename to examples/native-next/.buckconfig diff --git a/packages/react-native-payments/examples/native/.flowconfig b/examples/native-next/.flowconfig similarity index 58% rename from packages/react-native-payments/examples/native/.flowconfig rename to examples/native-next/.flowconfig index b38ea97e..7d5e2d33 100644 --- a/packages/react-native-payments/examples/native/.flowconfig +++ b/examples/native-next/.flowconfig @@ -12,33 +12,43 @@ ; For RN Apps installed via npm, "Libraries" folder is inside ; "node_modules/react-native" but in the source repo it is in the root .*/Libraries/react-native/React.js -.*/Libraries/react-native/ReactNative.js + +; Ignore polyfills +.*/Libraries/polyfills/.* + +; Ignore metro +.*/node_modules/metro/.* [include] [libs] node_modules/react-native/Libraries/react-native/react-native-interface.js -node_modules/react-native/flow -flow/ +node_modules/react-native/flow/ +node_modules/react-native/flow-github/ [options] -module.system=haste +emoji=true -experimental.strict_type_args=true +module.system=haste munge_underscores=true module.name_mapper='^[./a-zA-Z0-9$_-]+\.\(bmp\|gif\|jpg\|jpeg\|png\|psd\|svg\|webp\|m4v\|mov\|mp4\|mpeg\|mpg\|webm\|aac\|aiff\|caf\|m4a\|mp3\|wav\|html\|pdf\)$' -> 'RelativeImageStub' +module.file_ext=.js +module.file_ext=.jsx +module.file_ext=.json +module.file_ext=.native.js + suppress_type=$FlowIssue suppress_type=$FlowFixMe -suppress_type=$FixMe +suppress_type=$FlowFixMeProps +suppress_type=$FlowFixMeState -suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(>=0\\.\\(3[0-7]\\|[1-2][0-9]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\) -suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(>=0\\.\\(3[0-7]\\|1[0-9]\\|[1-2][0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\)?:? #[0-9]+ +suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\) +suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\)?:? #[0-9]+ suppress_comment=\\(.\\|\n\\)*\\$FlowFixedInNextDeploy - -unsafe.enable_getters_and_setters=true +suppress_comment=\\(.\\|\n\\)*\\$FlowExpectedError [version] -^0.37.0 +^0.67.0 diff --git a/packages/react-native-payments/examples/braintree/.gitattributes b/examples/native-next/.gitattributes similarity index 100% rename from packages/react-native-payments/examples/braintree/.gitattributes rename to examples/native-next/.gitattributes diff --git a/packages/react-native-payments/examples/stripe/.gitignore b/examples/native-next/.gitignore similarity index 76% rename from packages/react-native-payments/examples/stripe/.gitignore rename to examples/native-next/.gitignore index 989e1e64..5d647565 100644 --- a/packages/react-native-payments/examples/stripe/.gitignore +++ b/examples/native-next/.gitignore @@ -39,7 +39,6 @@ yarn-error.log # BUCK buck-out/ \.buckd/ -android/app/libs *.keystore # fastlane @@ -47,13 +46,11 @@ android/app/libs # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the # screenshots whenever they are needed. # For more information about the recommended setup visit: -# https://github.com/fastlane/fastlane/blob/master/fastlane/docs/Gitignore.md +# https://docs.fastlane.tools/best-practices/source-control/ -fastlane/report.xml -fastlane/Preview.html -fastlane/screenshots +*/fastlane/report.xml +*/fastlane/Preview.html +*/fastlane/screenshots -# Haul -# -haul-debug.log -.happypack +# Bundle artifact +*.jsbundle diff --git a/packages/react-native-payments/examples/braintree/.watchmanconfig b/examples/native-next/.watchmanconfig similarity index 100% rename from packages/react-native-payments/examples/braintree/.watchmanconfig rename to examples/native-next/.watchmanconfig diff --git a/examples/native-next/App.js b/examples/native-next/App.js new file mode 100644 index 00000000..480140ee --- /dev/null +++ b/examples/native-next/App.js @@ -0,0 +1,57 @@ +/** + * Sample React Native App + * https://github.com/facebook/react-native + * @flow + */ + +import React, { Component } from 'react'; +import { View } from 'react-native'; +import { ApplePayButton, PaymentRequest } from 'react-native-payments'; + +type Props = {}; + +export default class App extends Component { + showPaymentSheet = () => { + const paymentRequest = new PaymentRequest(METHOD_DATA, DETAILS); + paymentRequest.show(); + }; + render() { + return ( + + + + + + ); + } +} + +const METHOD_DATA = [ + { + supportedMethods: ['apple-pay'], + data: { + merchantIdentifier: 'merchant.com.your-app.namespace', + supportedNetworks: ['visa', 'mastercard', 'amex'], + countryCode: 'US', + currencyCode: 'USD', + }, + }, +]; + +const DETAILS = { + id: 'basic-example', + displayItems: [ + { + label: 'Movie Ticket', + amount: { currency: 'USD', value: '15.00' }, + }, + ], + total: { + label: 'Merchant Name', + amount: { currency: 'USD', value: '15.00' }, + }, +}; diff --git a/packages/react-native-payments/examples/stripe/android/app/BUCK b/examples/native-next/android/app/BUCK similarity index 56% rename from packages/react-native-payments/examples/stripe/android/app/BUCK rename to examples/native-next/android/app/BUCK index 9bc71b74..c8f56032 100644 --- a/packages/react-native-payments/examples/stripe/android/app/BUCK +++ b/examples/native-next/android/app/BUCK @@ -1,5 +1,3 @@ -import re - # To learn about Buck see [Docs](https://buckbuild.com/). # To run your application with Buck: # - install Buck @@ -11,8 +9,9 @@ import re # lib_deps = [] + for jarfile in glob(['libs/*.jar']): - name = 'jars__' + re.sub(r'^.*/([^/]+)\.jar$', r'\1', jarfile) + name = 'jars__' + jarfile[jarfile.rindex('/') + 1: jarfile.rindex('.jar')] lib_deps.append(':' + name) prebuilt_jar( name = name, @@ -20,7 +19,7 @@ for jarfile in glob(['libs/*.jar']): ) for aarfile in glob(['libs/*.aar']): - name = 'aars__' + re.sub(r'^.*/([^/]+)\.aar$', r'\1', aarfile) + name = 'aars__' + aarfile[aarfile.rindex('/') + 1: aarfile.rindex('.aar')] lib_deps.append(':' + name) android_prebuilt_aar( name = name, @@ -28,39 +27,39 @@ for aarfile in glob(['libs/*.aar']): ) android_library( - name = 'all-libs', - exported_deps = lib_deps + name = "all-libs", + exported_deps = lib_deps, ) android_library( - name = 'app-code', - srcs = glob([ - 'src/main/java/**/*.java', - ]), - deps = [ - ':all-libs', - ':build_config', - ':res', - ], + name = "app-code", + srcs = glob([ + "src/main/java/**/*.java", + ]), + deps = [ + ":all-libs", + ":build_config", + ":res", + ], ) android_build_config( - name = 'build_config', - package = 'com.stripeexample', + name = "build_config", + package = "com.example", ) android_resource( - name = 'res', - res = 'src/main/res', - package = 'com.stripeexample', + name = "res", + package = "com.example", + res = "src/main/res", ) android_binary( - name = 'app', - package_type = 'debug', - manifest = 'src/main/AndroidManifest.xml', - keystore = '//android/keystores:debug', - deps = [ - ':app-code', - ], + name = "app", + keystore = "//android/keystores:debug", + manifest = "src/main/AndroidManifest.xml", + package_type = "debug", + deps = [ + ":app-code", + ], ) diff --git a/packages/react-native-payments/examples/stripe/android/app/build.gradle b/examples/native-next/android/app/build.gradle similarity index 91% rename from packages/react-native-payments/examples/stripe/android/app/build.gradle rename to examples/native-next/android/app/build.gradle index 4ab53b67..7bb0ebc2 100644 --- a/packages/react-native-payments/examples/stripe/android/app/build.gradle +++ b/examples/native-next/android/app/build.gradle @@ -33,6 +33,13 @@ import com.android.build.OutputFile * // bundleInPaidRelease: true, * // bundleInBeta: true, * + * // whether to disable dev mode in custom build variants (by default only disabled in release) + * // for example: to disable dev mode in the staging build type (if configured) + * devDisabledInStaging: true, + * // The configuration property can be in the following formats + * // 'devDisabledIn${productFlavor}${buildType}' + * // 'devDisabledIn${buildType}' + * * // the root of your project, i.e. where "package.json" lives * root: "../../", * @@ -58,13 +65,17 @@ import com.android.build.OutputFile * inputExcludes: ["android/**", "ios/**"], * * // override which node gets called and with what additional arguments - * nodeExecutableAndArgs: ["node"] + * nodeExecutableAndArgs: ["node"], * * // supply additional arguments to the packager * extraPackagerArgs: [] * ] */ +project.ext.react = [ + entryFile: "index.js" +] + apply from: "../../node_modules/react-native/react.gradle" /** @@ -87,7 +98,7 @@ android { buildToolsVersion "23.0.1" defaultConfig { - applicationId "com.stripeexample" + applicationId "com.example" minSdkVersion 16 targetSdkVersion 22 versionCode 1 diff --git a/packages/react-native-payments/examples/native/android/app/proguard-rules.pro b/examples/native-next/android/app/proguard-rules.pro similarity index 92% rename from packages/react-native-payments/examples/native/android/app/proguard-rules.pro rename to examples/native-next/android/app/proguard-rules.pro index 48361a90..6e8516c8 100644 --- a/packages/react-native-payments/examples/native/android/app/proguard-rules.pro +++ b/examples/native-next/android/app/proguard-rules.pro @@ -50,6 +50,10 @@ -dontwarn com.facebook.react.** +# TextLayoutBuilder uses a non-public Android constructor within StaticLayout. +# See libs/proxy/src/main/java/com/facebook/fbui/textlayoutbuilder/proxy for details. +-dontwarn android.text.StaticLayout + # okhttp -keepattributes Signature diff --git a/packages/react-native-payments/examples/stripe/android/app/src/main/AndroidManifest.xml b/examples/native-next/android/app/src/main/AndroidManifest.xml similarity index 78% rename from packages/react-native-payments/examples/stripe/android/app/src/main/AndroidManifest.xml rename to examples/native-next/android/app/src/main/AndroidManifest.xml index e8ea463b..efef5762 100644 --- a/packages/react-native-payments/examples/stripe/android/app/src/main/AndroidManifest.xml +++ b/examples/native-next/android/app/src/main/AndroidManifest.xml @@ -1,25 +1,20 @@ + package="com.example"> - - + android:configChanges="keyboard|keyboardHidden|orientation|screenSize" + android:windowSoftInputMode="adjustResize"> diff --git a/packages/react-native-payments/examples/stripe/android/app/src/main/java/com/stripeexample/MainActivity.java b/examples/native-next/android/app/src/main/java/com/example/MainActivity.java similarity index 84% rename from packages/react-native-payments/examples/stripe/android/app/src/main/java/com/stripeexample/MainActivity.java rename to examples/native-next/android/app/src/main/java/com/example/MainActivity.java index 6fc1e805..e84b7255 100644 --- a/packages/react-native-payments/examples/stripe/android/app/src/main/java/com/stripeexample/MainActivity.java +++ b/examples/native-next/android/app/src/main/java/com/example/MainActivity.java @@ -1,4 +1,4 @@ -package com.stripeexample; +package com.example; import com.facebook.react.ReactActivity; @@ -10,6 +10,6 @@ public class MainActivity extends ReactActivity { */ @Override protected String getMainComponentName() { - return "StripeExample"; + return "example"; } } diff --git a/packages/react-native-payments/examples/braintree/android/app/src/main/java/com/braintreeexample/MainApplication.java b/examples/native-next/android/app/src/main/java/com/example/MainApplication.java similarity index 89% rename from packages/react-native-payments/examples/braintree/android/app/src/main/java/com/braintreeexample/MainApplication.java rename to examples/native-next/android/app/src/main/java/com/example/MainApplication.java index b0934bc9..2e94f3ac 100644 --- a/packages/react-native-payments/examples/braintree/android/app/src/main/java/com/braintreeexample/MainApplication.java +++ b/examples/native-next/android/app/src/main/java/com/example/MainApplication.java @@ -1,10 +1,8 @@ -package com.braintreeexample; +package com.example; import android.app.Application; -import android.util.Log; import com.facebook.react.ReactApplication; -import com.facebook.react.ReactInstanceManager; import com.facebook.react.ReactNativeHost; import com.facebook.react.ReactPackage; import com.facebook.react.shell.MainReactPackage; @@ -27,6 +25,11 @@ protected List getPackages() { new MainReactPackage() ); } + + @Override + protected String getJSMainModuleName() { + return "index"; + } }; @Override diff --git a/packages/react-native-payments/examples/braintree/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/examples/native-next/android/app/src/main/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from packages/react-native-payments/examples/braintree/android/app/src/main/res/mipmap-hdpi/ic_launcher.png rename to examples/native-next/android/app/src/main/res/mipmap-hdpi/ic_launcher.png diff --git a/packages/react-native-payments/examples/braintree/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/examples/native-next/android/app/src/main/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from packages/react-native-payments/examples/braintree/android/app/src/main/res/mipmap-mdpi/ic_launcher.png rename to examples/native-next/android/app/src/main/res/mipmap-mdpi/ic_launcher.png diff --git a/packages/react-native-payments/examples/braintree/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/examples/native-next/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from packages/react-native-payments/examples/braintree/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png rename to examples/native-next/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png diff --git a/packages/react-native-payments/examples/braintree/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/examples/native-next/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from packages/react-native-payments/examples/braintree/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png rename to examples/native-next/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png diff --git a/examples/native-next/android/app/src/main/res/values/strings.xml b/examples/native-next/android/app/src/main/res/values/strings.xml new file mode 100644 index 00000000..d75426c8 --- /dev/null +++ b/examples/native-next/android/app/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + example + diff --git a/packages/react-native-payments/examples/braintree/android/app/src/main/res/values/styles.xml b/examples/native-next/android/app/src/main/res/values/styles.xml similarity index 100% rename from packages/react-native-payments/examples/braintree/android/app/src/main/res/values/styles.xml rename to examples/native-next/android/app/src/main/res/values/styles.xml diff --git a/packages/react-native-payments/examples/stripe/android/build.gradle b/examples/native-next/android/build.gradle similarity index 91% rename from packages/react-native-payments/examples/stripe/android/build.gradle rename to examples/native-next/android/build.gradle index fcba4c58..eed9972b 100644 --- a/packages/react-native-payments/examples/stripe/android/build.gradle +++ b/examples/native-next/android/build.gradle @@ -5,7 +5,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:1.3.1' + classpath 'com.android.tools.build:gradle:2.2.3' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files diff --git a/examples/native-next/android/keystores/BUCK b/examples/native-next/android/keystores/BUCK new file mode 100644 index 00000000..88e4c31b --- /dev/null +++ b/examples/native-next/android/keystores/BUCK @@ -0,0 +1,8 @@ +keystore( + name = "debug", + properties = "debug.keystore.properties", + store = "debug.keystore", + visibility = [ + "PUBLIC", + ], +) diff --git a/examples/native-next/android/settings.gradle b/examples/native-next/android/settings.gradle new file mode 100644 index 00000000..13df8b58 --- /dev/null +++ b/examples/native-next/android/settings.gradle @@ -0,0 +1,3 @@ +rootProject.name = 'example' + +include ':app' diff --git a/examples/native-next/app.json b/examples/native-next/app.json new file mode 100644 index 00000000..486d55b0 --- /dev/null +++ b/examples/native-next/app.json @@ -0,0 +1,4 @@ +{ + "name": "example", + "displayName": "example" +} \ No newline at end of file diff --git a/examples/native-next/index.js b/examples/native-next/index.js new file mode 100644 index 00000000..0bb7b32a --- /dev/null +++ b/examples/native-next/index.js @@ -0,0 +1,4 @@ +import { AppRegistry } from 'react-native'; +import App from './App'; + +AppRegistry.registerComponent('example', () => App); diff --git a/packages/react-native-payments/examples/braintree/ios/BraintreeExample-tvOS/Info.plist b/examples/native-next/ios/example-tvOS/Info.plist similarity index 100% rename from packages/react-native-payments/examples/braintree/ios/BraintreeExample-tvOS/Info.plist rename to examples/native-next/ios/example-tvOS/Info.plist diff --git a/packages/react-native-payments/examples/braintree/ios/BraintreeExample-tvOSTests/Info.plist b/examples/native-next/ios/example-tvOSTests/Info.plist similarity index 100% rename from packages/react-native-payments/examples/braintree/ios/BraintreeExample-tvOSTests/Info.plist rename to examples/native-next/ios/example-tvOSTests/Info.plist diff --git a/packages/react-native-payments/examples/stripe/ios/StripeExample.xcodeproj/project.pbxproj b/examples/native-next/ios/example.xcodeproj/project.pbxproj similarity index 75% rename from packages/react-native-payments/examples/stripe/ios/StripeExample.xcodeproj/project.pbxproj rename to examples/native-next/ios/example.xcodeproj/project.pbxproj index 869b6743..30d15a9f 100644 --- a/packages/react-native-payments/examples/stripe/ios/StripeExample.xcodeproj/project.pbxproj +++ b/examples/native-next/ios/example.xcodeproj/project.pbxproj @@ -12,7 +12,7 @@ 00C302E81ABCBA2D00DB3ED1 /* libRCTImage.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302C01ABCB91800DB3ED1 /* libRCTImage.a */; }; 00C302E91ABCBA2D00DB3ED1 /* libRCTNetwork.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302DC1ABCB9D200DB3ED1 /* libRCTNetwork.a */; }; 00C302EA1ABCBA2D00DB3ED1 /* libRCTVibration.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302E41ABCB9EE00DB3ED1 /* libRCTVibration.a */; }; - 00E356F31AD99517003FC87E /* StripeExampleTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* StripeExampleTests.m */; }; + 00E356F31AD99517003FC87E /* exampleTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* exampleTests.m */; }; 133E29F31AD74F7200F7D852 /* libRCTLinking.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 78C398B91ACF4ADC00677621 /* libRCTLinking.a */; }; 139105C61AF99C1200B5F7CC /* libRCTSettings.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 139105C11AF99BAD00B5F7CC /* libRCTSettings.a */; }; 139FDEF61B0652A700C62182 /* libRCTWebSocket.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 139FDEF41B06529B00C62182 /* libRCTWebSocket.a */; }; @@ -25,21 +25,20 @@ 2D02E4BC1E0B4A80006451C7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; }; 2D02E4BD1E0B4A84006451C7 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 2D02E4BF1E0B4AB3006451C7 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; - 2D02E4C21E0B4AEC006451C7 /* libRCTAnimation-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5E9157351DD0AC6500FF2AA8 /* libRCTAnimation-tvOS.a */; }; + 2D02E4C21E0B4AEC006451C7 /* libRCTAnimation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5E9157351DD0AC6500FF2AA8 /* libRCTAnimation.a */; }; 2D02E4C31E0B4AEC006451C7 /* libRCTImage-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3E841DF850E9000B6D8A /* libRCTImage-tvOS.a */; }; 2D02E4C41E0B4AEC006451C7 /* libRCTLinking-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3E881DF850E9000B6D8A /* libRCTLinking-tvOS.a */; }; 2D02E4C51E0B4AEC006451C7 /* libRCTNetwork-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3E8C1DF850E9000B6D8A /* libRCTNetwork-tvOS.a */; }; 2D02E4C61E0B4AEC006451C7 /* libRCTSettings-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3E901DF850E9000B6D8A /* libRCTSettings-tvOS.a */; }; 2D02E4C71E0B4AEC006451C7 /* libRCTText-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3E941DF850E9000B6D8A /* libRCTText-tvOS.a */; }; 2D02E4C81E0B4AEC006451C7 /* libRCTWebSocket-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3E991DF850E9000B6D8A /* libRCTWebSocket-tvOS.a */; }; - 2D02E4C91E0B4AEC006451C7 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3EA31DF850E9000B6D8A /* libReact.a */; }; - 2DCD954D1E0B4F2C00145EB5 /* StripeExampleTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* StripeExampleTests.m */; }; + 2D16E6881FA4F8E400B85C8A /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2D16E6891FA4F8E400B85C8A /* libReact.a */; }; + 2DCD954D1E0B4F2C00145EB5 /* exampleTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* exampleTests.m */; }; + 2DF0FFEE2056DD460020B375 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3EA31DF850E9000B6D8A /* libReact.a */; }; 5E9157361DD0AC6A00FF2AA8 /* libRCTAnimation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5E9157331DD0AC6500FF2AA8 /* libRCTAnimation.a */; }; + 7771F46320C886B20051AC63 /* libReactNativePayments.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7771F46220C886970051AC63 /* libReactNativePayments.a */; }; 832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 832341B51AAA6A8300B99B32 /* libRCTText.a */; }; - ADB95A811F187D0C007C2365 /* Stripe.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ADB95A801F187D0C007C2365 /* Stripe.framework */; }; - ADB95A851F187D1D007C2365 /* Stripe.bundle in Resources */ = {isa = PBXBuildFile; fileRef = ADB95A841F187D1D007C2365 /* Stripe.bundle */; }; - ADB95A861F187D34007C2365 /* libReactNativePayments.a in Frameworks */ = {isa = PBXBuildFile; fileRef = ADB95A7A1F186005007C2365 /* libReactNativePayments.a */; }; - ADCE23DB1F20724200A26CB3 /* Stripe.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ADCE23D81F206F2500A26CB3 /* Stripe.framework */; }; + ADBDB9381DFEBF1600ED6528 /* libRCTBlob.a in Frameworks */ = {isa = PBXBuildFile; fileRef = ADBDB9271DFEBF0700ED6528 /* libRCTBlob.a */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -83,7 +82,7 @@ containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */; proxyType = 1; remoteGlobalIDString = 13B07F861A680F5B00A75B9A; - remoteInfo = StripeExample; + remoteInfo = example; }; 139105C01AF99BAD00B5F7CC /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -111,7 +110,84 @@ containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */; proxyType = 1; remoteGlobalIDString = 2D02E47A1E0B4A5D006451C7; - remoteInfo = "StripeExample-tvOS"; + remoteInfo = "example-tvOS"; + }; + 2D16E6711FA4F8DC00B85C8A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = ADBDB91F1DFEBF0600ED6528 /* RCTBlob.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = ADD01A681E09402E00F6D226; + remoteInfo = "RCTBlob-tvOS"; + }; + 2D16E6831FA4F8DC00B85C8A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 3DBE0D001F3B181A0099AA32; + remoteInfo = fishhook; + }; + 2D16E6851FA4F8DC00B85C8A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 3DBE0D0D1F3B181C0099AA32; + remoteInfo = "fishhook-tvOS"; + }; + 2DF0FFDE2056DD460020B375 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = EBF21BDC1FC498900052F4D5; + remoteInfo = jsinspector; + }; + 2DF0FFE02056DD460020B375 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = EBF21BFA1FC4989A0052F4D5; + remoteInfo = "jsinspector-tvOS"; + }; + 2DF0FFE22056DD460020B375 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 139D7ECE1E25DB7D00323FB7; + remoteInfo = "third-party"; + }; + 2DF0FFE42056DD460020B375 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 3D383D3C1EBD27B6005632C8; + remoteInfo = "third-party-tvOS"; + }; + 2DF0FFE62056DD460020B375 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 139D7E881E25C6D100323FB7; + remoteInfo = "double-conversion"; + }; + 2DF0FFE82056DD460020B375 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 3D383D621EBD27B9005632C8; + remoteInfo = "double-conversion-tvOS"; + }; + 2DF0FFEA2056DD460020B375 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 9936F3131F5F2E4B0010BF04; + remoteInfo = privatedata; + }; + 2DF0FFEC2056DD460020B375 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 9936F32F1F5F2E5B0010BF04; + remoteInfo = "privatedata-tvOS"; }; 3DAD3E831DF850E9000B6D8A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -218,6 +294,13 @@ remoteGlobalIDString = 2D2A28201D9B03D100D4039D; remoteInfo = "RCTAnimation-tvOS"; }; + 7771F46120C886970051AC63 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 7771F43820C886970051AC63 /* ReactNativePayments.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 134814201AA4EA6300B7C361; + remoteInfo = ReactNativePayments; + }; 78C398B81ACF4ADC00677621 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */; @@ -232,12 +315,12 @@ remoteGlobalIDString = 58B5119B1A9E6C1200147676; remoteInfo = RCTText; }; - ADB95A791F186005007C2365 /* PBXContainerItemProxy */ = { + ADBDB9261DFEBF0700ED6528 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = 967FC8CB251746C3B8C1AE76 /* ReactNativePayments.xcodeproj */; + containerPortal = ADBDB91F1DFEBF0600ED6528 /* RCTBlob.xcodeproj */; proxyType = 2; - remoteGlobalIDString = 134814201AA4EA6300B7C361; - remoteInfo = ReactNativePayments; + remoteGlobalIDString = 358F4ED71D1E81A9004DF814; + remoteInfo = RCTBlob; }; /* End PBXContainerItemProxy section */ @@ -248,27 +331,27 @@ 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTImage.xcodeproj; path = "../node_modules/react-native/Libraries/Image/RCTImage.xcodeproj"; sourceTree = ""; }; 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTNetwork.xcodeproj; path = "../node_modules/react-native/Libraries/Network/RCTNetwork.xcodeproj"; sourceTree = ""; }; 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTVibration.xcodeproj; path = "../node_modules/react-native/Libraries/Vibration/RCTVibration.xcodeproj"; sourceTree = ""; }; - 00E356EE1AD99517003FC87E /* StripeExampleTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = StripeExampleTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 00E356EE1AD99517003FC87E /* exampleTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = exampleTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 00E356F21AD99517003FC87E /* StripeExampleTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = StripeExampleTests.m; sourceTree = ""; }; + 00E356F21AD99517003FC87E /* exampleTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = exampleTests.m; sourceTree = ""; }; 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTSettings.xcodeproj; path = "../node_modules/react-native/Libraries/Settings/RCTSettings.xcodeproj"; sourceTree = ""; }; 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTWebSocket.xcodeproj; path = "../node_modules/react-native/Libraries/WebSocket/RCTWebSocket.xcodeproj"; sourceTree = ""; }; - 13B07F961A680F5B00A75B9A /* StripeExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = StripeExample.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = StripeExample/AppDelegate.h; sourceTree = ""; }; - 13B07FB01A68108700A75B9A /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = StripeExample/AppDelegate.m; sourceTree = ""; }; + 13B07F961A680F5B00A75B9A /* example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = example.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = example/AppDelegate.h; sourceTree = ""; }; + 13B07FB01A68108700A75B9A /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = example/AppDelegate.m; sourceTree = ""; }; 13B07FB21A68108700A75B9A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; }; - 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = StripeExample/Images.xcassets; sourceTree = ""; }; - 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = StripeExample/Info.plist; sourceTree = ""; }; - 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = StripeExample/main.m; sourceTree = ""; }; + 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = example/Images.xcassets; sourceTree = ""; }; + 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = example/Info.plist; sourceTree = ""; }; + 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = example/main.m; sourceTree = ""; }; 146833FF1AC3E56700842450 /* React.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = React.xcodeproj; path = "../node_modules/react-native/React/React.xcodeproj"; sourceTree = ""; }; - 2D02E47B1E0B4A5D006451C7 /* StripeExample-tvOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "StripeExample-tvOS.app"; sourceTree = BUILT_PRODUCTS_DIR; }; - 2D02E4901E0B4A5D006451C7 /* StripeExample-tvOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "StripeExample-tvOSTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; + 2D02E47B1E0B4A5D006451C7 /* example-tvOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "example-tvOS.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 2D02E4901E0B4A5D006451C7 /* example-tvOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "example-tvOSTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; + 2D16E6891FA4F8E400B85C8A /* libReact.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = libReact.a; sourceTree = BUILT_PRODUCTS_DIR; }; 5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTAnimation.xcodeproj; path = "../node_modules/react-native/Libraries/NativeAnimation/RCTAnimation.xcodeproj"; sourceTree = ""; }; + 7771F43820C886970051AC63 /* ReactNativePayments.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = ReactNativePayments.xcodeproj; path = ../../../lib/ios/ReactNativePayments.xcodeproj; sourceTree = ""; }; 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTLinking.xcodeproj; path = "../node_modules/react-native/Libraries/LinkingIOS/RCTLinking.xcodeproj"; sourceTree = ""; }; 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTText.xcodeproj; path = "../node_modules/react-native/Libraries/Text/RCTText.xcodeproj"; sourceTree = ""; }; - 967FC8CB251746C3B8C1AE76 /* ReactNativePayments.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = ReactNativePayments.xcodeproj; path = "../node_modules/react-native-payments/lib/ios/ReactNativePayments.xcodeproj"; sourceTree = ""; }; - ADB95A511F185EE7007C2365 /* StripeExample.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; name = StripeExample.entitlements; path = StripeExample/StripeExample.entitlements; sourceTree = ""; }; - ADCE23D81F206F2500A26CB3 /* Stripe.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Stripe.framework; path = "../../../../react-native-payments-addon-stripe/Carthage/Build/iOS/Stripe.framework"; sourceTree = ""; }; + ADBDB91F1DFEBF0600ED6528 /* RCTBlob.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTBlob.xcodeproj; path = "../node_modules/react-native/Libraries/Blob/RCTBlob.xcodeproj"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -284,10 +367,10 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - ADCE23DB1F20724200A26CB3 /* Stripe.framework in Frameworks */, - ADB95A861F187D34007C2365 /* libReactNativePayments.a in Frameworks */, + 7771F46320C886B20051AC63 /* libReactNativePayments.a in Frameworks */, + ADBDB9381DFEBF1600ED6528 /* libRCTBlob.a in Frameworks */, + 5E9157361DD0AC6A00FF2AA8 /* libRCTAnimation.a in Frameworks */, 146834051AC3E58100842450 /* libReact.a in Frameworks */, - ADB95A811F187D0C007C2365 /* Stripe.framework in Frameworks */, 5E9157361DD0AC6A00FF2AA8 /* libRCTAnimation.a in Frameworks */, 00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */, 00C302E71ABCBA2D00DB3ED1 /* libRCTGeolocation.a in Frameworks */, @@ -305,8 +388,8 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 2D02E4C91E0B4AEC006451C7 /* libReact.a in Frameworks */, - 2D02E4C21E0B4AEC006451C7 /* libRCTAnimation-tvOS.a in Frameworks */, + 2D16E6881FA4F8E400B85C8A /* libReact.a in Frameworks */, + 2D02E4C21E0B4AEC006451C7 /* libRCTAnimation.a in Frameworks */, 2D02E4C31E0B4AEC006451C7 /* libRCTImage-tvOS.a in Frameworks */, 2D02E4C41E0B4AEC006451C7 /* libRCTLinking-tvOS.a in Frameworks */, 2D02E4C51E0B4AEC006451C7 /* libRCTNetwork-tvOS.a in Frameworks */, @@ -320,6 +403,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 2DF0FFEE2056DD460020B375 /* libReact.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -368,13 +452,13 @@ name = Products; sourceTree = ""; }; - 00E356EF1AD99517003FC87E /* StripeExampleTests */ = { + 00E356EF1AD99517003FC87E /* exampleTests */ = { isa = PBXGroup; children = ( - 00E356F21AD99517003FC87E /* StripeExampleTests.m */, + 00E356F21AD99517003FC87E /* exampleTests.m */, 00E356F01AD99517003FC87E /* Supporting Files */, ); - path = StripeExampleTests; + path = exampleTests; sourceTree = ""; }; 00E356F01AD99517003FC87E /* Supporting Files */ = { @@ -399,14 +483,15 @@ children = ( 139FDEF41B06529B00C62182 /* libRCTWebSocket.a */, 3DAD3E991DF850E9000B6D8A /* libRCTWebSocket-tvOS.a */, + 2D16E6841FA4F8DC00B85C8A /* libfishhook.a */, + 2D16E6861FA4F8DC00B85C8A /* libfishhook-tvOS.a */, ); name = Products; sourceTree = ""; }; - 13B07FAE1A68108700A75B9A /* StripeExample */ = { + 13B07FAE1A68108700A75B9A /* example */ = { isa = PBXGroup; children = ( - ADB95A511F185EE7007C2365 /* StripeExample.entitlements */, 008F07F21AC5B25A0029DE68 /* main.jsbundle */, 13B07FAF1A68108700A75B9A /* AppDelegate.h */, 13B07FB01A68108700A75B9A /* AppDelegate.m */, @@ -415,7 +500,7 @@ 13B07FB11A68108700A75B9A /* LaunchScreen.xib */, 13B07FB71A68108700A75B9A /* main.m */, ); - name = StripeExample; + name = example; sourceTree = ""; }; 146834001AC3E56700842450 /* Products */ = { @@ -429,15 +514,39 @@ 3DAD3EAB1DF850E9000B6D8A /* libcxxreact.a */, 3DAD3EAD1DF850E9000B6D8A /* libjschelpers.a */, 3DAD3EAF1DF850E9000B6D8A /* libjschelpers.a */, + 2DF0FFDF2056DD460020B375 /* libjsinspector.a */, + 2DF0FFE12056DD460020B375 /* libjsinspector-tvOS.a */, + 2DF0FFE32056DD460020B375 /* libthird-party.a */, + 2DF0FFE52056DD460020B375 /* libthird-party.a */, + 2DF0FFE72056DD460020B375 /* libdouble-conversion.a */, + 2DF0FFE92056DD460020B375 /* libdouble-conversion.a */, + 2DF0FFEB2056DD460020B375 /* libprivatedata.a */, + 2DF0FFED2056DD460020B375 /* libprivatedata-tvOS.a */, ); name = Products; sourceTree = ""; }; + 2D16E6871FA4F8E400B85C8A /* Frameworks */ = { + isa = PBXGroup; + children = ( + 2D16E6891FA4F8E400B85C8A /* libReact.a */, + ); + name = Frameworks; + sourceTree = ""; + }; 5E91572E1DD0AC6500FF2AA8 /* Products */ = { isa = PBXGroup; children = ( 5E9157331DD0AC6500FF2AA8 /* libRCTAnimation.a */, - 5E9157351DD0AC6500FF2AA8 /* libRCTAnimation-tvOS.a */, + 5E9157351DD0AC6500FF2AA8 /* libRCTAnimation.a */, + ); + name = Products; + sourceTree = ""; + }; + 7771F43920C886970051AC63 /* Products */ = { + isa = PBXGroup; + children = ( + 7771F46220C886970051AC63 /* libReactNativePayments.a */, ); name = Products; sourceTree = ""; @@ -454,9 +563,11 @@ 832341AE1AAA6A7D00B99B32 /* Libraries */ = { isa = PBXGroup; children = ( + 7771F43820C886970051AC63 /* ReactNativePayments.xcodeproj */, 5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */, 146833FF1AC3E56700842450 /* React.xcodeproj */, 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */, + ADBDB91F1DFEBF0600ED6528 /* RCTBlob.xcodeproj */, 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */, 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */, 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */, @@ -465,7 +576,6 @@ 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */, 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */, 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */, - 967FC8CB251746C3B8C1AE76 /* ReactNativePayments.xcodeproj */, ); name = Libraries; sourceTree = ""; @@ -482,50 +592,43 @@ 83CBB9F61A601CBA00E9B192 = { isa = PBXGroup; children = ( - ADB95A7F1F187CEC007C2365 /* Frameworks */, - 13B07FAE1A68108700A75B9A /* StripeExample */, + 13B07FAE1A68108700A75B9A /* example */, 832341AE1AAA6A7D00B99B32 /* Libraries */, - 00E356EF1AD99517003FC87E /* StripeExampleTests */, + 00E356EF1AD99517003FC87E /* exampleTests */, 83CBBA001A601CBA00E9B192 /* Products */, - ADCE23BD1F206F2500A26CB3 /* Frameworks */, + 2D16E6871FA4F8E400B85C8A /* Frameworks */, ); indentWidth = 2; sourceTree = ""; tabWidth = 2; + usesTabs = 0; }; 83CBBA001A601CBA00E9B192 /* Products */ = { isa = PBXGroup; children = ( - 13B07F961A680F5B00A75B9A /* StripeExample.app */, - 00E356EE1AD99517003FC87E /* StripeExampleTests.xctest */, - 2D02E47B1E0B4A5D006451C7 /* StripeExample-tvOS.app */, - 2D02E4901E0B4A5D006451C7 /* StripeExample-tvOSTests.xctest */, + 13B07F961A680F5B00A75B9A /* example.app */, + 00E356EE1AD99517003FC87E /* exampleTests.xctest */, + 2D02E47B1E0B4A5D006451C7 /* example-tvOS.app */, + 2D02E4901E0B4A5D006451C7 /* example-tvOSTests.xctest */, ); name = Products; sourceTree = ""; }; - ADB95A5D1F186005007C2365 /* Products */ = { + ADBDB9201DFEBF0600ED6528 /* Products */ = { isa = PBXGroup; children = ( - ADB95A7A1F186005007C2365 /* libReactNativePayments.a */, + ADBDB9271DFEBF0700ED6528 /* libRCTBlob.a */, + 2D16E6721FA4F8DC00B85C8A /* libRCTBlob-tvOS.a */, ); name = Products; sourceTree = ""; }; - ADCE23BD1F206F2500A26CB3 /* Frameworks */ = { - isa = PBXGroup; - children = ( - ADCE23D81F206F2500A26CB3 /* Stripe.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ - 00E356ED1AD99517003FC87E /* StripeExampleTests */ = { + 00E356ED1AD99517003FC87E /* exampleTests */ = { isa = PBXNativeTarget; - buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "StripeExampleTests" */; + buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "exampleTests" */; buildPhases = ( 00E356EA1AD99517003FC87E /* Sources */, 00E356EB1AD99517003FC87E /* Frameworks */, @@ -536,17 +639,15 @@ dependencies = ( 00E356F51AD99517003FC87E /* PBXTargetDependency */, ); - name = StripeExampleTests; - productName = StripeExampleTests; - productReference = 00E356EE1AD99517003FC87E /* StripeExampleTests.xctest */; + name = exampleTests; + productName = exampleTests; + productReference = 00E356EE1AD99517003FC87E /* exampleTests.xctest */; productType = "com.apple.product-type.bundle.unit-test"; }; - 13B07F861A680F5B00A75B9A /* StripeExample */ = { + 13B07F861A680F5B00A75B9A /* example */ = { isa = PBXNativeTarget; - buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "StripeExample" */; + buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "example" */; buildPhases = ( - ADCE23DA1F2070AE00A26CB3 /* Copy Carthage Frameworks */, - AD0CE2C91E925489006FC317 /* Integrate Haul with React Native */, 13B07F871A680F5B00A75B9A /* Sources */, 13B07F8C1A680F5B00A75B9A /* Frameworks */, 13B07F8E1A680F5B00A75B9A /* Resources */, @@ -556,16 +657,15 @@ ); dependencies = ( ); - name = StripeExample; + name = example; productName = "Hello World"; - productReference = 13B07F961A680F5B00A75B9A /* StripeExample.app */; + productReference = 13B07F961A680F5B00A75B9A /* example.app */; productType = "com.apple.product-type.application"; }; - 2D02E47A1E0B4A5D006451C7 /* StripeExample-tvOS */ = { + 2D02E47A1E0B4A5D006451C7 /* example-tvOS */ = { isa = PBXNativeTarget; - buildConfigurationList = 2D02E4BA1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "StripeExample-tvOS" */; + buildConfigurationList = 2D02E4BA1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "example-tvOS" */; buildPhases = ( - AD0CE2C91E925489006FC317 /* Integrate Haul with React Native */, 2D02E4771E0B4A5D006451C7 /* Sources */, 2D02E4781E0B4A5D006451C7 /* Frameworks */, 2D02E4791E0B4A5D006451C7 /* Resources */, @@ -575,14 +675,14 @@ ); dependencies = ( ); - name = "StripeExample-tvOS"; - productName = "StripeExample-tvOS"; - productReference = 2D02E47B1E0B4A5D006451C7 /* StripeExample-tvOS.app */; + name = "example-tvOS"; + productName = "example-tvOS"; + productReference = 2D02E47B1E0B4A5D006451C7 /* example-tvOS.app */; productType = "com.apple.product-type.application"; }; - 2D02E48F1E0B4A5D006451C7 /* StripeExample-tvOSTests */ = { + 2D02E48F1E0B4A5D006451C7 /* example-tvOSTests */ = { isa = PBXNativeTarget; - buildConfigurationList = 2D02E4BB1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "StripeExample-tvOSTests" */; + buildConfigurationList = 2D02E4BB1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "example-tvOSTests" */; buildPhases = ( 2D02E48C1E0B4A5D006451C7 /* Sources */, 2D02E48D1E0B4A5D006451C7 /* Frameworks */, @@ -593,9 +693,9 @@ dependencies = ( 2D02E4921E0B4A5D006451C7 /* PBXTargetDependency */, ); - name = "StripeExample-tvOSTests"; - productName = "StripeExample-tvOSTests"; - productReference = 2D02E4901E0B4A5D006451C7 /* StripeExample-tvOSTests.xctest */; + name = "example-tvOSTests"; + productName = "example-tvOSTests"; + productReference = 2D02E4901E0B4A5D006451C7 /* example-tvOSTests.xctest */; productType = "com.apple.product-type.bundle.unit-test"; }; /* End PBXNativeTarget section */ @@ -604,21 +704,13 @@ 83CBB9F71A601CBA00E9B192 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 610; + LastUpgradeCheck = 0610; ORGANIZATIONNAME = Facebook; TargetAttributes = { 00E356ED1AD99517003FC87E = { CreatedOnToolsVersion = 6.2; TestTargetID = 13B07F861A680F5B00A75B9A; }; - 13B07F861A680F5B00A75B9A = { - DevelopmentTeam = 9ZYB6NWYKQ; - SystemCapabilities = { - com.apple.ApplePay = { - enabled = 1; - }; - }; - }; 2D02E47A1E0B4A5D006451C7 = { CreatedOnToolsVersion = 8.2.1; ProvisioningStyle = Automatic; @@ -630,7 +722,7 @@ }; }; }; - buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "StripeExample" */; + buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "example" */; compatibilityVersion = "Xcode 3.2"; developmentRegion = English; hasScannedForEncodings = 0; @@ -650,6 +742,10 @@ ProductGroup = 5E91572E1DD0AC6500FF2AA8 /* Products */; ProjectRef = 5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */; }, + { + ProductGroup = ADBDB9201DFEBF0600ED6528 /* Products */; + ProjectRef = ADBDB91F1DFEBF0600ED6528 /* RCTBlob.xcodeproj */; + }, { ProductGroup = 00C302B61ABCB90400DB3ED1 /* Products */; ProjectRef = 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */; @@ -687,16 +783,16 @@ ProjectRef = 146833FF1AC3E56700842450 /* React.xcodeproj */; }, { - ProductGroup = ADB95A5D1F186005007C2365 /* Products */; - ProjectRef = 967FC8CB251746C3B8C1AE76 /* ReactNativePayments.xcodeproj */; + ProductGroup = 7771F43920C886970051AC63 /* Products */; + ProjectRef = 7771F43820C886970051AC63 /* ReactNativePayments.xcodeproj */; }, ); projectRoot = ""; targets = ( - 13B07F861A680F5B00A75B9A /* StripeExample */, - 00E356ED1AD99517003FC87E /* StripeExampleTests */, - 2D02E47A1E0B4A5D006451C7 /* StripeExample-tvOS */, - 2D02E48F1E0B4A5D006451C7 /* StripeExample-tvOSTests */, + 13B07F861A680F5B00A75B9A /* example */, + 00E356ED1AD99517003FC87E /* exampleTests */, + 2D02E47A1E0B4A5D006451C7 /* example-tvOS */, + 2D02E48F1E0B4A5D006451C7 /* example-tvOSTests */, ); }; /* End PBXProject section */ @@ -758,6 +854,83 @@ remoteRef = 146834031AC3E56700842450 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; + 2D16E6721FA4F8DC00B85C8A /* libRCTBlob-tvOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libRCTBlob-tvOS.a"; + remoteRef = 2D16E6711FA4F8DC00B85C8A /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 2D16E6841FA4F8DC00B85C8A /* libfishhook.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libfishhook.a; + remoteRef = 2D16E6831FA4F8DC00B85C8A /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 2D16E6861FA4F8DC00B85C8A /* libfishhook-tvOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libfishhook-tvOS.a"; + remoteRef = 2D16E6851FA4F8DC00B85C8A /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 2DF0FFDF2056DD460020B375 /* libjsinspector.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libjsinspector.a; + remoteRef = 2DF0FFDE2056DD460020B375 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 2DF0FFE12056DD460020B375 /* libjsinspector-tvOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libjsinspector-tvOS.a"; + remoteRef = 2DF0FFE02056DD460020B375 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 2DF0FFE32056DD460020B375 /* libthird-party.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libthird-party.a"; + remoteRef = 2DF0FFE22056DD460020B375 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 2DF0FFE52056DD460020B375 /* libthird-party.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libthird-party.a"; + remoteRef = 2DF0FFE42056DD460020B375 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 2DF0FFE72056DD460020B375 /* libdouble-conversion.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libdouble-conversion.a"; + remoteRef = 2DF0FFE62056DD460020B375 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 2DF0FFE92056DD460020B375 /* libdouble-conversion.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libdouble-conversion.a"; + remoteRef = 2DF0FFE82056DD460020B375 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 2DF0FFEB2056DD460020B375 /* libprivatedata.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libprivatedata.a; + remoteRef = 2DF0FFEA2056DD460020B375 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 2DF0FFED2056DD460020B375 /* libprivatedata-tvOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libprivatedata-tvOS.a"; + remoteRef = 2DF0FFEC2056DD460020B375 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; 3DAD3E841DF850E9000B6D8A /* libRCTImage-tvOS.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; @@ -856,13 +1029,20 @@ remoteRef = 5E9157321DD0AC6500FF2AA8 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 5E9157351DD0AC6500FF2AA8 /* libRCTAnimation-tvOS.a */ = { + 5E9157351DD0AC6500FF2AA8 /* libRCTAnimation.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; - path = "libRCTAnimation-tvOS.a"; + path = libRCTAnimation.a; remoteRef = 5E9157341DD0AC6500FF2AA8 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; + 7771F46220C886970051AC63 /* libReactNativePayments.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libReactNativePayments.a; + remoteRef = 7771F46120C886970051AC63 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; 78C398B91ACF4ADC00677621 /* libRCTLinking.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; @@ -877,11 +1057,11 @@ remoteRef = 832341B41AAA6A8300B99B32 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - ADB95A7A1F186005007C2365 /* libReactNativePayments.a */ = { + ADBDB9271DFEBF0700ED6528 /* libRCTBlob.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; - path = libReactNativePayments.a; - remoteRef = ADB95A791F186005007C2365 /* PBXContainerItemProxy */; + path = libRCTBlob.a; + remoteRef = ADBDB9261DFEBF0700ED6528 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXReferenceProxy section */ @@ -899,7 +1079,6 @@ buildActionMask = 2147483647; files = ( 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, - ADB95A851F187D1D007C2365 /* Stripe.bundle in Resources */, 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -934,7 +1113,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "export NODE_BINARY=node\n../node_modules/react-native/packager/react-native-xcode.sh"; + shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh"; }; 2D02E4CB1E0B4B27006451C7 /* Bundle React Native Code And Images */ = { isa = PBXShellScriptBuildPhase; @@ -948,37 +1127,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "export NODE_BINARY=node\n../node_modules/react-native/packager/react-native-xcode.sh"; - }; - AD0CE2C91E925489006FC317 /* Integrate Haul with React Native */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "Integrate Haul with React Native"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "bash ../node_modules/haul/src/utils/haul-integrate.sh"; - }; - ADCE23DA1F2070AE00A26CB3 /* Copy Carthage Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "$(SRCROOT)/../node_modules/react-native-payments-addon-stripe/Carthage/Build/iOS/Stripe.framework", - ); - name = "Copy Carthage Frameworks"; - outputPaths = ( - "$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/Stripe.framework", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "/usr/local/bin/carthage copy-frameworks"; + shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh"; }; /* End PBXShellScriptBuildPhase section */ @@ -987,7 +1136,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 00E356F31AD99517003FC87E /* StripeExampleTests.m in Sources */, + 00E356F31AD99517003FC87E /* exampleTests.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1013,7 +1162,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 2DCD954D1E0B4F2C00145EB5 /* StripeExampleTests.m in Sources */, + 2DCD954D1E0B4F2C00145EB5 /* exampleTests.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1022,12 +1171,12 @@ /* Begin PBXTargetDependency section */ 00E356F51AD99517003FC87E /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = 13B07F861A680F5B00A75B9A /* StripeExample */; + target = 13B07F861A680F5B00A75B9A /* example */; targetProxy = 00E356F41AD99517003FC87E /* PBXContainerItemProxy */; }; 2D02E4921E0B4A5D006451C7 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = 2D02E47A1E0B4A5D006451C7 /* StripeExample-tvOS */; + target = 2D02E47A1E0B4A5D006451C7 /* example-tvOS */; targetProxy = 2D02E4911E0B4A5D006451C7 /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ @@ -1039,7 +1188,7 @@ 13B07FB21A68108700A75B9A /* Base */, ); name = LaunchScreen.xib; - path = StripeExample; + path = example; sourceTree = ""; }; /* End PBXVariantGroup section */ @@ -1053,19 +1202,15 @@ "DEBUG=1", "$(inherited)", ); - INFOPLIST_FILE = StripeExampleTests/Info.plist; + INFOPLIST_FILE = exampleTests/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)/$(TARGET_NAME)\"", - ); OTHER_LDFLAGS = ( "-ObjC", "-lc++", ); PRODUCT_NAME = "$(TARGET_NAME)"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/StripeExample.app/StripeExample"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/example.app/example"; }; name = Debug; }; @@ -1074,19 +1219,15 @@ buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; COPY_PHASE_STRIP = NO; - INFOPLIST_FILE = StripeExampleTests/Info.plist; + INFOPLIST_FILE = exampleTests/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)/$(TARGET_NAME)\"", - ); OTHER_LDFLAGS = ( "-ObjC", "-lc++", ); PRODUCT_NAME = "$(TARGET_NAME)"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/StripeExample.app/StripeExample"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/example.app/example"; }; name = Release; }; @@ -1094,24 +1235,17 @@ isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_ENTITLEMENTS = StripeExample/StripeExample.entitlements; CURRENT_PROJECT_VERSION = 1; DEAD_CODE_STRIPPING = NO; - DEVELOPMENT_TEAM = 9ZYB6NWYKQ; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(SRCROOT)/../node_modules/react-native-payments-addon-stripe/Carthage/Build/iOS/", - ); - HEADER_SEARCH_PATHS = ""; - INFOPLIST_FILE = StripeExample/Info.plist; + HEADER_SEARCH_PATHS = "$(SRCROOT)/../../lib/ios"; + INFOPLIST_FILE = example/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; OTHER_LDFLAGS = ( "$(inherited)", "-ObjC", "-lc++", ); - PRODUCT_BUNDLE_IDENTIFIER = "com.react-native-payments.naoufal"; - PRODUCT_NAME = StripeExample; + PRODUCT_NAME = example; VERSIONING_SYSTEM = "apple-generic"; }; name = Debug; @@ -1120,23 +1254,16 @@ isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_ENTITLEMENTS = StripeExample/StripeExample.entitlements; CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = 9ZYB6NWYKQ; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(SRCROOT)/../node_modules/react-native-payments-addon-stripe/Carthage/Build/iOS/", - ); - HEADER_SEARCH_PATHS = ""; - INFOPLIST_FILE = StripeExample/Info.plist; + HEADER_SEARCH_PATHS = "$(SRCROOT)/../../lib/ios"; + INFOPLIST_FILE = example/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; OTHER_LDFLAGS = ( "$(inherited)", "-ObjC", "-lc++", ); - PRODUCT_BUNDLE_IDENTIFIER = "com.react-native-payments.naoufal"; - PRODUCT_NAME = StripeExample; + PRODUCT_NAME = example; VERSIONING_SYSTEM = "apple-generic"; }; name = Release; @@ -1153,17 +1280,13 @@ DEBUG_INFORMATION_FORMAT = dwarf; ENABLE_TESTABILITY = YES; GCC_NO_COMMON_BLOCKS = YES; - INFOPLIST_FILE = "StripeExample-tvOS/Info.plist"; + INFOPLIST_FILE = "example-tvOS/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)/$(TARGET_NAME)\"", - ); OTHER_LDFLAGS = ( "-ObjC", "-lc++", ); - PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.StripeExample-tvOS"; + PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.example-tvOS"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; TARGETED_DEVICE_FAMILY = 3; @@ -1183,17 +1306,13 @@ COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; GCC_NO_COMMON_BLOCKS = YES; - INFOPLIST_FILE = "StripeExample-tvOS/Info.plist"; + INFOPLIST_FILE = "example-tvOS/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)/$(TARGET_NAME)\"", - ); OTHER_LDFLAGS = ( "-ObjC", "-lc++", ); - PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.StripeExample-tvOS"; + PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.example-tvOS"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; TARGETED_DEVICE_FAMILY = 3; @@ -1212,16 +1331,16 @@ DEBUG_INFORMATION_FORMAT = dwarf; ENABLE_TESTABILITY = YES; GCC_NO_COMMON_BLOCKS = YES; - INFOPLIST_FILE = "StripeExample-tvOSTests/Info.plist"; + INFOPLIST_FILE = "example-tvOSTests/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)/$(TARGET_NAME)\"", + OTHER_LDFLAGS = ( + "-ObjC", + "-lc++", ); - PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.StripeExample-tvOSTests"; + PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.example-tvOSTests"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/StripeExample-tvOS.app/StripeExample-tvOS"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/example-tvOS.app/example-tvOS"; TVOS_DEPLOYMENT_TARGET = 10.1; }; name = Debug; @@ -1237,16 +1356,16 @@ COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; GCC_NO_COMMON_BLOCKS = YES; - INFOPLIST_FILE = "StripeExample-tvOSTests/Info.plist"; + INFOPLIST_FILE = "example-tvOSTests/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)/$(TARGET_NAME)\"", + OTHER_LDFLAGS = ( + "-ObjC", + "-lc++", ); - PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.StripeExample-tvOSTests"; + PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.example-tvOSTests"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/StripeExample-tvOS.app/StripeExample-tvOS"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/example-tvOS.app/example-tvOS"; TVOS_DEPLOYMENT_TARGET = 10.1; }; name = Release; @@ -1330,7 +1449,7 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "StripeExampleTests" */ = { + 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "exampleTests" */ = { isa = XCConfigurationList; buildConfigurations = ( 00E356F61AD99517003FC87E /* Debug */, @@ -1339,7 +1458,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "StripeExample" */ = { + 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "example" */ = { isa = XCConfigurationList; buildConfigurations = ( 13B07F941A680F5B00A75B9A /* Debug */, @@ -1348,7 +1467,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 2D02E4BA1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "StripeExample-tvOS" */ = { + 2D02E4BA1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "example-tvOS" */ = { isa = XCConfigurationList; buildConfigurations = ( 2D02E4971E0B4A5E006451C7 /* Debug */, @@ -1357,7 +1476,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 2D02E4BB1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "StripeExample-tvOSTests" */ = { + 2D02E4BB1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "example-tvOSTests" */ = { isa = XCConfigurationList; buildConfigurations = ( 2D02E4991E0B4A5E006451C7 /* Debug */, @@ -1366,7 +1485,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "StripeExample" */ = { + 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "example" */ = { isa = XCConfigurationList; buildConfigurations = ( 83CBBA201A601CBA00E9B192 /* Debug */, diff --git a/packages/react-native-payments/examples/stripe/ios/StripeExample.xcodeproj/xcshareddata/xcschemes/StripeExample-tvOS.xcscheme b/examples/native-next/ios/example.xcodeproj/xcshareddata/xcschemes/example-tvOS.xcscheme similarity index 78% rename from packages/react-native-payments/examples/stripe/ios/StripeExample.xcodeproj/xcshareddata/xcschemes/StripeExample-tvOS.xcscheme rename to examples/native-next/ios/example.xcodeproj/xcshareddata/xcschemes/example-tvOS.xcscheme index e0851f7b..a36391c9 100644 --- a/packages/react-native-payments/examples/stripe/ios/StripeExample.xcodeproj/xcshareddata/xcschemes/StripeExample-tvOS.xcscheme +++ b/examples/native-next/ios/example.xcodeproj/xcshareddata/xcschemes/example-tvOS.xcscheme @@ -29,9 +29,9 @@ + BuildableName = "example-tvOS.app" + BlueprintName = "example-tvOS" + ReferencedContainer = "container:example.xcodeproj"> + BuildableName = "example-tvOSTests.xctest" + BlueprintName = "example-tvOSTests" + ReferencedContainer = "container:example.xcodeproj"> @@ -61,9 +61,9 @@ + BuildableName = "example-tvOSTests.xctest" + BlueprintName = "example-tvOSTests" + ReferencedContainer = "container:example.xcodeproj"> @@ -71,9 +71,9 @@ + BuildableName = "example-tvOS.app" + BlueprintName = "example-tvOS" + ReferencedContainer = "container:example.xcodeproj"> @@ -94,9 +94,9 @@ + BuildableName = "example-tvOS.app" + BlueprintName = "example-tvOS" + ReferencedContainer = "container:example.xcodeproj"> @@ -113,9 +113,9 @@ + BuildableName = "example-tvOS.app" + BlueprintName = "example-tvOS" + ReferencedContainer = "container:example.xcodeproj"> diff --git a/packages/react-native-payments/examples/stripe/ios/StripeExample.xcodeproj/xcshareddata/xcschemes/StripeExample.xcscheme b/examples/native-next/ios/example.xcodeproj/xcshareddata/xcschemes/example.xcscheme similarity index 79% rename from packages/react-native-payments/examples/stripe/ios/StripeExample.xcodeproj/xcshareddata/xcschemes/StripeExample.xcscheme rename to examples/native-next/ios/example.xcodeproj/xcshareddata/xcschemes/example.xcscheme index da7d32d7..eae95137 100644 --- a/packages/react-native-payments/examples/stripe/ios/StripeExample.xcodeproj/xcshareddata/xcschemes/StripeExample.xcscheme +++ b/examples/native-next/ios/example.xcodeproj/xcshareddata/xcschemes/example.xcscheme @@ -29,9 +29,9 @@ + BuildableName = "example.app" + BlueprintName = "example" + ReferencedContainer = "container:example.xcodeproj"> + BuildableName = "exampleTests.xctest" + BlueprintName = "exampleTests" + ReferencedContainer = "container:example.xcodeproj"> @@ -61,9 +61,9 @@ + BuildableName = "exampleTests.xctest" + BlueprintName = "exampleTests" + ReferencedContainer = "container:example.xcodeproj"> @@ -71,9 +71,9 @@ + BuildableName = "example.app" + BlueprintName = "example" + ReferencedContainer = "container:example.xcodeproj"> @@ -94,9 +94,9 @@ + BuildableName = "example.app" + BlueprintName = "example" + ReferencedContainer = "container:example.xcodeproj"> @@ -113,9 +113,9 @@ + BuildableName = "example.app" + BlueprintName = "example" + ReferencedContainer = "container:example.xcodeproj"> diff --git a/examples/native-next/ios/example/AppDelegate.h b/examples/native-next/ios/example/AppDelegate.h new file mode 100644 index 00000000..d4f2580b --- /dev/null +++ b/examples/native-next/ios/example/AppDelegate.h @@ -0,0 +1,14 @@ +/** + * Copyright (c) 2015-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import + +@interface AppDelegate : UIResponder + +@property (nonatomic, strong) UIWindow *window; + +@end diff --git a/packages/react-native-payments/examples/stripe/ios/StripeExample/AppDelegate.m b/examples/native-next/ios/example/AppDelegate.m similarity index 76% rename from packages/react-native-payments/examples/stripe/ios/StripeExample/AppDelegate.m rename to examples/native-next/ios/example/AppDelegate.m index 8853cd2c..eba94f35 100644 --- a/packages/react-native-payments/examples/stripe/ios/StripeExample/AppDelegate.m +++ b/examples/native-next/ios/example/AppDelegate.m @@ -1,10 +1,8 @@ /** * Copyright (c) 2015-present, Facebook, Inc. - * All rights reserved. * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. */ #import "AppDelegate.h" @@ -18,10 +16,10 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:( { NSURL *jsCodeLocation; - jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index.ios" fallbackResource:nil]; + jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil]; RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation - moduleName:@"StripeExample" + moduleName:@"example" initialProperties:nil launchOptions:launchOptions]; rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1]; diff --git a/packages/react-native-payments/examples/stripe/ios/StripeExample/Base.lproj/LaunchScreen.xib b/examples/native-next/ios/example/Base.lproj/LaunchScreen.xib similarity index 93% rename from packages/react-native-payments/examples/stripe/ios/StripeExample/Base.lproj/LaunchScreen.xib rename to examples/native-next/ios/example/Base.lproj/LaunchScreen.xib index da4f371b..9e04807a 100644 --- a/packages/react-native-payments/examples/stripe/ios/StripeExample/Base.lproj/LaunchScreen.xib +++ b/examples/native-next/ios/example/Base.lproj/LaunchScreen.xib @@ -18,7 +18,7 @@ -