import React, { useState } from 'react' import { connect } from 'react-redux' import addBase from '../src/util/addBase' import getHeaders from '../src/client/util/getHeaders' import RequireUser from '../src/client/comps/requireUser' function Settings({ user }) { const [data, setData] = useState({ current: '', confirm: '', new: '', }) const [pending, setPending] = useState(false) const [error, setError] = useState(null) const handleSubmit = () => { if (pending) return let err Object.keys(data).forEach(k => (data[k] = data[k].trim())) if (!data.current) err = 'current pass is required' else if (!data.new) err = 'new pass is required' else if (!data.confirm) err = 'confirm pass is required' else if (data.new !== data.confirm) err = 'new password must match confirm' if (err) return setError(err) setError(null) setPending(true) fetch(addBase('/user'), { method: 'PATCH', headers: { ...getHeaders(), 'content-type': 'application/json', }, body: JSON.stringify({ username: user.username, password: data.current, newPassword: data.new, }), }) .then(async res => { const { status, ...data } = await res.json() if (status === 'ok') { setPending(false) setError('Password updated') return setData({ current: '', confirm: '', new: '', }) } throw new Error(data.message) }) .catch(err => { setPending(false) setError(err.message || 'An error occurred updating password') }) } const handleChange = e => { data[e.target.id] = e.target.value setData(data) } return (

Account settings


Change password

{error &&

{error}

}
) } export default connect(({ user }) => ({ user }))(Settings)