fix friend and block requests and replace dummy in New conversation
This commit is contained in:
parent
f678d37739
commit
c8a26fd297
@ -60,6 +60,13 @@ export class AppController {
|
||||
return await this.userService.findOne(data.username);
|
||||
}
|
||||
|
||||
@UseGuards(JwtAuthGuard)
|
||||
@Get('/users')
|
||||
async getUsers( @Body() data: any) {
|
||||
console.log(`usernamewwww= ${data.username}`)
|
||||
return await this.userService.findAll();
|
||||
}
|
||||
|
||||
@UseGuards(JwtAuthGuard)
|
||||
@Get('/friends')
|
||||
async getFriends(@Request() req) {
|
||||
@ -68,11 +75,13 @@ export class AppController {
|
||||
}
|
||||
|
||||
@UseGuards(JwtAuthGuard)
|
||||
@Post('/friend')
|
||||
@Post('/friend')//need to do it 2 time when user accept one for each
|
||||
async newFriend(@Request() req, @Body() data: any) {
|
||||
// return await this.userService.getFriends(req.user.username);
|
||||
console.log(`user= ${req.user.username}`)
|
||||
const user = await this.userService.findOne(req.user.username)
|
||||
if (!user)
|
||||
return (0);
|
||||
return await this.userService.addFriend(user, data.username);
|
||||
}
|
||||
|
||||
@ -86,7 +95,17 @@ export class AppController {
|
||||
}
|
||||
|
||||
@UseGuards(JwtAuthGuard)
|
||||
@Get('/invite')
|
||||
@Post('/invite')
|
||||
async newInvite(@Request() req, @Body() data: any) {
|
||||
console.log(`user= ${req.user.username}`)
|
||||
const user = await this.userService.findOne(data.username)
|
||||
if (!user)
|
||||
return (0);
|
||||
return await this.userService.newInvite(user, req.user.username);
|
||||
}
|
||||
|
||||
@UseGuards(JwtAuthGuard)
|
||||
@Get('/inviteRequest')
|
||||
async getInvite(@Request() req) {
|
||||
// return await this.userService.getFriends(req.user.username);
|
||||
console.log(`useawdawd\n\n\nr= ${req.user.username}`)
|
||||
@ -94,6 +113,15 @@ export class AppController {
|
||||
return await this.userService.getInvite(req.user.username);
|
||||
}
|
||||
|
||||
@UseGuards(JwtAuthGuard)
|
||||
@Post('/refuseInvite')
|
||||
async refuseInvite(@Request() req, @Body() data: any) {
|
||||
// return await this.userService.getFriends(req.user.username);
|
||||
// console.log(`useawdawd\n\n\nr= ${req.user.username}`)
|
||||
const user = await this.userService.findOne(req.user.username)
|
||||
return await this.userService.refuseInvite(user, data.username);
|
||||
}
|
||||
|
||||
@UseGuards(JwtAuthGuard)
|
||||
@Post('/status')
|
||||
async setStatus(@Request() req, @Body() data: any) {
|
||||
|
||||
@ -49,6 +49,20 @@ export class UsersService {
|
||||
return (friends)
|
||||
}
|
||||
|
||||
async newInvite(user: User, username: string) {
|
||||
if (!(await this.findOne(username)))
|
||||
return (0);
|
||||
// user.friendRequest = user.friendRequest || [];
|
||||
// console.log("newInvite")
|
||||
// console.log(user.friendRequest)
|
||||
user.friendRequest = user.friendRequest || [];
|
||||
if (user.friendRequest.find(item => item === username))
|
||||
return (1);
|
||||
user.friendRequest.push(username);
|
||||
this.save(user);
|
||||
return (1);
|
||||
}
|
||||
|
||||
async getInvite(username: string) {
|
||||
const user = await this.findOne(username)
|
||||
let friendsTab = user.friendRequest
|
||||
@ -61,6 +75,11 @@ export class UsersService {
|
||||
return (friends)
|
||||
}
|
||||
|
||||
async refuseInvite(user: User, username: string) {
|
||||
user.friendRequest = user.friendRequest.filter((item) => item !== username);
|
||||
this.save(user);
|
||||
}
|
||||
|
||||
async getHistory(username: string) {
|
||||
const user = await this.findOne(username);
|
||||
|
||||
@ -69,20 +88,22 @@ export class UsersService {
|
||||
console.log(user);
|
||||
console.log(user.children); // or perform any operations with the children
|
||||
return children;
|
||||
// You can also access specific properties of each child
|
||||
// children.forEach((child) => {
|
||||
// console.log(child.id);
|
||||
// console.log(child.opponent);
|
||||
// // Access other child properties as needed
|
||||
// });
|
||||
}
|
||||
}
|
||||
|
||||
async addFriend(user: User, username: string) {
|
||||
if (!(await this.findOne(username)))
|
||||
return (0);
|
||||
// user.friendRequest = user.friendRequest || [];
|
||||
user.friends = user.friends || [];
|
||||
if (user.friends.find(item => item === username))
|
||||
{
|
||||
user.friendRequest = user.friendRequest.filter((item) => item !== username);
|
||||
this.save(user);
|
||||
return (1);
|
||||
}
|
||||
user.friends.push(username);
|
||||
user.friendRequest = user.friendRequest.filter((item) => item !== username);
|
||||
this.save(user);
|
||||
return (1);
|
||||
}
|
||||
@ -91,6 +112,8 @@ export class UsersService {
|
||||
if (!(await this.findOne(username)))
|
||||
return (0);
|
||||
user.blocked = user.blocked || [];
|
||||
if (user.blocked.find(item => item === username))
|
||||
return (1);
|
||||
user.blocked.push(username);
|
||||
this.save(user);
|
||||
return (1);
|
||||
@ -103,10 +126,6 @@ export class UsersService {
|
||||
async getPic( username: string) {
|
||||
// const user = await this.findOne(username);
|
||||
let result = await this.userRepository.query("select encode(photo, 'base64') FROM public.\"User\" WHERE username = $1;", [username]);
|
||||
// console.log(`result= ${result}`)
|
||||
// console.log(`result= ${result.text}`)
|
||||
// console.log(`encode= ${result.encode}`)
|
||||
// console.log(`encode= ${result.string}`)
|
||||
if (result.length > 0) {
|
||||
const encodedPhoto = result[0].encode;
|
||||
console.log(`pic!!! =`)
|
||||
|
||||
@ -248,7 +248,7 @@ function Chats(){
|
||||
|
||||
const handleAddFriend = async () => {
|
||||
try{
|
||||
const res = await api.post("/friend", {username: friend})
|
||||
const res = await api.post("/invite", {username: friend})
|
||||
// if (res.data === 1)
|
||||
// console.log("res in friend= ", res)
|
||||
console.log("res in friend= ", res.data)
|
||||
@ -368,7 +368,7 @@ function Chats(){
|
||||
</motion.div>
|
||||
<AnimatePresence initial={false} onExitComplete={() => null}>
|
||||
{showAddFriendAlert && addFriend && (
|
||||
<GreenAlert handleClose={closeAddFriend} text={friend + ' was successfully added'} />
|
||||
<GreenAlert handleClose={closeAddFriend} text={ 'invitation sent to ' + friend} />
|
||||
)}
|
||||
{showAddFriendAlert && !addFriend && (
|
||||
<RedAlert handleClose={closeAddFriend} text={friend + ' was not found'} />
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
import { motion } from "framer-motion";
|
||||
import Backdrop from "../Sidebar/Backdrop";
|
||||
import { Rank } from "../../DataBase/DataRank"
|
||||
// import { Rank } from "../../DataBase/DataRank"
|
||||
import '../../styles/Messages.css'
|
||||
import { useState } from "react";
|
||||
import { useState, useEffect } from "react";
|
||||
import { GrAdd } from "react-icons/gr";
|
||||
import { Link } from "react-router-dom";
|
||||
import api from "../../script/axiosApi";
|
||||
@ -23,10 +23,25 @@ const dropIn = {
|
||||
|
||||
};
|
||||
|
||||
const Modal = ({handleClose, text}) => {
|
||||
const Modal = ({handleClose}) => {
|
||||
// const [multi, setMulti] = useState(false);
|
||||
const [selectTags, setSelectTag] = useState([{ id: 1, selectedOption: ''}]);
|
||||
const [selectedOptionArray, setSelectedOptionArray] = useState([]);
|
||||
const [users, setUsers] = useState([]);
|
||||
|
||||
useEffect(()=> {
|
||||
|
||||
const getConv = async ()=>{
|
||||
try {
|
||||
const tmpUsers = await api.get("/users");
|
||||
console.log("users=", tmpUsers.data);
|
||||
setUsers(tmpUsers.data);
|
||||
} catch(err){
|
||||
console.log(err)
|
||||
}
|
||||
}
|
||||
getConv();
|
||||
}, []);
|
||||
|
||||
const handleOptionChange = (selectId, selectedOption) => {
|
||||
console.log("selected Option=", selectedOption)
|
||||
@ -62,7 +77,8 @@ const Modal = ({handleClose, text}) => {
|
||||
setSelectedOptionArray(selectedOptions);
|
||||
|
||||
}
|
||||
let new_name;
|
||||
// let new_name;
|
||||
|
||||
return (
|
||||
<Backdrop>
|
||||
<motion.div
|
||||
@ -84,9 +100,9 @@ const Modal = ({handleClose, text}) => {
|
||||
<option value="">{
|
||||
selectTag.selectedOption ? selectTag.selectedOption : "Select an option"
|
||||
}</option>
|
||||
{Rank.filter((item) => !selectTags.some((tag) => tag.selectedOption === item.name)).map((item, index) => (
|
||||
<option key={index} value={item.name}>
|
||||
{item.name}
|
||||
{users.filter((item) => !selectTags.some((tag) => tag.selectedOption === item.name)).map((item, index) => (
|
||||
<option key={index} value={item.username}>
|
||||
{item.username}
|
||||
</option>
|
||||
))}
|
||||
</select>
|
||||
|
||||
@ -28,14 +28,18 @@ const SideP = styled.p`
|
||||
export default function Friend({currentUser})
|
||||
{
|
||||
const [profilePicture, setProfilePicture] = useState('');
|
||||
const [request, setRequest] = useState('');
|
||||
const [request, setRequest] = useState(''); //user who invite
|
||||
const [clickEvent, setClickEvent] = useState(false);
|
||||
// const [user, setUser] = useState(null);
|
||||
|
||||
useEffect(() => {
|
||||
const fetchProfilePicture = async () => {
|
||||
try {
|
||||
// const user = await api.get("/profile");
|
||||
// const user = await api.get("/profile");\
|
||||
// const tmpUser = await api.get("/profile")
|
||||
const pic = await api.post("/getPicture", {username: currentUser.username})
|
||||
const tmpRequest = await api.post("/user", {username: currentUser.username})
|
||||
// setUser(tmpUser.data);
|
||||
setRequest(tmpRequest.data);
|
||||
// console.log(`user naem profile pic222= ${currentUser.username}`)
|
||||
// console.log(` profile pic222= ${pic.data}`)
|
||||
@ -46,7 +50,7 @@ export default function Friend({currentUser})
|
||||
};
|
||||
|
||||
fetchProfilePicture();
|
||||
}, [])
|
||||
}, [clickEvent])
|
||||
|
||||
const handleButtonClick = (user) => {
|
||||
let path = `http://localhost/profile/${user.username}`;
|
||||
@ -56,16 +60,33 @@ export default function Friend({currentUser})
|
||||
window.location.reload(false);
|
||||
};
|
||||
|
||||
const Accept = (user) => {
|
||||
const Accept = async (request) => {
|
||||
try{
|
||||
await api.post("/friend", {username: request.username})
|
||||
setClickEvent(true);
|
||||
} catch(err) {
|
||||
console.log(err);
|
||||
}
|
||||
console.log("accept")
|
||||
console.log(`request = ${request}`)
|
||||
}
|
||||
|
||||
const Refuse = (user) => {
|
||||
const Refuse = async (request) => {
|
||||
try{
|
||||
await api.post("/refuseInvite", {username: request.username})
|
||||
setClickEvent(true);
|
||||
} catch(err) {
|
||||
console.log(err);
|
||||
}
|
||||
console.log("refuse")
|
||||
console.log(`request = ${request}`)
|
||||
}
|
||||
|
||||
// Vérifier si le contenu doit être caché
|
||||
if (clickEvent) {
|
||||
return null; // Rendre null pour ne pas afficher le contenu
|
||||
}
|
||||
|
||||
return (
|
||||
<UserChat>
|
||||
{profilePicture ? (
|
||||
|
||||
@ -44,7 +44,7 @@ function Social (){
|
||||
try{
|
||||
const tmpFriends = await api.get("/friends")
|
||||
const tmpUser = await api.get("/profile")
|
||||
const tmpInv = await api.get("/invite")
|
||||
const tmpInv = await api.get("/inviteRequest")
|
||||
const pic = await api.post("/getPicture", {username: tmpUser.data.username})
|
||||
|
||||
setInvite(tmpInv.data);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user