blob: cb7fa4a92d7880e3b5a51f4e99a11481290fc4c0 [file] [log] [blame]
Adrien Béraud150b4782021-04-21 19:40:59 -04001import React, {useEffect, useState} from 'react';
2import { useParams } from 'react-router';
Adrien Béraudab519ff2022-05-03 15:34:48 -04003import { Container, CircularProgress } from '@mui/material';
Adrien Béraud6ecaa402021-04-06 17:37:25 -04004import Header from '../components/Header'
5import AccountPreferences from '../components/AccountPreferences'
Adrien Béraud6ecaa402021-04-06 17:37:25 -04006import authManager from '../AuthManager'
7import Account from '../../../model/Account'
8
Adrien Béraud150b4782021-04-21 19:40:59 -04009const AccountSettings = (props) => {
10 const accountId = props.accountId || useParams().accountId
11 const [state, setState] = useState({ loaded: false })
Adrien Béraud6ecaa402021-04-06 17:37:25 -040012
Adrien Béraud150b4782021-04-21 19:40:59 -040013 useEffect(() => {
14 const controller = new AbortController()
15 authManager.fetch(`/api/accounts/${accountId}`, {signal: controller.signal})
16 .then(res => res.json())
17 .then(result => {
18 console.log(result)
19 setState({loaded: true, account: Account.from(result)})
Adrien Béraud86986032021-04-25 12:04:53 -040020 }).catch(e => console.log(e))
idillon28996962022-09-06 17:49:41 -040021 // return () => controller.abort() // crash on React18
Adrien Béraud5e9e19b2021-04-22 01:38:53 -040022 }, [accountId])
Adrien Béraud6ecaa402021-04-06 17:37:25 -040023
Adrien Béraud150b4782021-04-21 19:40:59 -040024 return (
25 <Container maxWidth="sm">
26 <Header />
Adrien Béraud86986032021-04-25 12:04:53 -040027 {state.loaded ? <AccountPreferences account={state.account} onAccontChanged={account => setState(state => {
28 state.account = account
29 return state
30 })} /> : <CircularProgress />}
Adrien Béraud150b4782021-04-21 19:40:59 -040031 </Container>
32 )
Adrien Béraud6ecaa402021-04-06 17:37:25 -040033}
34
35export default AccountSettings;