Browse Source

fix socket connected for sending user data

serg1557733 1 year ago
parent
commit
ed397caa92

+ 2 - 4
backend/app.js

@@ -240,10 +240,9 @@ io.on("connection", async (socket) => {
     const sockets = await io.fetchSockets();
     const dbUser = await getOneUser(userName);
     const allUsers = await getAllDbUsers(socket) // send allUsers from DB to socket user
-
     //need to use this ID to socket privat messges
 
-    
+    socket.emit('connected', dbUser); //socket.user
     const usersInSocket = [];
         for (let [id, socket] of io.of("/").sockets) {
             
@@ -269,7 +268,6 @@ io.on("connection", async (socket) => {
 // }
 
     io.emit('usersOnline', usersInSocket); // send array online users  
-    
     dbUser.populate({path:'friends'}).then(res => socket.emit('friends',res.friends)) 
     //send private chats for user
 
@@ -286,7 +284,7 @@ io.on("connection", async (socket) => {
 
 socket.emit('my chats', privateChats)
 
-    //socket.emit('connected', dbUser); //socket.user
+  
   
     if(socket.user.isAdmin){
          getAllDbUsers(socket); 

+ 3 - 2
frontend/src/components/chatPage/ChatPage.jsx

@@ -74,7 +74,7 @@ export const ChatPage = () => {
     }
 
 
-
+    console.log('************render*************')
     const sendPrivateMessage = () => {
         console.log(toUser.socketId)
         socket.emit("private message", {
@@ -98,9 +98,10 @@ export const ChatPage = () => {
  
     useEffect(() => {
         if(token && socket){
+            console.log('useEffect...')
             socketEvents(socket)
         }
-    }, [token, socket])
+    }, [token, socket, user])
 
 
 

+ 1 - 5
frontend/src/components/chatPage/userInfo/UserInfo.jsx

@@ -4,7 +4,7 @@ import { useSelector } from 'react-redux';
 import './userInfo.scss';
 import { useDispatch } from 'react-redux';
 import { getUserAvatar } from '../../../reducers/userDataReducer';
-import { useState, useCallback } from 'react';
+import { useState } from 'react';
 import { UserInfoButton } from '../generalChat/UserInfoButton';
 import { AdminUserInfiButton } from '../generalChat/AdminUserInfiButton';
 import { MainChatButtton } from '../generalChat/MainChatButtton';
@@ -51,13 +51,9 @@ export const UserInfo = () => {
         setDisplayType('none')
     }
 
-console.log(user)
-
     // if(socket){
     //     socket.on('my chats', (data)=> console.log('my chats', data))
     // }
-
-console.log(usersOnline)
         
 
     return (

+ 0 - 7
frontend/src/reducers/socketReducer.js

@@ -1,9 +1,4 @@
 import {createSlice } from '@reduxjs/toolkit';
-import {io} from 'socket.io-client';
-import { store } from '../store';
-import { removeToken } from './userDataReducer';
-import { privateMessage } from './userDataReducer';
-
 
 const initialState = {
     socketStatus: 'idle',
@@ -19,8 +14,6 @@ const initialState = {
     friends: []
 }
 
-
-
 export const getUserSocketSlice = createSlice({
     name: 'userSocket',
     initialState,

+ 35 - 34
frontend/src/utils/socketsEvents.js

@@ -3,39 +3,40 @@ import { getAllMessages, getAllUsers, addNewMessage, getUser,addNewPrivateMessag
 import { removeToken } from "../reducers/userDataReducer";
 
 export const socketEvents = (socket) => {
-
-socket.on('connected', data => {
-                            store.dispatch(getUser(data));
-                            })
-                            .on('allmessages', (data) => {
-                                store.dispatch(getAllMessages(data));
-                                    })
-                            .on('allDbUsers', (data) => {
-                                store.dispatch(getAllUsers(data));
-                                        })    
-                            .on('newmessage', (data) => {
-                                store.dispatch(addNewMessage(data))
-                                })
-                            .on('private', (data) => {
-                                console.log(data)
-                               store.dispatch(addNewPrivateMessage(data))
-                                   })
-                            .on('ban', (data) => {
-                                store.dispatch(removeToken()); 
-                                localStorage.removeItem('token');
-                                })
-                            .on('usersOnline', (data) => {
-                                    store.dispatch(getUsersOnline(data))
-                                })
-                            .on('friends', data => {
-                                    store.dispatch(friendsFromSocket(data))
-                                })
-                            .on('disconnect', (data) => {
-                                if( data === 'io server disconnect') {
-                                   // socket.disconnect();
-                                    store.dispatch(removeToken()); 
-                                }
-                            })
-                            .on('error', e => {console.log('On connected', e)}); 
+console.log('socket event...')
+socket.on('connected',  data => {
+                        store.dispatch(getUser(data));
+                        console.log('getuserdata', data)
+        })
+        .on('allmessages', (data) => {
+            store.dispatch(getAllMessages(data));
+                })
+        .on('allDbUsers', (data) => {
+            store.dispatch(getAllUsers(data));
+                    })    
+        .on('newmessage', (data) => {
+            store.dispatch(addNewMessage(data))
+            })
+        .on('private', (data) => {
+            console.log(data)
+            store.dispatch(addNewPrivateMessage(data))
+                })
+        .on('ban', (data) => {
+            store.dispatch(removeToken()); 
+            localStorage.removeItem('token');
+            })
+        .on('usersOnline', (data) => {
+                store.dispatch(getUsersOnline(data))
+            })
+        .on('friends', data => {
+                store.dispatch(friendsFromSocket(data))
+            })
+        .on('disconnect', (data) => {
+            if( data === 'io server disconnect') {
+                // socket.disconnect();
+                store.dispatch(removeToken()); 
+            }
+        })
+        .on('error', e => {console.log('On connected', e)}); 
 }