react-native-unit-components
Version:
Unit React Native components
40 lines (35 loc) • 1.85 kB
text/typescript
import { DISPATCH_PLAID_RESPONSE, LISTENERS } from './../../scripts/html/bodyScript';
import type { UNACHDebitComponentProps } from './UNACHDebitComponent';
import type WebView from 'react-native-webview';
import type { LinkSuccess } from 'react-native-plaid-link-sdk';
export const getACHDebitParams = (props: UNACHDebitComponentProps) => {
const plaidAccountFiltersParam = props.plaidAccountFilters ? `plaid-account-filters="${props.plaidAccountFilters.join()}"` : '';
const plaidLinkCustomizationNameParam = props.plaidLinkCustomizationName ? `plaid-link-customization-name="${props.plaidLinkCustomizationName}"` : '';
const accountIdParam = props.accountId ? `account-id="${props.accountId}"` : '';
return `
${accountIdParam}
is-auto-focus="${props.isAutoFocus ?? false}"
${props.fee ? `fee="${props.fee}"` : ''}
style="height: 100%"
same-day="${props.sameDay ?? false}"
${plaidAccountFiltersParam}
${plaidLinkCustomizationNameParam}
initial-stage-back-button="${props.initialStageBackButton ?? false}"
final-stage-done-button="${props.finalStageDoneButton ?? false}"
`;
};
export const getACHDebitScript = (androidPackageName?: string) => {
return `
${LISTENERS.unitPlaidTokenCreated}
${androidPackageName && `window.UnitMobileSDKConfig.androidPackageName='${androidPackageName}'`}
${LISTENERS.unitPaymentCreated}
${LISTENERS.unitPaymentInitialStageBackButtonClicked}
${LISTENERS.unitPaymentFinalStageDoneButtonClicked}
${DISPATCH_PLAID_RESPONSE}
${LISTENERS.requestRefresh}
`;
};
export const injectUnitPlaidResponse = (currentWeb: WebView | null, success: LinkSuccess) => {
const successObj = { data: { publicToken: success.publicToken, metadata: success.metadata } };
currentWeb?.injectJavaScript(`dispatchPlaidEvent(${JSON.stringify(successObj)})`);
};