index.tsx 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import { makeStyles } from '@material-ui/core'
  2. import { useState,useEffect } from 'react';
  3. import { useSelector } from 'react-redux';
  4. import ToolBar from './ToolBar'
  5. import EditList from './EditList'
  6. import SubmitBtn from './SubmitBtn';
  7. import { getState } from '../../../../redux/authorization/selector'
  8. import { updateCredentials,updateUserAvatar } from '../../../../api-data';
  9. const useStyles = makeStyles({
  10. container: {
  11. width: '100%',
  12. height: '100%',
  13. backgroundColor: '#f3f2f2',
  14. position:'relative'
  15. }
  16. })
  17. interface IEditBar {
  18. setSelectedIndex: React.Dispatch<React.SetStateAction<number | null>>
  19. }
  20. const EditBar= ({setSelectedIndex}:IEditBar) => {
  21. const classes = useStyles()
  22. const user = useSelector(getState)
  23. const [name, setName] = useState<string>('')
  24. const [lastName, setLastName] = useState<string>('')
  25. const [openBtn, setOpenBtn] = useState<boolean>(false)
  26. const [file,setFile] = useState<any>(null)
  27. const {name:Name,lastName:LastName} = user
  28. const handleSubmit = async () => {
  29. if (name !== Name || lastName !== LastName){
  30. await updateCredentials({ name, lastName, originalName: name, originalLastName: lastName })
  31. }
  32. if (file) {
  33. const formData: any = new FormData()
  34. formData.append("avatar", file);
  35. await updateUserAvatar(formData)
  36. }
  37. file && setFile(null)
  38. openBtn && setOpenBtn(false)
  39. }
  40. useEffect(() => {
  41. Name&&setName(Name)
  42. LastName && setLastName(LastName)
  43. }, [Name, LastName])
  44. return (
  45. <div className={classes.container}>
  46. {openBtn&&<SubmitBtn handleSubmit={handleSubmit}/>}
  47. <ToolBar setSelectedIndex={setSelectedIndex}/>
  48. <EditList user={user} name={name} setName={setName}
  49. lastName={lastName} setLastName={setLastName}
  50. openBtn={openBtn} setOpenBtn={setOpenBtn}
  51. file={file} setFile={setFile}/>
  52. </div>
  53. )
  54. }
  55. export default EditBar