blob: cb861a3b394bb63354dab60a3b335ff692b9a5ba [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()
ervinanohf1758a42022-09-14 14:52:51 -040015 authManager.fetch(`/api/accounts/${accountId}`, { signal: controller.signal })
Adrien Béraud150b4782021-04-21 19:40:59 -040016 .then(res => res.json())
17 .then(result => {
ervinanohf1758a42022-09-14 14:52:51 -040018 let account = Account.from(result)
19 account.setDevices(result.devices)
20 setState({ loaded: true, account: account})
21
Adrien Béraud86986032021-04-25 12:04:53 -040022 }).catch(e => console.log(e))
idillon28996962022-09-06 17:49:41 -040023 // return () => controller.abort() // crash on React18
Adrien Béraud5e9e19b2021-04-22 01:38:53 -040024 }, [accountId])
Adrien Béraud6ecaa402021-04-06 17:37:25 -040025
Adrien Béraud150b4782021-04-21 19:40:59 -040026 return (
27 <Container maxWidth="sm">
28 <Header />
Adrien Béraud86986032021-04-25 12:04:53 -040029 {state.loaded ? <AccountPreferences account={state.account} onAccontChanged={account => setState(state => {
30 state.account = account
31 return state
32 })} /> : <CircularProgress />}
Adrien Béraud150b4782021-04-21 19:40:59 -040033 </Container>
34 )
Adrien Béraud6ecaa402021-04-06 17:37:25 -040035}
36
37export default AccountSettings;