index.tsx 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import BottomNavigation from '@mui/material/BottomNavigation';
  2. import BottomNavigationAction from '@mui/material/BottomNavigationAction';
  3. import { useState } from 'react';
  4. import { useSelector } from 'react-redux';
  5. import { makeStyles } from '@material-ui/core'
  6. import AudioList from './AudioList';
  7. import MediaList from './MediaList';
  8. import FilesList from './FilesList';
  9. import TextList from './TextList';
  10. import VideoList from './VideoList'
  11. import { getMessagesMemo } from '../../../../../../../redux/messages/selector'
  12. import { handleSort } from '../../../../../../../helpers';
  13. import { TMessages } from '../../../../../../../typescript/redux/messages/types'
  14. const useStyles = makeStyles({
  15. bottomNavigation: {
  16. boxShadow: '0px 1px 1px 1px rgba(120,120,120,0.63)',
  17. },
  18. icon: {
  19. fontSize: 17,
  20. lineHeight: 0,
  21. marginBottom: 0,
  22. fontWeight:600
  23. },
  24. underline: {
  25. fontSize: 45,
  26. lineHeight: 0,
  27. },
  28. })
  29. const ProfileLists = ({sort}:{sort:boolean}) => {
  30. const classes = useStyles()
  31. const messagesMemo = useSelector(getMessagesMemo)
  32. const [isActive, setIsActive] = useState<number>(0)
  33. const handleIsActive = (_e: React.SyntheticEvent<Element, Event>, newValue: number): void => setIsActive(newValue)
  34. const Icon = ({ name }: { name: string }) => <span className={classes.icon}>{name}</span>
  35. const Label = () => <span className={classes.underline}>__</span>
  36. const sortedMessages:TMessages = handleSort('updatedAt',messagesMemo,sort)
  37. return (
  38. <>
  39. <BottomNavigation
  40. showLabels
  41. value={isActive}
  42. onChange={handleIsActive}
  43. className={classes.bottomNavigation}
  44. >
  45. <BottomNavigationAction label={<Label/>} icon={<Icon name='Files' />} />
  46. <BottomNavigationAction label={<Label/>} icon={<Icon name='Media' />} />
  47. <BottomNavigationAction label={<Label/>} icon={<Icon name='Text' />} />
  48. <BottomNavigationAction label={<Label />} icon={<Icon name='Audio' />} />
  49. <BottomNavigationAction label={<Label/>} icon={<Icon name='Video' />} />
  50. </BottomNavigation>
  51. {isActive === 0 && <FilesList messagesMemo={sortedMessages}/>}
  52. {isActive === 1 && <MediaList messagesMemo={sortedMessages}/>}
  53. {isActive === 2 && <TextList messagesMemo={sortedMessages}/>}
  54. {isActive === 3 && <AudioList messagesMemo={sortedMessages} />}
  55. {isActive === 4 && <VideoList messagesMemo={sortedMessages}/>}
  56. </>
  57. )
  58. }
  59. export default ProfileLists