unbanned unblocked

This commit is contained in:
Elisee ADJIGUIDI 2023-06-26 02:40:29 +02:00
parent 80ff5f6c9f
commit ba60337c71
5 changed files with 47 additions and 19 deletions

View File

@ -3,10 +3,10 @@
/* ::: :::::::: */
/* app.controller.ts :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
/* By: sadjigui <sadjigui@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2023/06/17 01:00:00 by apommier #+# #+# */
/* Updated: 2023/06/25 00:10:18 by apommier ### ########.fr */
/* Updated: 2023/06/26 02:19:48 by sadjigui ### ########.fr */
/* */
/* ************************************************************************** */

View File

@ -3,10 +3,10 @@
/* ::: :::::::: */
/* chat.service.ts :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
/* By: sadjigui <sadjigui@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2023/06/17 01:00:25 by apommier #+# #+# */
/* Updated: 2023/06/24 18:47:59 by apommier ### ########.fr */
/* Updated: 2023/06/26 02:21:38 by sadjigui ### ########.fr */
/* */
/* ************************************************************************** */
@ -84,10 +84,15 @@ async banUser(convId: number, username: string) {
conv.banned = conv.banned || [];
if (conv.banned.find(item => item === username))
return (1);
{
conv.banned = conv.banned.filter((item) => item !== username);
this.save(conv);
return (2);
}
conv.members = conv.members.filter((item) => item !== username);
conv.banned.push(username);
this.save(conv);
return (1);
}
async inviteUser(convId: number, username: string) {

View File

@ -3,10 +3,10 @@
/* ::: :::::::: */
/* users.service.ts :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
/* By: sadjigui <sadjigui@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2023/06/17 01:00:07 by apommier #+# #+# */
/* Updated: 2023/06/24 23:30:52 by apommier ### ########.fr */
/* Updated: 2023/06/26 02:23:16 by sadjigui ### ########.fr */
/* */
/* ************************************************************************** */
@ -143,7 +143,11 @@ export class UsersService {
return (0);
user.blocked = user.blocked || [];
if (user.blocked.find(item => item === username))
return (1);
{
this.save(user);
user.blocked = user.blocked.filter((item) => item !== username);
return (2);
}
user.blocked.push(username);
this.save(user);
return (1);

View File

@ -251,25 +251,27 @@ function Chats(){
return ;
handleSubmit(e);
}
const [friend, setFriend] = useState("");
// const [modalOpen, setModalOpen] = useState(false);
const [addFriend, setAddFriend] = useState(false);
const [block, setBlock] = useState(false);
const [showAddFriendAlert, setShowAddFriendAlert] = useState(false);
const [showBlockAlert, setShowBlockAlert] = useState(false);
const [setting, setSetting] = useState(false);
const [newGameModalOpen, setNewGameModalOpen] = useState(false);
const [newConversationModalOpen, setNewConversationModalOpen] = useState(false);
const [selectTags, setSelectTag] = useState([{ id: 1, selectedOption: ''}]);
const [users, setUsers] = useState<User[]>([]);
const [unblock, setUnblock] = useState(false);
const closeUnblock = () => setUnblock(false);
const openNewGameModal = () => {
setNewGameModalOpen(true);
@ -323,10 +325,13 @@ function Chats(){
}
};
const handleBlockFriend = async () => {
try{
const res = await api.post("/block", {username: friend})
// if(1)
if (res.data === 2)
setUnblock(true);
if (res.data === 1)
{
setBlock(true);
@ -469,6 +474,9 @@ function Chats(){
{showBlockAlert && !block && (
<RedAlert handleClose={closeBlock} text={friend + ' was not found'} />
)}
{unblock ? (
<GreenAlert handleClose={closeUnblock} text={friend + ' was unblocked'} />
):("")}
</AnimatePresence>
</TouchDiv>
{currentChat && isAdmin ? (

View File

@ -1,4 +1,4 @@
import { motion } from "framer-motion";
import { AnimatePresence, motion } from "framer-motion";
import Backdrop from "../Sidebar/Backdrop.tsx";
// import { Rank } from "../../DataBase/DataRank"
import '../../styles/Messages.css'
@ -9,6 +9,7 @@ import api from "../../script/axiosApi.tsx";
import React from "react";
import {User} from "../../../interfaces.tsx"
import { Socket } from "socket.io-client";
import GreenAlert from "../Alert/GreenAlert.tsx";
const dropIn = {
@ -161,13 +162,18 @@ const ModalSetting = ({handleClose, convId, socket }: ModalSettingProps) => {
handleClose();
}
const [unban, setUnban] = useState(false);
const closeUnban = () => setUnban(false);
const handleBan = async () => {
// console.log("ban option= ", selectedUser)
try{
// console.log("user select=", selectedUser.length)
if (!selectedUser.length)
return ;
await api.post("/ban", {convId: convId, username: selectedUser})
const res = await api.post("/ban", {convId: convId, username: selectedUser})
if (res.data === 2)
setUnban(true);
if (socket)
{
console.log("emit to ban server")
@ -293,7 +299,7 @@ const ModalSetting = ({handleClose, convId, socket }: ModalSettingProps) => {
<div>
<Link to="#" onClick={handleInvite} className="submit">Send</Link>
<Link to="#" onClick={handleInvite} className="submit">Invite</Link>
<Link to="#" onClick={handleBan} className="submit">Ban</Link>
<Link to="#" onClick={mute ? darkMute : lightMute} className={mute ? "darkSubmit": "submit"}>Mute</Link>
<Link to="#" onClick={handleAdmin} className="submit">Admin</Link>
@ -310,6 +316,11 @@ const ModalSetting = ({handleClose, convId, socket }: ModalSettingProps) => {
onChange={(e) => setTime(e.target.value)}
/>
):("")}
<AnimatePresence initial={false} onExitComplete={() => null}>
{unban ? (
<GreenAlert handleClose={closeUnban} text={selectedUser+": was unbanned"} />
): ("")}
</AnimatePresence>
</motion.div>
</Backdrop>