|
1 | 1 | import { Card, CardContent, CardHeader, Divider } from '@mui/material';
|
2 | 2 | import React, { useMemo } from 'react';
|
| 3 | +import { useTranslation } from 'react-i18next'; |
3 | 4 | import { useParams } from 'react-router-dom';
|
4 | 5 | import UserRoutes from '../../../api/UserRoutes';
|
5 | 6 | import UserForm from '../../../components/forms/UserForm';
|
6 | 7 | import Loader from '../../../components/Loader';
|
7 | 8 | import Page from '../../../components/Page';
|
| 9 | +import { emptyUser } from '../../../hooks/useAuth'; |
8 | 10 | import useStateAsync from '../../../hooks/useStateAsync';
|
9 | 11 |
|
10 | 12 | const UserEditView = () => {
|
11 |
| - const { id } = useParams(); |
| 13 | + const { t } = useTranslation('user'); |
| 14 | + const { id: _id } = useParams(); |
| 15 | + |
| 16 | + const id = useMemo(() => (_id ? +_id : 0), [_id]); |
12 | 17 |
|
13 | 18 | const callParams = useMemo(() => ({
|
14 |
| - id: id ? +id : 0, |
| 19 | + id, |
15 | 20 | include: { person: true },
|
16 | 21 | }), [id]);
|
17 | 22 | const { data: user } = useStateAsync(
|
18 |
| - null, |
| 23 | + emptyUser, |
19 | 24 | UserRoutes.get,
|
20 | 25 | callParams,
|
21 | 26 | );
|
22 | 27 |
|
23 | 28 | return (
|
24 |
| - <Page |
25 |
| - title="New user" |
26 |
| - > |
| 29 | + <Page title={id ? t('editUser') : t('newUser')}> |
27 | 30 | <Card>
|
28 | 31 | <CardHeader
|
29 |
| - subheader="Edit the user information" |
30 |
| - title="Edit user" |
| 32 | + subheader={t('informationCanBeEdited')} |
| 33 | + title={id ? t('editUser') : t('newUser')} |
31 | 34 | />
|
32 | 35 | <Divider />
|
33 | 36 | <CardContent>
|
34 |
| - {!user |
| 37 | + {(!!id && !user.id) |
35 | 38 | ? <Loader />
|
36 | 39 | : (
|
37 | 40 | <UserForm
|
38 | 41 | data={{
|
39 |
| - id: id ? +id : 0, |
| 42 | + id: user.id, |
40 | 43 | admin: user.admin,
|
41 | 44 | login: user.login,
|
42 | 45 | idperson: user.person.id ? +user.person.id : 0,
|
|
0 commit comments