@transferwise/approve-api-action-helpers
Version:
An http client that handles SCA protected requests gracefully
37 lines (31 loc) • 924 B
JavaScript
import { APPROVAL_PAGE_URL_PRODUCTION, APPROVAL_PAGE_URL_SANDBOX } from './config';
import { iframeFlow } from './iframeFlow';
import { popupFlow } from './popupFlow';
import { tabFlow } from './tabFlow';
export const Flow = {
IFRAME: 'iframe',
TAB: 'tab',
POPUP: 'popup',
};
export const Mode = {
PRODUCTION: 'production',
SANDBOX: 'sandbox',
};
const FLOW_STARTERS = {
[Flow.IFRAME]: iframeFlow,
[Flow.TAB]: tabFlow,
[Flow.POPUP]: popupFlow,
};
const getApprovalPageUrlFromMode = (mode) =>
mode === Mode.SANDBOX ? APPROVAL_PAGE_URL_SANDBOX : APPROVAL_PAGE_URL_PRODUCTION;
export function runFlow({ token, flow = Flow.IFRAME, mode = Mode.PRODUCTION, approvalPageUrl }) {
return new Promise((resolve, reject) => {
const props = {
token,
approvalPageUrl: approvalPageUrl || getApprovalPageUrlFromMode(mode),
resolve,
reject,
};
FLOW_STARTERS[flow](props);
});
}