MCPcopy Index your code
hub / github.com/Packstack-Tech/packstack / render

Method render

frontend/src/app/Profile/Profile.tsx:49–115  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

47 };
48
49 render() {
50 const { user: { username, id, default_weight_unit }, updateUser, fetchUser } = this.props;
51 const { loading, packs } = this.state;
52 return (
53 <DocumentTitle title={`Packstack | My Packs`}>
54 <>
55 <PageTitle>
56 <h1>My Packs</h1>
57 </PageTitle>
58 <Grid>
59 <div className="two-thirds">
60 <h3>Packs</h3>
61 <PackList loading={loading} packs={packs} currentUserId={id} deletePack={this.deletePack}/>
62 </div>
63 <div className="third">
64 <h3>Settings</h3>
65 <Box>
66 <Formik
67 initialValues={{ username, default_weight_unit }}
68 validationSchema={Yup.object().shape({
69 username: Yup.string().required("Username cannot be empty.")
70 })}
71 onSubmit={(values) => {
72 updateUser(values.username, values.default_weight_unit)
73 .then(() => {
74 fetchUser();
75 alertSuccess({ message: 'User settings updated!' });
76 })
77 .catch(() => alertError({ message: 'Unable to update user' }));
78 }}>
79 {(props: FormikProps<ProfileSpecs.SettingsForm>) => {
80 const { values, setFieldValue, submitForm, submitCount, errors } = props;
81 const wasSubmitted = submitCount > 0;
82 const saveChanges = username !== values.username || default_weight_unit !== values.default_weight_unit;
83
84 return (
85 <>
86 <Input label="Username"
87 value={values.username}
88 error={wasSubmitted && !!errors.username}
89 errorMsg={errors.username}
90 onChange={v => setFieldValue('username', v)}/>
91
92 <Select label="Default Weight Unit"
93 defaultValue={{
94 value: values.default_weight_unit,
95 label: default_weight_unit
96 }}
97 options={weightUnitOptions()}
98 onChange={(option: Option) => setFieldValue('default_weight_unit', option.value)}/>
99 <Button onClick={submitForm}
100 block={true}
101 type="primary"
102 disabled={!saveChanges}>
103 Save Changes
104 </Button>
105 </>
106 )

Callers

nothing calls this directly

Calls 3

alertSuccessFunction · 0.90
alertErrorFunction · 0.90
weightUnitOptionsFunction · 0.90

Tested by

no test coverage detected