Explorar el Código

need to fix private messages array

serg1557733 hace 1 año
padre
commit
62305d639a
Se han modificado 2 ficheros con 25 adiciones y 8 borrados
  1. 14 0
      backend/app.js
  2. 11 8
      frontend/src/components/chatPage/privateChat/PrivateChat.jsx

+ 14 - 0
backend/app.js

@@ -361,7 +361,21 @@ io.on("connection", async (socket) => {
           });
 
 
+          socket.on('privat chat', async (data) => {
+            //find user to in Db
+            const privateMessagesToUser = await PrivateMessage.find({toUser: data.user._id})
+            const privateMessagesFromUser = await PrivateMessage.find({fromUser: data.toUser._id})
+
+            const messages = [...privateMessagesFromUser ]
+//need to send all messages
+            //find user from in db
+            //compare users and if messages is - send 
+            socket.emit('send privat messages', messages)
+          })
+
     
+
+
         socket.on("banUser",async (data) => {
             if(!socket.user.isAdmin){
                 return;

+ 11 - 8
frontend/src/components/chatPage/privateChat/PrivateChat.jsx

@@ -18,21 +18,24 @@ export const PrivateChat = () => {
 
     const SERVER_URL =process.env.REACT_APP_SERVER_URL
 
-    const startMessages = []
     const user = useSelector(state => state.getUserSocketReducer.socketUserData)
     const usersOnline = useSelector(state => state.getUserSocketReducer.usersOnline)
     const userNamesOnlineSet =  new Set(usersOnline.map( i => i.userName))
     const storeMessageId = useSelector(state => state.messageReducer.messageId)
     const newMessages = useSelector(state => state.getUserSocketReducer.newMessages)
 
-    socket.on("private message", ({privateMessage, fromUser}) => {
-        console.log(privateMessage , fromUser)
+    socket.on('send privat messages', (messages)=> {
+        setStartMessages(messages)
       });
 
 
-console.log(startMessages)
 
+    const [startMessages, setStartMessages] = useState([])   
+    const [startMessagesFrom, setStartMessagesFrom] = useState([])   
     let endMessages = useRef(null);
+
+console.log(startMessages)
+
     const [isEditing, setIsEditing] = useState(false)   
     const [isEditiedMessage, setIsEditiedMessage] = useState(false) //need to type in the bottom of message after message was edited
 
@@ -58,7 +61,7 @@ console.log(startMessages)
                 {
                 startMessages.map((item, i) =>
                     <div key={i + 1} className={ 
-                        (item.userName === user.userName)? 'message myMessage' :'message'}
+                        (item.fromUser === user._id)? 'message myMessage' :'message'}
                         onClick = {(e) => {
                             console.log(e.target)
                             if(e.target.closest("div").className.includes('myMessage') && (item.userName === user.userName) && (item.text === e.target.textContent)){
@@ -76,12 +79,12 @@ console.log(startMessages)
                                     fontWeight: 800
                                 }}
 
-                        > {item.userName}</span>
+                        > {item.fromUser}</span>
                         <div 
                             key={i}
                         
                             className={ 
-                                (item.userName === user.userName)? 'message myMessage' :'message'}>
+                                (item.fromUser === user._id)? 'message myMessage' :'message'}>
                            
                            { 
                            item.text.match(regYoutube) ?
@@ -135,7 +138,7 @@ console.log(startMessages)
                         </div>
                         {isEditiedMessage && <i>Edited</i>}
                         <div className={ 
-                                (item.userName === user.userName)? 'myDate' :'date'}>
+                                 (item.fromUser === user._id)? 'myDate' :'date'}>
                                 {dateFormat(item).time}
                         </div>
                     </div>