userPage.js 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import { store } from "../store/store";
  2. import { connect } from "react-redux";
  3. import { Link } from "react-router-dom";
  4. import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
  5. import image from '../images/card.png';
  6. import {
  7. faAlignCenter,
  8. faCompactDisc,
  9. faHeadphonesSimple} from "@fortawesome/free-solid-svg-icons";
  10. import {UsersPlaylistsAll} from '../components/userPlaylists';
  11. import { actionUsersPlaylists } from "../store/promiseReducer";
  12. import { useEffect } from "react";
  13. export const UserPage = ({user, playlists}) => {
  14. const getAnswer = () => {
  15. store.dispatch(actionUsersPlaylists(store.getState().auth?.user?.id));
  16. };
  17. useEffect(() => {
  18. getAnswer();
  19. }, []);
  20. return(<>
  21. <div className='d-flex w-100'>
  22. <div className='me-4 playlist-img-box rounded-5' style={{backgroundImage: `url(${user?.avatar || image})`, backgroundSize: "cover", backgroundRepeat: "no-repeat", backgroundPosition: "center"}}>
  23. </div>
  24. <div className='w-100'>
  25. <div className="d-flex flex-column justify-content-between h-100">
  26. <div className="w-100 row">
  27. <p className='h4 m-0'>{store.getState().auth?.user?.name}</p>
  28. <Link to={'/editprofile'} className="mb-3" >Edit Profile</Link>
  29. <p className='text-white-50 mb-2'><FontAwesomeIcon className='me-2' icon={faHeadphonesSimple} /> 100 Tracks</p>
  30. <p className='text-white-50 mb-2'><FontAwesomeIcon className='me-2' icon={faCompactDisc} /> 8 PLaylists</p>
  31. <p className='text-white-50 mb-2'><FontAwesomeIcon className='me-2' icon={faAlignCenter} />
  32. {store.getState().auth?.user?.description !== 'null' ? store.getState().auth?.user?.description : "Lorem ipsum dolor sit amet, consectetur adipisicing elit. A aliquid amet animi aspernatur facere iste nisi omnis optio, vel vitae? Accusantium assumenda autem cumque ducimus eum ipsa, maiores pariatur repudiandae?" }
  33. </p>
  34. </div>
  35. </div>
  36. </div>
  37. </div>
  38. <UsersPlaylistsAll playlists={playlists}/>
  39. </>)
  40. }
  41. export const CUserPage = connect(state => ({user: state.auth?.user || {},
  42. playlists: state.promise?.usersPlaylists?.payload?.playlists|| []} ) )(UserPage);
  43. //export const СUsersPlaylists = connect(state => ({playlists: state.promise?.usersPlaylists?.payload?.playlists|| []}))(UsersPlaylistsAll);