UNPKG

@transferwise/approve-api-action-helpers

Version:

An http client that handles SCA protected requests gracefully

37 lines (31 loc) 924 B
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); }); }