/*
This file is part of GNU Taler
(C) 2020 Taler Systems S.A.
GNU Taler is free software; you can redistribute it and/or modify it under the
terms of the GNU General Public License as published by the Free Software
Foundation; either version 3, or (at your option) any later version.
GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
GNU Taler; see the file COPYING. If not, see
*/
import React, { useState } from 'react';
import { message, Button, Card, Col, Collapse, Row, Tabs } from 'antd';
import './BankAccounts.less';
import AddBankConnectionDrawer from './AddBankConnectionDrawer';
import BankConnectionCard from './BankConnectionCard';
const { TabPane } = Tabs;
const { Panel } = Collapse;
const BankAccounts = () => {
const [connectionsList, setConnectionsList] = useState([]);
const [accountsList, setAccountsList] = useState([]);
const showError = (err) => {
message.error(String(err));
};
const fetchBankConnections = async () => {
const authHeader = await window.localStorage.getItem('authHeader');
await fetch(`/bank-connections`, {
headers: new Headers({
Authorization: `Basic ${authHeader}`,
}),
})
.then((response) => {
if (response.ok) {
return response.json();
}
throw 'Cannot retrieve bank connections';
})
.then((response) => {
setConnectionsList(response.bankConnections);
})
.catch((err) => {
showError(err);
});
};
const fetchBankAccounts = async () => {
const authHeader = await window.localStorage.getItem('authHeader');
await fetch(`/bank-accounts`, {
headers: new Headers({
Authorization: `Basic ${authHeader}`,
}),
})
.then((response) => {
if (response.ok) {
return response.json();
}
throw 'Cannot retrieve bank accounts';
})
.then((response) => {
setAccountsList(response.accounts);
})
.catch((err) => {
showError(err);
});
};
React.useEffect(() => {
fetchBankConnections();
fetchBankAccounts();
}, []);
const [visible, setVisible] = useState(false);
const showDrawer = () => {
setVisible(true);
};
const onClose = () => {
setVisible(false);
fetchBankConnections();
fetchBankAccounts();
};
const bankAccountsContent =
accountsList.length > 0 ? (
{accountsList.map((bankAccount) => (
Holder: {bankAccount['ownerName']}
IBAN: {bankAccount['iban']}
BIC: {bankAccount['bic']}
))}
) : (
No bank accounts found. Import your bank accounts from a bank
connection.
);
return (
{connectionsList
? connectionsList.map((bankConnection) => (
fetchBankAccounts()}
/>
))
: null}
{bankAccountsContent}
Placeholder
);
};
export default BankAccounts;