index.tsx 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. import { makeStyles } from '@material-ui/core'
  2. import { useState } from 'react'
  3. import { useSelector,useDispatch } from 'react-redux'
  4. import ForwardSearch from './ForwardSearch'
  5. import ForwardList from './ForwardList'
  6. import { asyncGetChatById } from '../../../../../../redux/chat/operations'
  7. import { actionRightIsOpen,actionScrollChat,actionOpenPinned } from '../../../../../../redux/control/action'
  8. import { getStateMemo } from '../../../../../../redux/chats/selector'
  9. import { TMessage } from '../../../../../../typescript/redux/messages/types'
  10. const useStyles = makeStyles({
  11. overlay: {
  12. position: 'fixed',
  13. top: 0,
  14. left: 0,
  15. width: '100vw',
  16. height: '100vh',
  17. zIndex: 100,
  18. backgroundColor: 'rgba(104, 105, 104, 0.6)',
  19. overflowY: 'hidden',
  20. },
  21. container: {
  22. backgroundColor: 'white',
  23. width: '22vw',
  24. position: 'absolute',
  25. top: '15vh',
  26. height:'70vh',
  27. left: '39vw',
  28. display: 'flex',
  29. flexWrap: 'wrap',
  30. alignItems: 'start',
  31. alignContent:'start',
  32. borderRadius:10,
  33. }
  34. })
  35. interface IForwardSearchList {
  36. setModalForward: React.Dispatch<React.SetStateAction<boolean>>,
  37. setIsForward: React.Dispatch<React.SetStateAction<TMessage | undefined>>,
  38. companionId: string,
  39. }
  40. const ForwardSearchList = ({setModalForward,setIsForward,companionId}:IForwardSearchList) => {
  41. const classes = useStyles()
  42. const dispatch = useDispatch()
  43. const { total,chats } = useSelector(getStateMemo)
  44. const [value, setValue] = useState<string>('')
  45. const handleSearch = (e: React.ChangeEvent<HTMLInputElement>): void => setValue(e.target.value)
  46. const handleCloseForwardModal = (e: any) => {
  47. const id = e.target.id
  48. if (id === 'overlay' || id === 'cancel') {
  49. setModalForward(false)
  50. setIsForward(undefined)
  51. }
  52. }
  53. const handleListItemClick = (newCompanionId: string) => {
  54. setModalForward(false)
  55. dispatch(actionRightIsOpen(''))
  56. dispatch(actionOpenPinned(false))
  57. dispatch(asyncGetChatById(newCompanionId))
  58. if (companionId !== newCompanionId) {
  59. setIsForward((prevState) => prevState?{...prevState,companionId:newCompanionId}:prevState
  60. )
  61. setTimeout(() => dispatch(actionScrollChat(true)), 500)
  62. }
  63. }
  64. return (
  65. <div onClick={handleCloseForwardModal} className={classes.overlay} id='overlay'>
  66. <div className={classes.container}>
  67. <ForwardSearch handleSearch={handleSearch} value={value} total={total}/>
  68. <ForwardList value={value} chats={chats} total={total} handleListItemClick={handleListItemClick}/>
  69. </div>
  70. </div>
  71. )
  72. }
  73. export default ForwardSearchList