import { Grid, GridItem, Text, Box, useToast } from "@chakra-ui/react"; import { useSession } from "next-auth/react"; import { useRouter } from "next/router"; import { useState } from "react"; import type { Session } from "@/models/auth/Session"; import CardUser from "../components/layout/dashboard/card_user/CardUser"; import SearchFailCard from "../components/layout/dashboard/card_user/SearchFailCard"; import LeftPanel from "../components/layout/dashboard/left_panel/LeftPanel"; import Head from "next/head"; import { websiteName } from "@/lib/constants"; import { useQuery } from "@tanstack/react-query"; 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 { data: session, status } = useSession(); const { isLoading, isError, data: loggedUser, error, } = useQuery({ queryKey: ["LoggedUser"], enabled: status === "authenticated", 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(); }) .catch((err) => { return err; }); }, }); /* Erreur quand je retourn de userProfile à dashboard */ const { data: listUsers, isError: isErrorListUsers, isLoading: isLoadingListUsers, error: errorListUsers, } = useQuery({ queryKey: ["ListUsers"], enabled: status === "authenticated" && !isLoading, queryFn: async () => { return fetch( `/api/user/userDashboard?preferences=${[ loggedUser.prefGender, loggedUser.ageMin, loggedUser.ageMax, loggedUser.distance, ]}&excludedId=${loggedUser.id}&userLikes=${ loggedUser.UserLikesID }&userDislikes=${loggedUser.UserDislikesID}` ) //exclure les profils déjà like ou dislike .then((res) => res.json()) .catch((err) => { return err; }); }, }); if (isLoading) { if (status === "unauthenticated") router.push("/login"); return ; } if (isError) { toast({ title: `Erreur lors de la récupération des données du profil`, status: "error", position: "top", }); if (status === "unauthenticated") router.push("/"); } return ( <> {websiteName} | Dashboard {isLoadingListUsers ? ( ) : isErrorListUsers || listUsers === undefined || listUsers.users === undefined || listUsers.users.length === 0 ? ( ) : ( // dans cardUser, mettre une liste de user, utiliser le user[0] et quand like ou dislike, supprimer le user[0] de la liste )} {/*Right top*/} {/*Right Bottom*/} ); }