react-native-plaid-link-sdk
Version:
React Native Plaid Link SDK (New Architecture & Expo)
82 lines • 3.07 kB
JavaScript
import { Platform } from "react-native";
import { FinanceKitSyncBehavior, } from "./ReactNativePlaidLinkSdk.types";
import NativePlaidModule from "./ReactNativePlaidLinkSdkModule";
let successSub = null;
let exitSub = null;
let eventSub = null;
function cleanupListeners() {
successSub?.remove();
exitSub?.remove();
eventSub?.remove();
successSub = null;
exitSub = null;
eventSub = null;
}
export async function createPlaidLinkSession(config) {
cleanupListeners();
successSub = NativePlaidModule.addListener("PlaidLink.onSuccess", (success) => {
config.onSuccess(success);
cleanupListeners();
});
exitSub = NativePlaidModule.addListener("PlaidLink.onExit", (exit) => {
config.onExit(exit);
cleanupListeners();
});
eventSub = NativePlaidModule.addListener("PlaidLink.onEvent", (event) => {
config.onEvent(event);
});
await NativePlaidModule.createPlaidLinkSession(config.token);
return {
open: (fullScreen = false) => NativePlaidModule.openLinkSession(fullScreen),
};
}
export async function createPlaidLayerSession(config) {
cleanupListeners();
successSub = NativePlaidModule.addListener("PlaidLink.onSuccess", (success) => {
config.onSuccess(success);
cleanupListeners();
});
exitSub = NativePlaidModule.addListener("PlaidLink.onExit", (exit) => {
config.onExit?.(exit);
cleanupListeners();
});
eventSub = NativePlaidModule.addListener("PlaidLink.onEvent", (event) => {
config.onEvent?.(event);
});
await NativePlaidModule.createPlaidLayerSession(config.token);
return {
open: () => NativePlaidModule.openLayerSession(),
submit: (data) => NativePlaidModule.submitLayerData(data.phoneNumber, data.dateOfBirth, data.params),
};
}
export async function createPlaidHeadlessSession(config) {
cleanupListeners();
successSub = NativePlaidModule.addListener("PlaidLink.onSuccess", (success) => {
config.onSuccess(success);
cleanupListeners();
});
exitSub = NativePlaidModule.addListener("PlaidLink.onExit", (exit) => {
config.onExit(exit);
cleanupListeners();
});
eventSub = NativePlaidModule.addListener("PlaidLink.onEvent", (event) => {
config.onEvent(event);
});
await NativePlaidModule.createPlaidHeadlessSession(config.token);
if (config.onLoad) {
config.onLoad();
}
return {
start: () => NativePlaidModule.startHeadlessSession(),
};
}
export async function syncFinanceKit(config) {
if (Platform.OS === "android") {
throw new Error("FinanceKit is only available on iOS");
}
await NativePlaidModule.syncFinanceKit(config.token, config.requestAuthorizationIfNeeded ?? true, config.syncBehavior ?? FinanceKitSyncBehavior.LIVE);
}
export { PlaidEmbeddedSearchView, } from "./PlaidEmbeddedSearchView";
export { default } from "./ReactNativePlaidLinkSdkModule";
export * from "./ReactNativePlaidLinkSdk.types";
//# sourceMappingURL=index.js.map