MCPcopy Create free account
hub / github.com/Dispatcharr/Dispatcharr / User

Function User

frontend/src/components/forms/User.jsx:40–429  ·  view source on GitHub ↗
({ user = null, isOpen, onClose })

Source from the content-addressed store, hash-verified

38} from '../../utils/forms/UserUtils.js';
39
40const User = ({ user = null, isOpen, onClose }) => {
41 const profiles = useChannelsStore((s) => s.profiles);
42 const outputProfiles = useOutputProfilesStore((s) => s.profiles);
43 const authUser = useAuthStore((s) => s.user);
44 const setUser = useAuthStore((s) => s.setUser);
45
46 const [, setEnableXC] = useState(false);
47 const [selectedProfiles, setSelectedProfiles] = useState(new Set());
48 const [generating, setGenerating] = useState(false);
49 const [_generatedKey, setGeneratedKey] = useState(null);
50 const [userAPIKey, setUserAPIKey] = useState(user?.api_key || null);
51
52 const theme = useMantineTheme();
53
54 const form = useForm({
55 mode: 'uncontrolled',
56 initialValues: getFormInitialValues(),
57 validate: getFormValidators(user),
58 });
59
60 const onChannelProfilesChange = (values) => {
61 let newValues = new Set(values);
62 if (selectedProfiles.has('0')) {
63 newValues.delete('0');
64 } else if (newValues.has('0')) {
65 newValues = new Set(['0']);
66 }
67
68 setSelectedProfiles(newValues);
69
70 form.setFieldValue('channel_profiles', [...newValues]);
71 };
72
73 const onSubmit = async () => {
74 const payload = formValuesToPayload(form.getValues(), user);
75
76 if (!user && payload.user_level == USER_LEVELS.STREAMER) {
77 payload.password = Math.random().toString(36).slice(2);
78 }
79
80 if (!user) {
81 await createUser(payload);
82 } else {
83 if (!payload.password) delete payload.password;
84 const response = await updateUser(user.id, payload, isAdmin, authUser);
85 if (user.id == authUser.id) setUser(response);
86 }
87
88 form.reset();
89 setUserAPIKey(null);
90 onClose();
91 };
92
93 useEffect(() => {
94 if (user?.id) {
95 form.setValues(userToFormValues(user));
96
97 if (user.custom_properties?.xc_password) {

Callers 1

createMethod · 0.90

Calls 5

getFormInitialValuesFunction · 0.90
getFormValidatorsFunction · 0.90
userToFormValuesFunction · 0.90
copyToClipboardFunction · 0.90
filterMethod · 0.45

Tested by

no test coverage detected