Skip to content

Commit bbc38fc

Browse files
Merge branch 'main' of github.com:Expensify/App
2 parents e25ee77 + cfff715 commit bbc38fc

116 files changed

Lines changed: 1746 additions & 761 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Mobile-Expensify

android/app/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,8 +111,8 @@ android {
111111
minSdkVersion rootProject.ext.minSdkVersion
112112
targetSdkVersion rootProject.ext.targetSdkVersion
113113
multiDexEnabled rootProject.ext.multiDexEnabled
114-
versionCode 1009036400
115-
versionName "9.3.64-0"
114+
versionCode 1009036405
115+
versionName "9.3.64-5"
116116
// Supported language variants must be declared here to avoid from being removed during the compilation.
117117
// This also helps us to not include unnecessary language variants in the APK.
118118
resConfigs "en", "es"

cspell.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -640,6 +640,7 @@
640640
"rideshare",
641641
"RNCORE",
642642
"RNFS",
643+
"RNLinksdk",
643644
"rnmapbox",
644645
"RNTL",
645646
"RNVP",

ios/NewExpensify/Info.plist

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
</dict>
4545
</array>
4646
<key>CFBundleVersion</key>
47-
<string>9.3.64.0</string>
47+
<string>9.3.64.5</string>
4848
<key>FullStory</key>
4949
<dict>
5050
<key>OrgId</key>

ios/NotificationServiceExtension/Info.plist

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
<key>CFBundleShortVersionString</key>
1414
<string>9.3.64</string>
1515
<key>CFBundleVersion</key>
16-
<string>9.3.64.0</string>
16+
<string>9.3.64.5</string>
1717
<key>NSExtension</key>
1818
<dict>
1919
<key>NSExtensionPointIdentifier</key>

ios/ShareViewController/Info.plist

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
<key>CFBundleShortVersionString</key>
1414
<string>9.3.64</string>
1515
<key>CFBundleVersion</key>
16-
<string>9.3.64.0</string>
16+
<string>9.3.64.5</string>
1717
<key>NSExtension</key>
1818
<dict>
1919
<key>NSExtensionAttributes</key>

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "new.expensify",
3-
"version": "9.3.64-0",
3+
"version": "9.3.64-5",
44
"author": "Expensify, Inc.",
55
"homepage": "https://new.expensify.com",
66
"description": "New Expensify is the next generation of Expensify: a reimagination of payments based atop a foundation of chat.",
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# `react-native-plaid-link-sdk` patches
2+
3+
### [react-native-plaid-link-sdk+12.5.3+001+fix-oauth-hybrid-app-ios.patch](react-native-plaid-link-sdk+12.5.3+001+fix-oauth-hybrid-app-ios.patch)
4+
5+
- Reason:
6+
7+
```
8+
Fixes Plaid OAuth getting stuck in a retry loop on HybridApp iOS (e.g.
9+
Banco Santander ES). HybridApp routes the bank's universal-link return
10+
through JS Linking, so LinkKit never sees the callback URL and re-fires
11+
OAuth after its internal timeout. The patch exposes [PLKHandler
12+
resumeAfterTermination:] to JS so we can forward the URL back into the SDK.
13+
14+
The patch:
15+
1. Adds RCT_EXPORT_METHOD(continueFromRedirectUri:) to RNLinksdk.mm.
16+
2. Tracks the active module via a static sSharedInstance, set when
17+
createPlaidLink succeeds and cleared on exit/handoff, so the
18+
forwarder can resolve the correct handler.
19+
3. Adds the matching continueFromRedirectUri Spec entry to
20+
src/fabric/NativePlaidLinkModuleiOS.ts (required on New Architecture
21+
so the TurboModule codegen exposes the method to JS).
22+
```
23+
24+
- Upstream PR/issue: -
25+
- E/App issue: https://github.com/Expensify/App/issues/87757
26+
- PR introducing patch: https://github.com/Expensify/App/pull/88534
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
diff --git a/node_modules/react-native-plaid-link-sdk/ios/RNLinksdk.mm b/node_modules/react-native-plaid-link-sdk/ios/RNLinksdk.mm
2+
index cca454e..a1b66d7 100644
3+
--- a/node_modules/react-native-plaid-link-sdk/ios/RNLinksdk.mm
4+
+++ b/node_modules/react-native-plaid-link-sdk/ios/RNLinksdk.mm
5+
@@ -12,6 +12,12 @@ static NSString* const kRNLinkKitEventNameKey = @"event";
6+
static NSString* const kRNLinkKitEventMetadataKey = @"metadata";
7+
static NSString* const kRNLinkKitVersionConstant = @"version";
8+
9+
+// Tracks the module instance whose linkHandler is currently active for OAuth.
10+
+// Set when createPlaidLink succeeds, cleared whenever linkHandler is nilled.
11+
+// Lets JS forward universal-link OAuth redirects back into the SDK via
12+
+// the RCT_EXPORT_METHOD continueFromRedirectUri: below.
13+
+static RNLinksdk *sSharedInstance = nil;
14+
+
15+
@interface RNLinksdk ()
16+
@property (nonatomic, strong) id<PLKHandler> linkHandler;
17+
@property (nonatomic, strong) UIViewController* presentingViewController;
18+
@@ -92,6 +98,9 @@ RCT_EXPORT_METHOD(createPlaidLink:(NSString*)token noLoadingState:(BOOL)noLoadin
19+
}
20+
strongSelf.exitCallback = nil;
21+
strongSelf.linkHandler = nil;
22+
+ if (sSharedInstance == strongSelf) {
23+
+ sSharedInstance = nil;
24+
+ }
25+
}
26+
};
27+
28+
@@ -108,6 +117,9 @@ RCT_EXPORT_METHOD(createPlaidLink:(NSString*)token noLoadingState:(BOOL)noLoadin
29+
if (strongSelf.presentingViewController == nil) {
30+
// Deallocate the handler it's no longer needed.
31+
strongSelf.linkHandler = nil;
32+
+ if (sSharedInstance == strongSelf) {
33+
+ sSharedInstance = nil;
34+
+ }
35+
}
36+
}
37+
}
38+
@@ -121,6 +133,9 @@ RCT_EXPORT_METHOD(createPlaidLink:(NSString*)token noLoadingState:(BOOL)noLoadin
39+
NSError *creationError = nil;
40+
self.linkHandler = [RNPlaidHelper createWithLinkTokenConfiguration:config error:&creationError];
41+
self.creationError = creationError;
42+
+ if (self.linkHandler) {
43+
+ sSharedInstance = self;
44+
+ }
45+
}
46+
47+
RCT_EXPORT_METHOD(open:(BOOL)fullScreen onSuccess:(RCTResponseSenderBlock)onSuccess onExit:(RCTResponseSenderBlock)onExit) {
48+
@@ -175,6 +190,15 @@ RCT_EXPORT_METHOD(open:(BOOL)fullScreen onSuccess:(RCTResponseSenderBlock)onSucc
49+
}
50+
}
51+
52+
+RCT_EXPORT_METHOD(continueFromRedirectUri:(NSString *)urlString) {
53+
+ NSURL *url = [NSURL URLWithString:urlString];
54+
+ RNLinksdk *instance = sSharedInstance;
55+
+ if (url == nil || instance == nil || instance.linkHandler == nil) {
56+
+ return;
57+
+ }
58+
+ [instance.linkHandler resumeAfterTermination:url];
59+
+}
60+
+
61+
RCT_EXPORT_METHOD(dismiss) {
62+
[self.presentingViewController dismissViewControllerAnimated:YES
63+
completion:nil];
64+
diff --git a/node_modules/react-native-plaid-link-sdk/src/fabric/NativePlaidLinkModuleiOS.ts b/node_modules/react-native-plaid-link-sdk/src/fabric/NativePlaidLinkModuleiOS.ts
65+
index a783aa9..a15e91f 100644
66+
--- a/node_modules/react-native-plaid-link-sdk/src/fabric/NativePlaidLinkModuleiOS.ts
67+
+++ b/node_modules/react-native-plaid-link-sdk/src/fabric/NativePlaidLinkModuleiOS.ts
68+
@@ -12,6 +12,7 @@ export interface Spec extends TurboModule {
69+
onSuccess: (result: UnsafeObject<LinkSuccess>) => void,
70+
onExit: (error: UnsafeObject<LinkError>, result: UnsafeObject<LinkExit>) => void,
71+
): void;
72+
+ continueFromRedirectUri(urlString: string): void;
73+
dismiss(): void;
74+
submit(
75+
phoneNumber: string | undefined,

0 commit comments

Comments
 (0)