diff --git a/src/components/layout/dashboard/card_user/CardUser.tsx b/src/components/layout/dashboard/card_user/CardUser.tsx index 5a4a0fe..cddfca3 100644 --- a/src/components/layout/dashboard/card_user/CardUser.tsx +++ b/src/components/layout/dashboard/card_user/CardUser.tsx @@ -18,14 +18,7 @@ import { useState } from "react"; import SearchFailCard from "./SearchFailCard"; import LoadingPage from "@/components/LoadingPage"; -export default function CardUser({ - users, - loggedUser, - userLikes, - setUserLikes, - userDislikes, - setUserDislikes, -}) { +export default function CardUser({ users, loggedUser, setMatch }) { const toast = useToast({ position: "top", duration: 2000, @@ -61,8 +54,10 @@ export default function CardUser({ }); return; } + if (data.match) { + setMatch(true); + } setListUsers(listUsers.slice(1)); - setUserLikes([...userLikes, data.userLiked]); toast({ title: "J'aime", description: "Votre action a bien été prise en compte", @@ -103,7 +98,6 @@ export default function CardUser({ return; } setListUsers(listUsers.slice(1)); - setUserDislikes([...userDislikes, data.userDisliked]); toast({ title: "J'aime pas", description: "Votre action a bien été prise en compte", diff --git a/src/pages/api/user/like.js b/src/pages/api/user/like.js index 8c31c59..720a6d9 100644 --- a/src/pages/api/user/like.js +++ b/src/pages/api/user/like.js @@ -18,6 +18,30 @@ const post = async (req, res) => { const match = likedByList.OtherUserLikesID.includes(idUserLiked); + if (match) { + await prisma.notification.create({ + data: { + type: NotificationType.MATCH, + user: { + connect: { + id: idUser, + }, + }, + }, + }); + + await prisma.notification.create({ + data: { + type: NotificationType.MATCH, + user: { + connect: { + id: idUserLiked, + }, + }, + }, + }); + } + //faire une notification mais faut qu'on regarde un meilleur moyen dans la BD await prisma.user.update({ diff --git a/src/pages/dashboard.tsx b/src/pages/dashboard.tsx index 9176d5f..c333e6e 100644 --- a/src/pages/dashboard.tsx +++ b/src/pages/dashboard.tsx @@ -16,8 +16,7 @@ import LoadingPage from "@/components/LoadingPage"; export default function Dashboard() { const router = useRouter(); const toast = useToast({ position: "top", isClosable: true }); - const [userLikes, setUserLikes] = useState([] as string[]); - const [userDislikes, setUserDislikes] = useState([] as string[]); + const [newMatch, setNewMatch] = useState(false); const { data: session, status } = useSession(); @@ -32,9 +31,6 @@ export default function Dashboard() { queryFn: async () => { const { user } = session as unknown as Session; - setUserDislikes([...user.UserDislikesID]); - setUserLikes([...user.UserLikesID]); - return fetch(`/api/users/${user.id}`) .then((res) => { return res.json(); @@ -76,6 +72,20 @@ export default function Dashboard() { if (status === "unauthenticated") router.push("/"); } + /** + * + * Avec newMatch, faire une fonction qui refetch le user et qui affiche + * un modal avec les infos du user matché + * + * (peut etre invalidateQueries mais apres je sais pas comment on la relance) + * + * Si j'arrive à faire le invalidateQueries, je met dans le useQuery + * onSuccess: (loggedUser) => { + * if (loggedUser.match.length > 0) + * afficher le modal + * + */ + return ( <>
@@ -105,10 +115,7 @@ export default function Dashboard() {