Newer
Older
Shazib Hussain
committed
/* eslint-disable import/no-unused-modules */
import { send } from 'loot-core/src/platform/client/fetch';
function _authorize(pushModal, plaidToken, { onSuccess, onClose }) {
pushModal('plaid-external-msg', {
onMoveExternal: async () => {
let token = await send('create-web-token');
let url = 'http://link.actualbudget.com/?token=' + token;
// let url = 'http://localhost:8080/?token=' + token;
if (plaidToken) {
url = url + '&plaidToken=' + plaidToken;
}
window.Actual.openURLInBrowser(url);
let { error, data } = await send('poll-web-token', { token });
return { error, data };
},
onClose,
});
}
export async function authorizeBank(pushModal, { upgradingId } = {}) {
_authorize(pushModal, null, {
onSuccess: async data => {
pushModal('select-linked-accounts', {
institution: data.metadata.institution,
publicToken: data.publicToken,
accounts: data.metadata.accounts,
});
}
export async function reauthorizeBank(pushModal, bankId, onSuccess) {
let { linkToken } = await send('make-plaid-public-token', {
});
// We don't do anything with the error right now
if (!linkToken) {
return false;
}
// When the modal is closed here, always try to re-sync the account
// by calling `onSuccess`
_authorize(pushModal, linkToken, { onSuccess, onClose: onSuccess });
return true;
}