diff --git a/CHANGELOG.md b/CHANGELOG.md index 8a1fb085..b86bc0de 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,51 @@ # RELEASES +## LinkKit V11.11.0 — 2024-06-26 + +### React Native + +#### Requirements + +This SDK now works with any supported version of React Native. + +#### Changes + +- Update Android SDK to 4.5.0. +- Update iOS SDK to 5.6.0. +- Add submit API. + +### Android + +Android SDK [4.5.0](https://github.com/plaid/plaid-link-android/releases/tag/v4.5.0) + +#### Changes +- Add PROFILE_DATA_REVIEW event view name. +- Add LAYER_READY and LAYER_NOT_AVAILABLE event names. +- Add submit API to the LinkHandler. + +#### Requirements + +| Name | Version | +|------|---------| +| Android Studio | 4.0+ | +| Kotlin | 1.8+ | + +### iOS + +iOS SDK [5.6.0](https://github.com/plaid/plaid-link-ios/releases/tag/5.6.0) + +#### Changes + +- Add submit API for Layer. +- Improved Remember Me Experience + +#### Requirements + +| Name | Version | +|------|---------| +| Xcode | >= 15.0.1 | +| iOS | >= 14.0 | + ## LinkKit V11.10.3 — 2024-06-04 ### React Native diff --git a/README.md b/README.md index 1e30e8d5..e2ef85ad 100644 --- a/README.md +++ b/README.md @@ -179,6 +179,7 @@ While these older versions are expected to continue to work without disruption, | Plaid SDK Version | Min React Native Version | Android SDK | Android Min Version | Android Compile Version| iOS SDK | iOS Min Version | Status | |-------------------|--------------------------|-------------|---------------------|------------------------|---------|-----------------|-------------------------------| +| 11.11.0 | * | [4.5.0+] | 21 | 34 | >=5.6.0 | 14.0 | Active, supports Xcode 15.0.1 | | 11.10.3 | * | [4.4.2+] | 21 | 34 | >=5.5.1 | 14.0 | Active, supports Xcode 15.0.1 | | 11.10.2 | * | [4.3.1+] | 21 | 34 | >=5.5.1 | 14.0 | Active, supports Xcode 15.0.1 | | 11.10.1 | * | [4.3.1+] | 21 | 34 | >=5.5.0 | 14.0 | Active, supports Xcode 15.0.1 | diff --git a/android/build.gradle b/android/build.gradle index 9a6b1941..ab17788e 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -63,7 +63,7 @@ android { compileSdkVersion 31 defaultConfig { - minSdkVersion rootProject.ext.safeExtGet("minSdkVersion", 21) + minSdkVersion rootProject.ext.has("minSdkVersion") ? rootProject.ext.minSdkVersion : 21 targetSdkVersion 31 versionCode 1 versionName "0.0.1" @@ -106,7 +106,7 @@ repositories { dependencies { implementation "com.facebook.react:react-native:+" - implementation "com.plaid.link:sdk-core:4.4.2" + implementation "com.plaid.link:sdk-core:4.5.0" implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" implementation "com.jakewharton.rxrelay2:rxrelay:2.1.1" } diff --git a/android/src/main/AndroidManifest.xml b/android/src/main/AndroidManifest.xml index 8cd8031f..48f30d73 100644 --- a/android/src/main/AndroidManifest.xml +++ b/android/src/main/AndroidManifest.xml @@ -4,7 +4,7 @@ + android:value="11.11.0" /> diff --git a/android/src/main/java/com/plaid/PlaidModule.kt b/android/src/main/java/com/plaid/PlaidModule.kt index b87bf503..bd8b2f4b 100644 --- a/android/src/main/java/com/plaid/PlaidModule.kt +++ b/android/src/main/java/com/plaid/PlaidModule.kt @@ -19,6 +19,7 @@ import com.plaid.link.configuration.LinkTokenConfiguration import com.plaid.link.event.LinkEvent import com.plaid.link.exception.LinkException import com.plaid.link.result.LinkResultHandler +import com.plaid.link.SubmissionData import org.json.JSONException import org.json.JSONObject @@ -76,6 +77,14 @@ class PlaidModule internal constructor(reactContext: ReactApplicationContext) : return builder.build() } + @ReactMethod + override fun submit(phoneNumber: String?) { + if (plaidHandler != null) { + val submissionData = SubmissionData(phoneNumber = phoneNumber) + plaidHandler?.submit(submissionData) + } + } + @ReactMethod override fun create( token: String, diff --git a/android/src/paper/java/com/plaid/NativePlaidLinkModuleAndroidSpec.java b/android/src/paper/java/com/plaid/NativePlaidLinkModuleAndroidSpec.java index bbd7e4c1..cb8a6d3c 100644 --- a/android/src/paper/java/com/plaid/NativePlaidLinkModuleAndroidSpec.java +++ b/android/src/paper/java/com/plaid/NativePlaidLinkModuleAndroidSpec.java @@ -44,6 +44,10 @@ public NativePlaidLinkModuleAndroidSpec(ReactApplicationContext reactContext) { @DoNotStrip public abstract void startLinkActivityForResult(String token, boolean noLoadingState, String logLevel, Callback onSuccessCallback, Callback onExitCallback); + @ReactMethod + @DoNotStrip + public abstract void submit(String phoneNumber); + @ReactMethod @DoNotStrip public abstract void addListener(String eventName); diff --git a/android/src/paper/java/com/plaid/NativePlaidLinkModuleiOSSpec.java b/android/src/paper/java/com/plaid/NativePlaidLinkModuleiOSSpec.java index 0ac48f9d..b893aaf6 100644 --- a/android/src/paper/java/com/plaid/NativePlaidLinkModuleiOSSpec.java +++ b/android/src/paper/java/com/plaid/NativePlaidLinkModuleiOSSpec.java @@ -44,6 +44,10 @@ public NativePlaidLinkModuleiOSSpec(ReactApplicationContext reactContext) { @DoNotStrip public abstract void dismiss(); + @ReactMethod + @DoNotStrip + public abstract void submit(String phoneNumber); + @ReactMethod @DoNotStrip public abstract void addListener(String eventName); diff --git a/example/ios/Podfile.lock b/example/ios/Podfile.lock index 158e7cc6..f4ffd53b 100644 --- a/example/ios/Podfile.lock +++ b/example/ios/Podfile.lock @@ -945,7 +945,7 @@ PODS: - React-Mapbuffer (0.73.6): - glog - React-debug - - react-native-plaid-link-sdk (11.10.2): + - react-native-plaid-link-sdk (11.10.3): - Plaid (~> 5.5.1) - React-Core - react-native-safe-area-context (4.9.0): @@ -1372,7 +1372,7 @@ SPEC CHECKSUMS: React-jsinspector: 85583ef014ce53d731a98c66a0e24496f7a83066 React-logger: 3eb80a977f0d9669468ef641a5e1fabbc50a09ec React-Mapbuffer: 84ea43c6c6232049135b1550b8c60b2faac19fab - react-native-plaid-link-sdk: c2189fa607db61658773399ceceb411cbfc56063 + react-native-plaid-link-sdk: 24a9dc17b081a8a4469d478af87f286c11cd8ea1 react-native-safe-area-context: b97eb6f9e3b7f437806c2ce5983f479f8eb5de4b React-nativeconfig: b4d4e9901d4cabb57be63053fd2aa6086eb3c85f React-NativeModulesApple: cd26e56d56350e123da0c1e3e4c76cb58a05e1ee diff --git a/example/package-lock.json b/example/package-lock.json index 1a6c1de9..cdff7051 100644 --- a/example/package-lock.json +++ b/example/package-lock.json @@ -14,7 +14,7 @@ "react": "18.2.0", "react-native": "0.73.6", "react-native-gesture-handler": "^2.12.1", - "react-native-plaid-link-sdk": "^11.10.3", + "react-native-plaid-link-sdk": "file:.yalc/react-native-plaid-link-sdk", "react-native-safe-area-context": "^4.9.0", "react-native-screens": "^3.29.0" }, @@ -39,6 +39,14 @@ "node": ">=18" } }, + ".yalc/react-native-plaid-link-sdk": { + "version": "11.11.0", + "license": "MIT", + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, "node_modules/@aashutoshrathi/word-wrap": { "version": "1.2.6", "dev": true, @@ -11142,14 +11150,8 @@ } }, "node_modules/react-native-plaid-link-sdk": { - "version": "11.10.3", - "resolved": "https://registry.npmjs.org/react-native-plaid-link-sdk/-/react-native-plaid-link-sdk-11.10.3.tgz", - "integrity": "sha512-cklgvgs5p4yxIrP6vEgFegNEP9lSPasAcErS5pZVZs5oOw7VudW4GcHvYUabG6YO4vY2fq8EBKGiNDxCu97Pyw==", - "license": "MIT", - "peerDependencies": { - "react": "*", - "react-native": "*" - } + "resolved": ".yalc/react-native-plaid-link-sdk", + "link": true }, "node_modules/react-native-safe-area-context": { "version": "4.9.0", diff --git a/example/src/Screens/PlaidLinkScreen.tsx b/example/src/Screens/PlaidLinkScreen.tsx index a85c7a70..ff49cec3 100644 --- a/example/src/Screens/PlaidLinkScreen.tsx +++ b/example/src/Screens/PlaidLinkScreen.tsx @@ -14,7 +14,7 @@ import { LinkTokenConfiguration, } from 'react-native-plaid-link-sdk'; -import {create, open} from 'react-native-plaid-link-sdk/dist/PlaidLink'; +import {create, open} from 'react-native-plaid-link-sdk'; function isValidString(str: string): boolean { if (str && str.trim() !== '') { diff --git a/ios/RNLinksdk.mm b/ios/RNLinksdk.mm index 59122c69..389bb28b 100644 --- a/ios/RNLinksdk.mm +++ b/ios/RNLinksdk.mm @@ -28,7 +28,7 @@ @implementation RNLinksdk RCT_EXPORT_MODULE(); + (NSString*)sdkVersion { - return @"11.10.3"; // SDK_VERSION + return @"11.11.0"; // SDK_VERSION } + (NSString*)objCBridgeVersion { @@ -181,6 +181,14 @@ - (void)stopObserving { self.presentingViewController = nil; } +RCT_EXPORT_METHOD(submit:(NSString * _Nullable)phoneNumber) { + if (self.linkHandler) { + PLKSubmissionData *submissionData = [[PLKSubmissionData alloc] init]; + submissionData.phoneNumber = phoneNumber; + [self.linkHandler submit: submissionData]; + } +} + #pragma mark - Bridging + (PLKEnvironment)environmentFromString:(NSString *)string { @@ -473,6 +481,10 @@ + (NSString *)stringForEventName:(PLKEventName *)eventName { return @"CONNECT_NEW_INSTITUTION"; case PLKEventNameValueSubmitOTP: return @"SUBMIT_OTP"; + case PLKEventNameValueLayerReady: + return @"LAYER_READY"; + case PLKEventNameValueLayerNotAvailable: + return @"LAYER_NOT_AVAILABLE"; } return @"unknown"; } @@ -618,6 +630,8 @@ + (NSString *)stringForViewName:(PLKViewName *)viewName { return @"SELECT_SAVED_INSTITUTION"; case PLKViewNameValueSelectSavedAccount: return @"SELECT_SAVED_ACCOUNT"; + case PLKViewNameValueProfileDataReview: + return @"PROFILE_DATA_REVIEW"; } return @"unknown"; diff --git a/package.json b/package.json index 43b77f23..b4109672 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "react-native-plaid-link-sdk", - "version": "11.10.3", + "version": "11.11.0", "description": "React Native Plaid Link SDK", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/react-native-plaid-link-sdk.podspec b/react-native-plaid-link-sdk.podspec index 5a540e7c..7c60081d 100644 --- a/react-native-plaid-link-sdk.podspec +++ b/react-native-plaid-link-sdk.podspec @@ -28,5 +28,5 @@ Pod::Spec.new do |s| end s.dependency 'React-Core' - s.dependency 'Plaid', '~> 5.5.1' + s.dependency 'Plaid', '~> 5.6.0' end diff --git a/src/PlaidLink.tsx b/src/PlaidLink.tsx index d84f0d29..7b4d1d93 100644 --- a/src/PlaidLink.tsx +++ b/src/PlaidLink.tsx @@ -11,6 +11,7 @@ import { LinkTokenConfiguration, PlaidLinkComponentProps, PlaidLinkProps, + SubmissionData, } from './Types'; import RNLinksdkAndroid from './fabric/NativePlaidLinkModuleAndroid'; import RNLinksdkiOS from './fabric/NativePlaidLinkModuleiOS'; @@ -100,6 +101,14 @@ export const dismissLink = () => { } }; +export const submit = (data: SubmissionData): void => { + if (Platform.OS === 'android') { + RNLinksdkAndroid?.submit(data.phoneNumber); + } else { + RNLinksdkiOS?.submit(data.phoneNumber); + } +}; + /** * @deprecated This component is deprecated. Create your own component and use the create & open methods. */ diff --git a/src/Types.ts b/src/Types.ts index 6949118b..5fd7fe54 100644 --- a/src/Types.ts +++ b/src/Types.ts @@ -557,3 +557,7 @@ export interface LinkOpenProps { export type PlaidLinkComponentProps = (PlaidLinkProps & { children: React.ReactNode }); + +export interface SubmissionData { + phoneNumber?: string; +}; diff --git a/src/fabric/NativePlaidLinkModuleAndroid.ts b/src/fabric/NativePlaidLinkModuleAndroid.ts index ee34716c..1f912b94 100644 --- a/src/fabric/NativePlaidLinkModuleAndroid.ts +++ b/src/fabric/NativePlaidLinkModuleAndroid.ts @@ -18,6 +18,7 @@ export interface Spec extends TurboModule { onSuccessCallback: (result: UnsafeObject) => void, onExitCallback: (result: UnsafeObject) => void ): void; + submit(phoneNumber: string | undefined): void; // those two are here for event emitter methods addListener(eventName: string): void; removeListeners(count: Double): void; diff --git a/src/fabric/NativePlaidLinkModuleiOS.ts b/src/fabric/NativePlaidLinkModuleiOS.ts index 86bf4016..44e3a522 100644 --- a/src/fabric/NativePlaidLinkModuleiOS.ts +++ b/src/fabric/NativePlaidLinkModuleiOS.ts @@ -13,6 +13,7 @@ export interface Spec extends TurboModule { onExit: (error: UnsafeObject, result: UnsafeObject) => void, ): void; dismiss(): void; + submit(phoneNumber: string | undefined): void; // those two are here for event emitter methods addListener(eventName: string): void; removeListeners(count: Int32): void; diff --git a/src/index.ts b/src/index.ts index 71f554ba..5618728d 100644 --- a/src/index.ts +++ b/src/index.ts @@ -5,6 +5,7 @@ import { dismissLink, usePlaidEmitter, PlaidLink, + submit, } from './PlaidLink'; export * from './Types'; @@ -18,6 +19,7 @@ export { open, dismissLink, usePlaidEmitter, + submit, }; // Components