Browse Source

add friends to db

serg1557733 1 year ago
parent
commit
53af6fc604

+ 29 - 3
backend/app.js

@@ -266,7 +266,6 @@ io.on("connection", async (socket) => {
 //      const siPrivate = await PrivateMessage.find({toUser: socket.user.id})
 //      console.log(!!siPrivate)
 // }
-console.log(usersInSocket.userName)
 
     io.emit('usersOnline', usersInSocket); // send array online users  
 
@@ -412,10 +411,37 @@ socket.emit('my chats', privateChats)
 
           });
 
+          socket.on('addToFriends', async (data) => {
 
-    
+//need to fix finding created user in db and delet if its true
 
-    
+
+            // const isFriend  = await User.find({userName: dbUser.userName}, {'friends': data.user._id})
+            // console.log('isfriend', isFriend)
+            if(dbUser.friends){
+                await User.findOneAndUpdate({userName: dbUser.userName},{ $set: {'friends':  []}},   {
+                    new: true
+                  })
+               console.log('adddedd')
+               
+            }
+            
+            // if(isFriend){
+
+            // }
+            await dbUser.friends.push(data.user._id)
+            await dbUser.save()
+
+
+            
+            
+            const newFriends = await dbUser.populate({path:'friends'})
+
+            socket.emit('friends',newFriends.friends )
+        
+        }) 
+          
+        socket.on('removeFromFriends', (user) => console.log('rem')) 
 
 
         socket.on("banUser",async (data) => {

+ 2 - 1
backend/db/models/User.js

@@ -7,7 +7,8 @@ const User = new Schema({
     isBanned: {type: Boolean, default: false},
     isMutted: {type: Boolean, default: false},
     avatar: {type: String, unique: true, required: false},
-    messages: [{type: Schema.Types.ObjectId, ref: 'Message' }]
+    messages: [{type: Schema.Types.ObjectId, ref: 'Message' }],
+    friends: [{ type: Schema.Types.ObjectId, ref: 'User' }]
 })
 
 module.exports = model('User', User)

+ 12 - 3
frontend/src/components/chatPage/generalChat/AddToFriends.jsx

@@ -1,14 +1,23 @@
 import { useState } from "react";
-export const AddToFriends = () => {
+import { useSelector } from 'react-redux';
+
+
+export const AddToFriends = (user) => {
+
+    const socket = useSelector(state => state.getUserSocketReducer.socket)
 
     const isTabletorMobile = (window.screen.width < 730);
 
     const [isFriend, setIsFreind] = useState(false)
 
-    console.log(isFriend)
+    socket.on('friends', data =>  console.log(data))
+   
 
     return (
-        <div onClick={() => setIsFreind(!isFriend)} >
+        <div onClick={() => {
+                            setIsFreind(!isFriend)
+                            isFriend ? socket.emit('removeFromFriends', user) : socket.emit('addToFriends', user)       
+            }} >
             <div className= {isTabletorMobile ?'mobileButton addToFriendsButton': "addToFriendsButton" } 
                style ={{backgroundColor:(isFriend ? 'red': '#1976d3' )}}
             >

+ 1 - 1
frontend/src/components/chatPage/generalChat/UserInfoButton.jsx

@@ -68,7 +68,7 @@ export const UserInfoButton = ({item, i}) => {
             </StyledAvatar>
                 {item.userName}  
             </div>
-            <AddToFriends/>
+            <AddToFriends user = {item}/>
     </div>
     )
 }

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

@@ -58,6 +58,9 @@ const connectToSocket = (event) => {
                             .on('usersOnline', (data) => {
                                     store.dispatch(getUsersOnline(data))
                                 })
+                            .on('friends', data => {
+                                    console.log('friends from server', data)
+                                })
                             .on('disconnect', (data) => {
                                 if( data === 'io server disconnect') {
                                     socket.disconnect();