Explorar el Código

fix main chat and some dispatch events

serg1557733 hace 1 año
padre
commit
93cb1909f1

+ 5 - 8
backend/app.js

@@ -202,7 +202,7 @@ io.use( async (socket, next) => {
     const token = socket.handshake.auth.token; 
     const sockets = await io.fetchSockets();
     if(!token) {
-        console.log('socket disconnect')
+        console.log('token error - socket disconnect')
         socket.disconnect();
         return;
     }
@@ -244,11 +244,11 @@ io.on("connection", async (socket) => {
 
     //need to use this ID to socket privat messges
 
-    const users = [];
+    const usersInSocket = [];
         for (let [id, socket] of io.of("/").sockets) {
             
             const dbUser = await getOneUser(socket.user.userName)
-            users.push({...dbUser._doc,socketId: id });
+            usersInSocket.push({...dbUser._doc,socketId: id });
         }
 
 // const onUser = []
@@ -267,8 +267,9 @@ io.on("connection", async (socket) => {
 //      const siPrivate = await PrivateMessage.find({toUser: socket.user.id})
 //      console.log(!!siPrivate)
 // }
+console.log(usersInSocket.userName)
 
-    io.emit('usersOnline', users); // send array online users  
+    io.emit('usersOnline', usersInSocket); // send array online users  
 
     //send private chats for user
 
@@ -294,10 +295,6 @@ socket.emit('my chats', privateChats)
     const messagesToShow = await Message.find({}).sort({ 'createDate': -1 }).limit(20).populate( {path:'user'});   
     socket.emit('allmessages', messagesToShow.reverse());
 
-
-
-    
-
     socket.on("message", async (data) => {
         const dateNow = Date.now(); // for correct working latest post 
         const post = await Message.findOne({userName}).sort({ 'createDate': -1 })

+ 5 - 4
frontend/src/components/chatPage/ChatPage.jsx

@@ -105,13 +105,14 @@ export const ChatPage = () => {
     useEffect(() => {
    
         if(token){
-            ['allmessages', 'usersOnline', 'allDbUsers'].map(event => dispatch(getSocket(event)))  //use const SOCKETS EVENT
-            console.log('socket events') 
+          //  const events = ['allmessages', 'usersOnline', 'allDbUsers'] // if start page dont get users or add dispatch for this events
+            dispatch(getSocket('allmessages')) //use const SOCKETS EVENT
+            dispatch(getSocket('allDbUsers'))
         }
     }, [token, editOldMessage, showUserInfoBox])
 
-  
- 
+
+
     return (
         
         <div className='rootContainer'>

+ 5 - 1
frontend/src/components/chatPage/generalChat/MainChatButtton.jsx

@@ -2,6 +2,7 @@ import { useSelector } from 'react-redux';
 import { generalMessage } from '../../../reducers/userDataReducer';
 import './userInfo.scss';
 import { store } from '../../../store';
+import { getSocket } from '../../../reducers/socketReducer';
 
 export const MainChatButtton = () => {
 
@@ -10,7 +11,10 @@ export const MainChatButtton = () => {
     return (
         <div 
             className={!isPrivatChat? 'online active' :'online' }                       
-            onClick={() => {store.dispatch(generalMessage())}}
+            onClick={() => {
+                store.dispatch(getSocket('allmessages'))
+                store.dispatch(generalMessage())
+            }}
         >  
             <div>Main Chat</div>
             <span style={{color: 'green'}}> for all </span>

+ 2 - 3
frontend/src/components/chatPage/userInfo/UserInfo.jsx

@@ -3,7 +3,7 @@ import { StyledAvatar } from '../messageForm/StyledAvatar';
 import { useSelector } from 'react-redux';
 import './userInfo.scss';
 import { useDispatch } from 'react-redux';
-import { getUserAvatar, privateMessage } from '../../../reducers/userDataReducer';
+import { getUserAvatar } from '../../../reducers/userDataReducer';
 import { useState, useEffect } from 'react';
 import { UserInfoButton } from '../generalChat/UserInfoButton';
 import { AdminUserInfiButton } from '../generalChat/AdminUserInfiButton';
@@ -59,7 +59,6 @@ if(socket){
     socket.on('my chats', (data)=> console.log('my chats', data))
 }
     
-
     return (
             <>  
                 <h4 style={{color:'white'}}> Hello, {user.userName} </h4>
@@ -85,7 +84,7 @@ if(socket){
 
                 <FindUserBox/>        
                 
-                    {user.isAdmin && !isTabletorMobile ? 
+                    { user.isAdmin && !isTabletorMobile ? 
                             allUsers.map((item, i) =>
                             (user.userName !== item?.userName) 
                                 && <AdminUserInfiButton item={item} i={i} key={i}/>)