blob: a37545d851ddc8cd09c406669f087c015b3e8e51 [file] [log] [blame]
import React, { useState } from 'react';
import { Container, Card, CardContent, Typography, Fab, CardActions, Box } from '@mui/material';
import makeStyles from '@mui/styles/makeStyles';
import { AddRounded } from '@mui/icons-material';
import UsernameChooser from '../components/UsernameChooser';
import authManager from '../AuthManager'
import { useNavigate } from 'react-router';
const useStyles = makeStyles((theme) => ({
extendedIcon: {
marginRight: theme.spacing(1),
},
wizardCard: {
borderRadius: 8,
maxWidth: 360,
margin: "16px auto"
},
actionArea: {
textAlign: 'center',
display: 'block'
},
chooser: {
marginTop: 16
}
}))
export default function JamiAccountDialog(props) {
const classes = useStyles()
const [name, setName] = useState('')
const [loading, setLoading] = useState(false)
const [error, setError] = useState(false)
const navigate = useNavigate()
const onSubmit = async event => {
event.preventDefault()
setLoading(true)
const result = await authManager.fetch('/api/accounts', {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify({ registerName: name })
})
.then(res => res.json())
.catch(error => {
setLoading(false)
setError(error)
})
console.log(result)
if (result && result.accountId)
navigate(`/account/${result.accountId}/settings`)
}
return (
<Container>
<Card component="form" onSubmit={onSubmit} className={classes.wizardCard}>
<CardContent>
<Typography gutterBottom variant="h5" component="h2">
Create Jami account
</Typography>
<Typography variant="body2" color="textSecondary" component="p">
Welcome to the Jami web node setup.<br />
Let's start by creating a new administrator account to control access to the server configuration.
</Typography>
<Box className={classes.chooser} >
<UsernameChooser disabled={loading} setName={setName} />
</Box>
</CardContent>
<CardActions className={classes.actionArea}>
{error && <Typography color="error">Error: {JSON.stringify(error)}</Typography>}
<Fab color="primary" type="submit" variant="extended" disabled={!name || loading}>
<AddRounded className={classes.extendedIcon} />
Register name
</Fab>
</CardActions>
</Card>
</Container>)
}