blob: fa29a7dc6c1bdbb47aaaa440d575bc748bc8eae5 [file] [log] [blame]
import React, {useEffect, useState} from 'react';
import { useParams } from 'react-router';
import { Container, CircularProgress } from '@mui/material';
import Header from '../components/Header'
import AccountPreferences from '../components/AccountPreferences'
import authManager from '../AuthManager'
import Account from '../../../model/Account'
import { useAppSelector, useAppDispatch } from '../../redux/hooks';
import { setAccountId, setAccountObject } from '../../redux/appSlice';
const AccountSettings = (props) => {
console.log("ACCOUNT SETTINGS", props.account)
const accountId = props.accountId || useParams().accountId
const dispatch = useAppDispatch();
const [state, setState] = useState({ loaded: false })
useEffect(() => {
dispatch(setAccountId(accountId))
const controller = new AbortController()
authManager.fetch(`/api/accounts/${accountId}`, { signal: controller.signal })
.then(res => res.json())
.then(result => {
let account = Account.from(result)
account.setDevices(result.devices)
dispatch(setAccountObject(account))
setState({ loaded: true, account: account})
}).catch(e => console.log(e))
// return () => controller.abort() // crash on React18
}, [accountId])
return (
<Container maxWidth="sm">
<Header />
{state.loaded ? <AccountPreferences account={state.account} onAccontChanged={account => setState(state => {
state.account = account
return state
})} /> : <CircularProgress />}
</Container>
)
}
export default AccountSettings;