blob: acecd27ccb7ac956e97ab3497b5d65349fbd8b5e [file] [log] [blame]
import React, { useState } from 'react';
import { Container, Card, CardContent, Typography, Fab, CardActions, Box } from '@mui/material';
import { AddRounded } from '@mui/icons-material';
import UsernameChooser from '../components/UsernameChooser';
import authManager from '../AuthManager'
import { useNavigate } from 'react-router';
export default function JamiAccountDialog(props) {
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}>
<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>
<UsernameChooser disabled={loading} setName={setName} />
</Box>
</CardContent>
<CardActions>
{error && <Typography color="error">Error: {JSON.stringify(error)}</Typography>}
<Fab color="primary" type="submit" variant="extended" disabled={!name || loading}>
<AddRounded/>
Register name
</Fab>
</CardActions>
</Card>
</Container>)
}