Skip to content
Snippets Groups Projects
gocardless.js 1.04 KiB
import { send } from 'loot-core/src/platform/client/fetch';

function _authorize(pushModal, upgradingAccountId, { onSuccess, onClose }) {
  pushModal('gocardless-external-msg', {
    onMoveExternal: async ({ institutionId }) => {
      const accessValidForDays = 30;
      const resp = await send('gocardless-create-web-token', {
        upgradingAccountId,
        institutionId,
        accessValidForDays,
      });

      if (resp.error) return resp;
      const { link, requisitionId } = resp;
      window.Actual.openURLInBrowser(link);

      let { error, data } = await send('gocardless-poll-web-token', {
        upgradingAccountId,
        requisitionId,
      });

      return { error, data };
    },

    onClose,
    onSuccess,
  });
}

export async function authorizeBank(pushModal, { upgradingAccountId } = {}) {
  _authorize(pushModal, upgradingAccountId, {
    onSuccess: async data => {
      pushModal('select-linked-accounts', {
        accounts: data.accounts,
        requisitionId: data.id,
        upgradingAccountId,
      });
    },
  });
}