From 1d58c83fcaae6506a0421723cb566156b07e3c83 Mon Sep 17 00:00:00 2001
From: OSBotify <76178356+OSBotify@users.noreply.github.com>
Date: Mon, 22 Nov 2021 12:07:21 -0800
Subject: [PATCH 1/2] Merge pull request #6404 from
Expensify/version-BUILD-1a8b4fa770e81497add0f25ec7367410d44e0f8d
(cherry picked from commit f641e6e6bedb36ad018b4d3d3f597e00bcf013db)
---
android/app/build.gradle | 4 ++--
ios/NewExpensify/Info.plist | 2 +-
ios/NewExpensifyTests/Info.plist | 2 +-
package-lock.json | 2 +-
package.json | 2 +-
5 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/android/app/build.gradle b/android/app/build.gradle
index 1583cbc83d3a..d18c562eb9c5 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -149,8 +149,8 @@ android {
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
multiDexEnabled rootProject.ext.multiDexEnabled
- versionCode 1001011520
- versionName "1.1.15-20"
+ versionCode 1001011521
+ versionName "1.1.15-21"
}
splits {
abi {
diff --git a/ios/NewExpensify/Info.plist b/ios/NewExpensify/Info.plist
index c5f59e7d756e..16dfaeb94a13 100644
--- a/ios/NewExpensify/Info.plist
+++ b/ios/NewExpensify/Info.plist
@@ -31,7 +31,7 @@
CFBundleVersion
- 1.1.15.20
+ 1.1.15.21
ITSAppUsesNonExemptEncryption
LSApplicationQueriesSchemes
diff --git a/ios/NewExpensifyTests/Info.plist b/ios/NewExpensifyTests/Info.plist
index 3dc3b63f51fb..3e2fb07e1a61 100644
--- a/ios/NewExpensifyTests/Info.plist
+++ b/ios/NewExpensifyTests/Info.plist
@@ -19,6 +19,6 @@
CFBundleSignature
????
CFBundleVersion
- 1.1.15.20
+ 1.1.15.21
diff --git a/package-lock.json b/package-lock.json
index 9d4ec48baa20..5c903b51f940 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,6 +1,6 @@
{
"name": "new.expensify",
- "version": "1.1.15-20",
+ "version": "1.1.15-21",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
diff --git a/package.json b/package.json
index 216d762603a1..f5981593166e 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "new.expensify",
- "version": "1.1.15-20",
+ "version": "1.1.15-21",
"author": "Expensify, Inc.",
"homepage": "https://new.expensify.com",
"description": "New Expensify is the next generation of Expensify: a reimagination of payments based atop a foundation of chat.",
From ae4dac79ac96abd6e125f7f18ea7f8dde7984b8b Mon Sep 17 00:00:00 2001
From: Marc Glasser
Date: Mon, 22 Nov 2021 15:04:47 -0500
Subject: [PATCH 2/2] Merge pull request #6362 from
Expensify/amal-plaid-link-update
Update Plaid Link Component
(cherry picked from commit 1a8b4fa770e81497add0f25ec7367410d44e0f8d)
---
ios/NewExpensify.xcodeproj/project.pbxproj | 8 +--
ios/Podfile.lock | 40 +++++++--------
src/components/PlaidLink/index.native.js | 58 +++++++---------------
3 files changed, 42 insertions(+), 64 deletions(-)
diff --git a/ios/NewExpensify.xcodeproj/project.pbxproj b/ios/NewExpensify.xcodeproj/project.pbxproj
index b5c08101945e..7800d5330a75 100644
--- a/ios/NewExpensify.xcodeproj/project.pbxproj
+++ b/ios/NewExpensify.xcodeproj/project.pbxproj
@@ -533,8 +533,8 @@
"${PODS_ROOT}/Target Support Files/Pods-NewExpensify/Pods-NewExpensify-frameworks.sh",
"${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/iphoneos/hermes.framework",
"${PODS_XCFRAMEWORKS_BUILD_DIR}/Onfido/Onfido.framework/Onfido",
- "${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL/OpenSSL.framework/OpenSSL",
- "${PODS_XCFRAMEWORKS_BUILD_DIR}/LinkKit/LinkKit.framework/LinkKit",
+ "${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL-Universal/OpenSSL.framework/OpenSSL",
+ "${PODS_XCFRAMEWORKS_BUILD_DIR}/Plaid/LinkKit.framework/LinkKit",
);
name = "[CP] Embed Pods Frameworks";
outputPaths = (
@@ -720,8 +720,8 @@
"${PODS_ROOT}/Target Support Files/Pods-NewExpensify-NewExpensifyTests/Pods-NewExpensify-NewExpensifyTests-frameworks.sh",
"${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/iphoneos/hermes.framework",
"${PODS_XCFRAMEWORKS_BUILD_DIR}/Onfido/Onfido.framework/Onfido",
- "${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL/OpenSSL.framework/OpenSSL",
- "${PODS_XCFRAMEWORKS_BUILD_DIR}/LinkKit/LinkKit.framework/LinkKit",
+ "${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL-Universal/OpenSSL.framework/OpenSSL",
+ "${PODS_XCFRAMEWORKS_BUILD_DIR}/Plaid/LinkKit.framework/LinkKit",
);
name = "[CP] Embed Pods Frameworks";
outputPaths = (
diff --git a/ios/Podfile.lock b/ios/Podfile.lock
index 2de3f0c42153..39f38e7206ee 100644
--- a/ios/Podfile.lock
+++ b/ios/Podfile.lock
@@ -825,7 +825,7 @@ SPEC CHECKSUMS:
CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99
DoubleConversion: cf9b38bf0b2d048436d9a82ad2abe1404f11e7de
FBLazyVector: 7b423f9e248eae65987838148c36eec1dbfe0b53
- FBReactNativeSpec: e6c5eb078317f6a15612c7e3b4d410c4d01bb703
+ FBReactNativeSpec: 1d564cbdef3e1546843d1f1ceb0e4463b7993e3a
Firebase: 54cdc8bc9c9b3de54f43dab86e62f5a76b47034f
FirebaseABTesting: c3e48ebf5e7e5c674c5a131c68e941d7921d83dc
FirebaseAnalytics: 4751d6a49598a2b58da678cc07df696bcd809ab9
@@ -840,7 +840,7 @@ SPEC CHECKSUMS:
Flipper-Folly: 755929a4f851b2fb2c347d533a23f191b008554c
Flipper-Glog: 1dfd6abf1e922806c52ceb8701a3599a79a200a6
Flipper-PeerTalk: 116d8f857dc6ef55c7a5a75ea3ceaafe878aadc9
- flipper-plugin-react-native-performance: 82e0d9bf8f330d2e256ff018978e2a19b86fec17
+ flipper-plugin-react-native-performance: c639bbaf0e0444bab8eeb86dad93651c2e13291e
Flipper-RSocket: 127954abe8b162fcaf68d2134d34dc2bd7076154
FlipperKit: 8a20b5c5fcf9436cac58551dc049867247f64b00
glog: 73c2498ac6884b13ede40eda8228cb1eee9d9d62
@@ -853,9 +853,9 @@ SPEC CHECKSUMS:
Onfido: 116a268e4cb8b767c15285e8071c2e8304673cdf
onfido-react-native-sdk: b8f1b7cbe1adab6479d735275772390161630dcd
OpenSSL-Universal: 1aa4f6a6ee7256b83db99ec1ccdaa80d10f9af9b
- Permission-LocationAccuracy: 76669f87b4c276f5ae803cc0ddd1862a4c0e9dd8
- Permission-LocationAlways: a274bc04bb386068782468dbdaca3859f51634ca
- Permission-LocationWhenInUse: 3a2b0dbc167d79e8e920a4377ff9520cdc108407
+ Permission-LocationAccuracy: e8adff9ede1b23b43b7054a4500113d515fc87a8
+ Permission-LocationAlways: 7f7f373d086af7a81b2f4f20d65d29266ca2043b
+ Permission-LocationWhenInUse: 3ae82a9feb5da4e94e386dba17c7dd3531af9feb
Plaid: 3485574bd01075562d969a2d9384cde1ed7d9252
PromisesObjC: 68159ce6952d93e17b2dfe273b8c40907db5ba58
Protobuf: 7327d4444215b5f18e560a97f879ff5503c4581c
@@ -871,16 +871,16 @@ SPEC CHECKSUMS:
React-jsiexecutor: 124e8f99992490d0d13e0649d950d3e1aae06fe9
React-jsinspector: 500a59626037be5b3b3d89c5151bc3baa9abf1a9
react-native-config: d8b45133fd13d4f23bd2064b72f6e2c08b2763ed
- react-native-document-picker: f2f73db94328c84e22144e369fb4a3ede47bc1f5
+ react-native-document-picker: 0e3602a4064da040321bafad6848d8b0edcb1d55
react-native-flipper: 169e8ba429b73ad637ce007337ce4b415e783799
- react-native-image-picker: 474cf2c33c2b6671da53d293a16c97995f0aec15
- react-native-netinfo: 30fb89fa913c342be82a887b56e96be6d71201dd
+ react-native-image-picker: 4089335b89b625d4e34d53fb249c48a7a791b3ea
+ react-native-netinfo: 52cf0ee8342548a485e28f4b09e56b477567244d
react-native-pdf: 4b5a9e4465a6a3b399e91dc4838eb44ddf716d1f
- react-native-performance: 6bd6cfac80594775fb782405fceaaf206becf53b
- react-native-plaid-link-sdk: 0b2e16d091abfee30ba01cf37734182ad610f917
- react-native-progress-bar-android: be43138ab7da30d51fc038bafa98e9ed594d0c40
- react-native-progress-view: 21b1e29e70c7559c16c9e0a04c4adc19fce6ede2
- react-native-safe-area-context: 79fea126c6830c85f65947c223a5e3058a666937
+ react-native-performance: 8edfa2bbc9a2af4a02f01d342118e413a95145e0
+ react-native-plaid-link-sdk: dcc247a441571b6e0b9029ab00a30f82e4cfa906
+ react-native-progress-bar-android: ce95a69f11ac580799021633071368d08aaf9ad8
+ react-native-progress-view: 5816e8a6be812c2b122c6225a2a3db82d9008640
+ react-native-safe-area-context: 01158a92c300895d79dee447e980672dc3fb85a6
React-perflogger: aad6d4b4a267936b3667260d1f649b6f6069a675
React-RCTActionSheet: fc376be462c9c8d6ad82c0905442fd77f82a9d2a
React-RCTAnimation: ba0a1c3a2738be224a08092fa7f1b444ab77d309
@@ -894,23 +894,23 @@ SPEC CHECKSUMS:
React-runtimeexecutor: ff951a0c241bfaefc4940a3f1f1a229e7cb32fa6
ReactCommon: bedc99ed4dae329c4fcf128d0c31b9115e5365ca
rn-fetch-blob: f065bb7ab7fb48dd002629f8bdcb0336602d3cba
- RNBootSplash: 24175aa28fe203b10c48dc34e78d946fd33c77af
- RNCAsyncStorage: 56a3355a10b5d660c48c6e37325ac85ebfd09885
- RNCClipboard: 41d8d918092ae8e676f18adada19104fa3e68495
- RNCMaskedView: fc29d354a40316a990e8fb46391f08aea829c3aa
+ RNBootSplash: 3123ba68fe44d8be09a014e89cc8f0f55b68a521
+ RNCAsyncStorage: 8324611026e8dc3706f829953aa6e3899f581589
+ RNCClipboard: 5e299c6df8e0c98f3d7416b86ae563d3a9f768a3
+ RNCMaskedView: 138134c4d8a9421b4f2bf39055a79aa05c2d47b1
RNCPicker: 6780c753e9e674065db90d9c965920516402579d
- RNDateTimePicker: 7658208086d86d09e1627b5c34ba0cf237c60140
+ RNDateTimePicker: c9911be59b1f8670b9f244b85af3a7c295e175ed
RNFBAnalytics: 8ba84c2d31c64374d054c8621b998f25145ffddc
RNFBApp: 64c90ab78b6010ed5c3ade026dfe5ff6442c21fd
RNFBCrashlytics: 1de18b8cc36d9bcf86407c4a354399228cc84a61
RNFBPerf: e3a7269f573a4787810a32de51647cdcbe08dfb4
RNGestureHandler: 9b7e605a741412e20e13c512738a31bd1611759b
- RNPermissions: 4c8a37b4dde50f1f152bf8cd08c4a43d2355829e
+ RNPermissions: eb94f9fdc0a8ecd02fcce0676d56ffb1395d41e1
RNReactNativeHapticFeedback: b83bfb4b537bdd78eb4f6ffe63c6884f7b049ead
RNReanimated: 833ebd229b31e18a8933ebd0cd744a0f47d88c42
RNScreens: e8e8dd0588b5da0ab57dcca76ab9b2d8987757e0
RNSVG: ce9d996113475209013317e48b05c21ee988d42e
- urbanairship-react-native: ee53526e1f81c5170863dd3e039df7f98730ef53
+ urbanairship-react-native: 60b4b4235838ff109a2639b639e2ef01d54ad455
Yoga: a7de31c64fe738607e7a3803e3f591a4b1df7393
YogaKit: f782866e155069a2cca2517aafea43200b01fd5a
diff --git a/src/components/PlaidLink/index.native.js b/src/components/PlaidLink/index.native.js
index bbc7edbd627c..3ca38dd09154 100644
--- a/src/components/PlaidLink/index.native.js
+++ b/src/components/PlaidLink/index.native.js
@@ -1,55 +1,33 @@
-import React from 'react';
-import {NativeEventEmitter} from 'react-native';
-import {openLink} from 'react-native-plaid-link-sdk';
+import {useEffect} from 'react';
+import {openLink, useDeepLinkRedirector, usePlaidEmitter} from 'react-native-plaid-link-sdk';
import Log from '../../libs/Log';
import CONST from '../../CONST';
-import nativeModule from './nativeModule';
import {plaidLinkPropTypes, plaidLinkDefaultProps} from './plaidLinkPropTypes';
-class PlaidLink extends React.Component {
- constructor(props) {
- super(props);
- this.listener = undefined;
- }
-
- componentDidMount() {
- const emitter = new NativeEventEmitter(nativeModule);
- this.listener = emitter.addListener('onEvent', this.onEvent.bind(this));
+const PlaidLink = (props) => {
+ useDeepLinkRedirector();
+ usePlaidEmitter((event) => {
+ Log.info('[PlaidLink] Handled Plaid Event: ', false, event);
+ if (event.eventName === CONST.PLAID.EVENT.ERROR) {
+ props.onError(event.metadata);
+ } else if (event.eventName === CONST.PLAID.EVENT.EXIT) {
+ props.onExit();
+ }
+ });
+ useEffect(() => {
openLink({
tokenConfig: {
- token: this.props.token,
+ token: props.token,
},
onSuccess: ({publicToken, metadata}) => {
- this.props.onSuccess({publicToken, metadata});
+ props.onSuccess({publicToken, metadata});
},
});
- }
-
- componentWillUnmount() {
- if (!this.listener) {
- return;
- }
-
- this.listener.remove();
- }
-
- /**
- * @param {*} event
- */
- onEvent(event) {
- Log.info('[PlaidLink] Handled Plaid Event: ', false, event);
- if (event.eventName === CONST.PLAID.EVENT.ERROR) {
- this.props.onError(event.metadata);
- } else if (event.eventName === CONST.PLAID.EVENT.EXIT) {
- this.props.onExit();
- }
- }
+ }, []);
- render() {
- return null;
- }
-}
+ return null;
+};
PlaidLink.propTypes = plaidLinkPropTypes;
PlaidLink.defaultProps = plaidLinkDefaultProps;