/* * Copyright (c) 2026 by Christian Kellner. * Licensed under Apache-2.0 with Commons Clause and Attribution/Naming Clause */ import React from 'react'; import { xhrGet, xhrPost } from '../../../services/xhr'; import { useNavigate, useParams } from 'react-router-dom'; import { useActions } from '../../../services/state/store'; import { Divider, Input, Switch, Button, Toast } from '@douyinfe/semi-ui-19'; import './UserMutator.less'; import { SegmentPart } from '../../../components/segment/SegmentPart'; import { IconPlusCircle, IconArrowLeft } from '@douyinfe/semi-icons'; import Headline from '../../../components/headline/Headline.jsx'; const UserMutator = function UserMutator() { const params = useParams(); const [username, setUsername] = React.useState(''); const [password, setPassword] = React.useState(''); const [password2, setPassword2] = React.useState(''); const [isAdmin, setIsAdmin] = React.useState(false); const navigate = useNavigate(); const actions = useActions(); React.useEffect(() => { async function init() { if (params.userId != null) { try { const userJson = await xhrGet(`/api/admin/users/${params.userId}`); const user = userJson.json; const defaultName = user?.username || ''; const defaultIsAdmin = user?.isAdmin || false; setUsername(defaultName); setIsAdmin(defaultIsAdmin); } catch (Exception) { console.error(Exception); } } } init(); }, [params.userId]); const saveUser = async () => { try { await xhrPost('/api/admin/users', { userId: params.userId || null, username, password, password2, isAdmin, }); await actions.user.getUsers(); Toast.success('User successfully saved...'); navigate('/users'); } catch (error) { console.error(error); Toast.error(error.json.message); } }; return ( <> } onClick={() => navigate('/users')} theme="borderless" style={{ color: '#909090' }} > Back } />
setUsername(val)} /> setPassword(val)} /> setPassword2(val)} /> setIsAdmin(checked)} />
); }; export default UserMutator;