ChatInfoPage.jsx 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. import React, { useState, useEffect, useQuery } from 'react';
  2. import { Link, useParams } from 'react-router-dom';
  3. import io from 'socket.io-client';
  4. // 632b86aa55e76f7ddb1eae29
  5. import { history } from '../history/';
  6. import '../App.css';
  7. import store from '../store';
  8. import { actionAboutMe } from '../store/actions/action-aboutMe'
  9. import backgroundChat from '../img/back.JPG'
  10. import { useRef } from 'react';
  11. import { actionSearchUser } from '../store/actions/action-search-user';
  12. export const ChatInfoPage = ({ us, onSearchUser, match: { params: { _id } }, chats, getData, userName }) => {
  13. const [chatList, setChatList] = useState(chats || [])
  14. const [messageList, setMessageList] = useState([])
  15. const [chatInfo, setChatInfo] = useState([])
  16. const [searchUser, setSearchUser] = useState("")
  17. const [userAdd, setUserAdd] = useState("")
  18. const SearchUs = ( _id) => {
  19. onSearchUser(searchUser)
  20. setSearchUser('')
  21. const stD = store.dispatch(onSearchUser())
  22. const userId = us
  23. console.log('1', stD)
  24. console.log('2', userId)
  25. console.log(store.getState())
  26. }
  27. useEffect(() => {
  28. if (chats) {
  29. const activeChatId = window.location.pathname.split('/')[2]
  30. let activeChat = chats.filter((item) => item._id === activeChatId);
  31. console.log('mem', activeChat)
  32. setChatInfo(activeChat[0].members)
  33. }
  34. }, [chats])
  35. useEffect(() => {
  36. async function getDataFunc() {
  37. const res = await getData(_id)
  38. setChatList(res.chats)
  39. setMessageList(res.chats?.message)
  40. setChatInfo(res.chats?.members)
  41. }
  42. getDataFunc()
  43. }, [_id])
  44. function handleClick(_id) {
  45. const filteredChatList = chatList.filter((item) => item._id === _id)
  46. console.log(filteredChatList)
  47. setMessageList(filteredChatList[0].messages)
  48. }
  49. function chatInfoClick(_id) {
  50. const filteredChatList = chatList.filter((item) => item._id === _id)
  51. console.log(filteredChatList)
  52. setChatInfo(filteredChatList[0].members)
  53. }
  54. return (
  55. <>
  56. <div className='chatPage'>
  57. <aside>
  58. <div className="row">
  59. <div className="col-12">
  60. <div id="list-example" className="list-group">
  61. <a href="/create-chat" className='linkToCreate'><h1>Создать чат</h1></a>
  62. <ul className='chatAside'>{chatList.map((item, index) =>
  63. <a className="list-group-item list-group-item-action">
  64. <Link to={`${item._id}/info`}> <h3 onClick={() => chatInfoClick(item._id)}>Инфо </h3> </Link>
  65. <Link to={`/chat/${item._id}`}></Link>
  66. <Link to={`/chat/${item._id}`}>
  67. <li onClick={() => handleClick(item._id)} className='chatLi' key={index}>
  68. <h3>Chat: {item.title}</h3>
  69. {/* {item.lastMessage ? <h6>Last Message: {item.lastMessage.text}</h6> : []} */}
  70. </li>
  71. </Link>
  72. </a>
  73. )}
  74. </ul>
  75. </div>
  76. </div>
  77. </div>
  78. </aside>
  79. <main className='chatMain'>
  80. <h1>Members Add</h1>
  81. <input
  82. type="text"
  83. value={searchUser}
  84. onChange={(e) => setSearchUser(e.target.value)}
  85. className="form-control"
  86. id="exampleInputEmail1"
  87. aria-describedby="emailHelp" />
  88. <div className="mb-3">
  89. <button type="submit" className="btn btn-primary" onClick={SearchUs}>Add</button>
  90. </div>
  91. <div className="membersChat">
  92. <h1> Members: </h1>
  93. {chatInfo /* chatInfo.length > 0 */ &&
  94. <ul>{chatInfo.map((item2, index) =>
  95. <li key={index}>
  96. <h1><p>{item2.login}</p></h1>
  97. </li>
  98. )}
  99. </ul>
  100. }
  101. </div>
  102. </main>
  103. </div>
  104. </>
  105. )
  106. }