blob: 40c07509e60ac779123a84e4ee267acdf5578ba6 [file] [log] [blame]
Adrien Béraud150b4782021-04-21 19:40:59 -04001import React, { useEffect, useState } from 'react';
Adrien Béraud6ecaa402021-04-06 17:37:25 -04002import { withRouter } from 'react-router-dom';
Adrien Béraud150b4782021-04-21 19:40:59 -04003import { Card, CardHeader, Container, CircularProgress } from '@material-ui/core';
4import Header from '../components/Header'
5import AccountList from '../components/AccountList';
6import authManager from '../AuthManager'
Adrien Béraud6ecaa402021-04-06 17:37:25 -04007import Account from '../../../model/Account';
Adrien Béraud150b4782021-04-21 19:40:59 -04008import LoadingPage from '../components/loading';
Adrien Béraud6ecaa402021-04-06 17:37:25 -04009
Adrien Béraud150b4782021-04-21 19:40:59 -040010const AccountSelection = (props) => {
11 const [state, setState] = useState({
12 loaded: false,
13 error: false,
14 accounts: []
15 })
Adrien Béraud6ecaa402021-04-06 17:37:25 -040016
Adrien Béraud150b4782021-04-21 19:40:59 -040017 useEffect(() => {
18 const controller = new AbortController()
19 authManager.fetch(`/api/accounts`, {signal: controller.signal})
20 .then(res => res.json())
21 .then(result => {
22 console.log(result)
23 setState({
24 loaded: true,
25 accounts: result.map(account => Account.from(account)),
Adrien Béraud6ecaa402021-04-06 17:37:25 -040026 })
Adrien Béraud150b4782021-04-21 19:40:59 -040027 }, error => {
28 console.log(`get error ${error}`)
29 setState({
30 loaded: true,
31 error: true
32 })
33 })
34 return () => controller.abort()
35 }, [])
Adrien Béraud6ecaa402021-04-06 17:37:25 -040036
Adrien Béraud150b4782021-04-21 19:40:59 -040037 if (!state.loaded)
38 return <LoadingPage />
39 return (
40 <React.Fragment>
41 <Header />
42 <Container maxWidth="sm" style={{paddingBottom:32}}>
43 <Card style={{marginTop:32, marginBottom:32}}>
44 <CardHeader title="Choose an account" />
45 <AccountList accounts={state.accounts} onClick={account => props.history.push(`/account/${account.getId()}/settings`)} />
46 </Card>
47 </Container>
48 </React.Fragment>
49 )
Adrien Béraud6ecaa402021-04-06 17:37:25 -040050}
51
52export default withRouter(AccountSelection);