import React, { FC, useCallback, useEffect, useState } from 'react'; import styles from './styles.scss'; import { connect } from 'react-redux'; import { selectAuthProfile, selectAuthUser } from '~/redux/auth/selectors'; import { Textarea } from '~/components/input/Textarea'; import { Button } from '~/components/input/Button'; import { Group } from '~/components/containers/Group'; import { Filler } from '~/components/containers/Filler'; import { InputText } from '~/components/input/InputText'; import reject from 'ramda/es/reject'; import * as AUTH_ACTIONS from '~/redux/auth/actions'; import { ERROR_LITERAL } from '~/constants/errors'; import { ProfileAccounts } from '~/components/profile/ProfileAccounts'; import classNames from 'classnames'; const mapStateToProps = state => ({ user: selectAuthUser(state), profile: selectAuthProfile(state), }); const mapDispatchToProps = { authPatchUser: AUTH_ACTIONS.authPatchUser, authSetProfile: AUTH_ACTIONS.authSetProfile, }; type IProps = ReturnType & typeof mapDispatchToProps & {}; const ProfileSettingsUnconnected: FC = ({ user, profile: { patch_errors, socials }, authPatchUser, authSetProfile, }) => { const [password, setPassword] = useState(''); const [new_password, setNewPassword] = useState(''); const [data, setData] = useState(user); const setDescription = useCallback(description => setData({ ...data, description }), [ data, setData, ]); const setEmail = useCallback(email => setData({ ...data, email }), [data, setData]); const setUsername = useCallback(username => setData({ ...data, username }), [data, setData]); const setFullname = useCallback(fullname => setData({ ...data, fullname }), [data, setData]); const onSubmit = useCallback( event => { event.preventDefault(); const fields = reject(el => typeof el === 'undefined')({ email: data.email !== user.email && data.email ? data.email : undefined, fullname: data.fullname !== user.fullname ? data.fullname : undefined, username: data.username !== user.username && data.username ? data.username : undefined, password: password.length > 0 && password ? password : undefined, new_password: new_password.length > 0 && new_password ? new_password : undefined, description: data.description !== user.description ? data.description : undefined, }); if (Object.values(fields).length === 0) return; authPatchUser(fields); }, [data, password, new_password, authPatchUser] ); useEffect(() => { authSetProfile({ patch_errors: {} }); }, [password, new_password, data]); return (
О себе