UNPKG

react-native-plaid-link-sdk

Version:

React Native Plaid Link SDK (New Architecture & Expo)

82 lines 3.07 kB
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