add link profil

master
Bastien OLLIER 2 years ago
parent 5de0542907
commit 4bf2a9250e

@ -13,20 +13,6 @@ export const getUser = (uid) => {
};
};
export const getNotif = (uid) => {
console.log("loadNotif3");
return (dispatch)=> {
return axios
.get(`${process.env.REACT_APP_API_URL}api/user/notif/${uid}`)
.then((res) => {
dispatch(setUserData(res.data))
})
.catch((err) => console.log(err));
};
};
export const uploadPicture = (data, id) => {
return (dispatch) => {
return axios

@ -19,7 +19,7 @@ const AjoutLien = () => {
dispatch(getPosts());
cancelPost();
setDisplayAdd(false);
window.location.reload();
//window.location.reload();
}else {
alert("Veuillez compléter tous les champs.")
}

@ -0,0 +1,37 @@
import React, {useEffect,useState} from 'react';
import {useDispatch, useSelector} from "react-redux";
import {getPosts} from "../actions/post.actions";
import {getUserTemp} from "../actions/user.actions";
import {useParams} from "react-router-dom";
import {isEmpty} from "./Utils";
import FollowHandler from "./UserProfil/FollowHandler";
const MiniProfil = ({uid} ) => {
const [userData, setUserData] = useState(null);
useEffect(() => {
async function fetchData() {
const response = await fetch(`${process.env.REACT_APP_API_URL}api/user/${uid}`);
const data = await response.json();
setUserData(data);
}
fetchData();
}, [uid]);
if (!userData) {
return <p>Loading...</p>;
}
return (
<div className="ListReco">
<div className="UtiReco">
<img className="image" src={userData.picture}/>
<a href={`/Profil/${uid}`}>{userData.pseudo}</a>
</div>
</div>
);
};
export default MiniProfil;

@ -23,7 +23,7 @@ const Navbar = () => {
data.append('postedId', userData._id);
data.append('message', description);
data.append('lien', lien);
console.log(data);
//console.log("test",data);
putData(data);
console.log(data);
cancelPost();
@ -110,7 +110,7 @@ const Navbar = () => {
</NavLink>
</li>
<li className="navbar-item">
<NavLink to="/Profil" className="navbar-link">
<NavLink to="/Profil/63bea7b7b50d82de71f56184" className="navbar-link">
<i className="fas fa-user navbar-icon"></i>
<span className="navbar-title">Me</span>
</NavLink>

@ -1,30 +1,30 @@
import React from 'react';
import {isEmpty} from "./Utils";
import React, {useEffect,useState} from 'react';
import {useDispatch, useSelector} from "react-redux";
import {getPosts} from "../actions/post.actions";
import {getUserTemp} from "../actions/user.actions";
import MiniProfil from "./MiniProfil";
const Notif = ({notification} ) => {
const messageNotif = (typeNotif) =>{
if(typeNotif == 'like') {
const Notif = ({notification} ) => {
console.log('notification',notification)
const MessageNotif = (notification) =>{
if(notification.typeNotif == 'like') {
return "a like";
}
return 'a commenter'
else if(notification.typeNotif == 'commente') {
return "a commenter votre post";
}
return 'vous follow'
}
return (
<div className='conteneur_notif'>
<div className='conteneur_notif' key={notification._id}>
<MiniProfil uid={notification.id_user}></MiniProfil>
<div className={'contenue_notif'}>
<img id="PhotoProfile" alt="" src="lien" />
</div>
<div className={'contenue_notif'} >
<h6 id="NomProfile">
{notification.typeNotif}
</h6>
</div>
<div className={'contenue_notif'}>
{
messageNotif(notification.typeNotif)
}
{ MessageNotif(notification) }
</div>
</div>
);
};

@ -26,6 +26,10 @@ const NouveauDisplayPosts = () => {
return () => window.removeEventListener('scroll',loadMore);
}, [loadPost,dispatch,count])
if (!loadPost) {
return <p>Loading...</p>;
}
return (
<div>
<ul>

@ -16,7 +16,7 @@ const index = () => {
<Route path="/Trends" element={<Trends/>} />
<Route path="/Discover" element={<Discover/>} />
{/* <Route path="*" element={<HomeNavigation/>} /> */}
<Route path="/Profil" element={<Profil />} />
<Route path="/Profil/:uid" element={<Profil/>} />
<Route path="/Configuration" element={<Configuration/>}/>
</Routes>
</BrowserRouter>

@ -1,21 +1,34 @@
import {React, useState} from 'react';
import React,{useEffect, useState} from 'react';
import { useDispatch, useSelector } from 'react-redux';
import { useParams } from 'react-router-dom'
import Navbar from '../components/Navbar';
import { dateParser } from '../components/Utils';
import {dateParser, isEmpty} from '../components/Utils';
import FollowHandler from '../components/UserProfil/FollowHandler';
import PostPersonnels from '../components/UserProfil/NavigationProfil/PostsPersonnels';
import DossierPersonnels from '../components/UserProfil/NavigationProfil/DossiersPersonnels';
import PostsLikes from '../components/UserProfil/NavigationProfil/PostsLikes';
import MiniProfil from "../components/MiniProfil";
const Profil = () => {
const userData = useSelector((state) => state.user.user);
const usersData = useSelector((state) => state.users.users);
const dispatch = useDispatch();
const { uid } = useParams();
const [userData, setUserData] = useState(null);
useEffect(() => {
async function fetchData() {
const response = await fetch(`${process.env.REACT_APP_API_URL}api/user/${uid}`);
const data = await response.json();
setUserData(data);
}
fetchData();
}, [uid]);
const [followingPopup, setFollowingPopup] = useState(false);
const [followerPopup, setFollowerPopup] = useState(false);
const [dossierPersonnels,setdossierPersonnels ] = useState(false);
const [postPersonnels,setpostPersonnels ] = useState(true);
const [postLikes,setpostLikes ] =useState(false)
const [postLikes,setpostLikes ] = useState(false)
const handleModals = (e) => {
if (e.target.id === "DossierPersonnels") {
@ -31,37 +44,39 @@ const Profil = () => {
setpostPersonnels(false);
setpostLikes(true);
}
};
};
if (!userData) {
return <p>Loading...</p>;
}
return (
<>
<Navbar />
{/* <main>
<div id="bandeauProfil">
<h1 className='affichage-date'>Compte créé le : {dateParser(userData.createdAt)}</h1>
<h1 classNameName='affichage-date'>Compte créé le : {dateParser(userData.createdAt)}</h1>
<div id="image">
<img id="PhotoProfile" alt="Profil" src={userData.picture}/>
</div>
<div id="blocName">
<h1>{userData.pseudo}</h1>
<h2 className="subdo">@{userData.pseudo}</h2>
<h2 classNameName="subdo">@{userData.pseudo}</h2>
<div>
<div id="blocAbonnement">
<div onClick={() => setFollowingPopup(true)} className="bloc-aboonnements-abonner">
<div className="nombre">{userData.following.length}</div>
<div className="texteNombre">Abonnement</div>
<div onClick={() => setFollowingPopup(true)} classNameName="bloc-aboonnements-abonner">
<div classNameName="nombre">{userData.following.length}</div>
<div classNameName="texteNombre">Abonnement</div>
</div>
<div onClick={() => setFollowerPopup(true)} className="bloc-aboonnements-abonner">
<div className="nombre">{userData.followers.length}</div>
<div className="texteNombre">Abonnée</div>
<div onClick={() => setFollowerPopup(true)} classNameName="bloc-aboonnements-abonner">
<div classNameName="nombre">{userData.followers.length}</div>
<div classNameName="texteNombre">Abonnée</div>
</div>
{followingPopup && (
<div className="popup-profil-container">
<div className="modal">
<div classNameName="popup-profil-container">
<div classNameName="modal">
<h3>Abonnements</h3>
<span className="cross" onClick={() => setFollowingPopup(false)}>
<span classNameName="cross" onClick={() => setFollowingPopup(false)}>
&#10005;
</span>
<ul>
@ -72,7 +87,7 @@ const Profil = () => {
<li key={user._id}>
<img src={user.picture} alt="user-pic" />
<h4>{user.pseudo}</h4>
<div className="follow-handler">
<div classNameName="follow-handler">
<FollowHandler idToFollow={user._id} type={'card'}/>
</div>
</li>
@ -86,10 +101,10 @@ const Profil = () => {
</div>
)}
{followerPopup && (
<div className="popup-profil-container">
<div className="modal">
<div classNameName="popup-profil-container">
<div classNameName="modal">
<h3>Abonnés</h3>
<span className="cross" onClick={() => setFollowerPopup(false)}>
<span classNameName="cross" onClick={() => setFollowerPopup(false)}>
&#10005;
</span>
<ul>
@ -100,7 +115,7 @@ const Profil = () => {
<li key={user._id}>
<img src={user.picture} alt="user-pic" />
<h4>{user.pseudo}</h4>
<div className="follow-handler">
<div classNameName="follow-handler">
<FollowHandler idToFollow={user._id} type={'card'} />
</div>
</li>
@ -123,24 +138,24 @@ const Profil = () => {
<main>
<div>
<div>
<div class="imageProfil">
<img class="image" src={userData.picture}/>
<div className="imageProfil">
<img className="image" src={userData.picture}/>
</div>
<div class="divPseudo">
<h3 class="pseudo">{userData.pseudo}</h3>
<div className="divPseudo">
<h3 className="pseudo">{userData.pseudo}</h3>
{/* <h3>suuu</h3> */}
</div>
<div class="divSuivreFollowing">
<a href="#" class="button" id="button">Suivre +</a>
<div className="divSuivreFollowing">
<a href="#" className="button" id="button">Suivre +</a>
</div>
<div class="divSuivreFollowing">
<div class="nbFollow" onClick={() => setFollowingPopup(true)}>
<div className="divSuivreFollowing">
<div className="nbFollow" onClick={() => setFollowingPopup(true)}>
<h4>{userData.following.length}</h4>
<h4 class="txtFollower">Abonnements</h4>
<h4 className="txtFollower">Abonnements</h4>
</div>
<div class="nbFollow" onClick={() => setFollowerPopup(true)}>
<div className="nbFollow" onClick={() => setFollowerPopup(true)}>
<h4>{userData.followers.length}</h4>
<h4 class="txtFollower">Abonnés</h4>
<h4 className="txtFollower">Abonnés</h4>
</div>
</div>
{followingPopup && (
@ -151,50 +166,42 @@ const Profil = () => {
&#10005;
</span>
<ul>
{usersData.map((user) => {
for (let i = 0; i < userData.following.length; i++) {
if (user._id === userData.following[i]) {
return (
<li key={user._id}>
<img src={user.picture} alt="user-pic" />
<h4>{user.pseudo}</h4>
<div className="follow-handler">
<FollowHandler idToFollow={user._id} type={'card'}/>
</div>
</li>
);
}
{
userData.following.map((follower, i) => {
return (
<li key={i}>
<MiniProfil uid={follower}/>
<div classNameName="follow-handler">
<FollowHandler idToFollow={uid} type={'card'}/>
</div>
</li>
)
})
}
return null;
})}
</ul>
</div>
</div>
)}
{followerPopup && (
<div className="popup-profil-container">
<div className="modal">
<div classNameName="popup-profil-container">
<div classNameName="modal">
<h3>Abonnés</h3>
<span className="cross" onClick={() => setFollowerPopup(false)}>
<span classNameName="cross" onClick={() => setFollowerPopup(false)}>
&#10005;
</span>
<ul>
{usersData.map((user) => {
for (let i = 0; i < userData.followers.length; i++) {
if (user._id === userData.followers[i]) {
return (
<li key={user._id}>
<img src={user.picture} alt="user-pic" />
<h4>{user.pseudo}</h4>
<div className="follow-handler">
<FollowHandler idToFollow={user._id} type={'card'} />
</div>
</li>
);
{
userData.followers.map((follower, i) => {
return (
<li key={i}>
<MiniProfil uid={follower}/>
<div classNameName="follow-handler">
<FollowHandler idToFollow={uid} type={'card'}/>
</div>
</li>
)
})
}
}
return null;
})}
</ul>
</div>
</div>
@ -202,29 +209,29 @@ const Profil = () => {
</div>
<div class="basDePage">
<div class="divMenu">
<div className="basDePage">
<div className="divMenu">
<div>
<nav role="navigation" class="navProfil">
<ul class="navItemsProfil">
<li class="navItemProfil">
<a class="navLinkProfil" id='DossierPersonnels' onClick={handleModals}><span>Dossier Personnel</span></a>
<nav role="navigation" className="navProfil">
<ul className="navItemsProfil">
<li className="navItemProfil">
<a className="navLinkProfil" id='DossierPersonnels' onClick={handleModals}><span>Dossier Personnel</span></a>
</li>
<li class="navItemProfil">
<a class="navLinkProfil" id='PostsPersonnels' onClick={handleModals}><span>Posts</span></a>
<li className="navItemProfil">
<a className="navLinkProfil" id='PostsPersonnels' onClick={handleModals}><span>Posts</span></a>
</li>
<li class="navItemProfil">
<a class="navLinkProfil" id='PostLikes' onClick={handleModals}><span>Posts likés</span></a>
<li className="navItemProfil">
<a className="navLinkProfil" id='PostLikes' onClick={handleModals}><span>Posts likés</span></a>
</li>
</ul>
</nav>
</div>
<div class="menuContent">
<div className="menuContent">
<div class="listContent">
<div className="listContent">
{dossierPersonnels &&<DossierPersonnels/>}
{postPersonnels &&<PostPersonnels/>}
{postLikes &&<PostsLikes/>}
@ -232,25 +239,25 @@ const Profil = () => {
</div>
</div>
<div class="recoDiv">
<div class="reco">
<div className="recoDiv">
<div className="reco">
<span>Vous pourriez suivre</span>
<hr/>
<div class="ListReco">
<div class="UtiReco">
<img class="image" src="https://ionicframework.com/docs/img/demos/avatar.svg"/>
<div className="ListReco">
<div className="UtiReco">
<img className="image" src="https://ionicframework.com/docs/img/demos/avatar.svg"/>
<span>UtiT</span>
<a href="#" class="buttonReco" id="button">Suivre</a>
<a href="#" className="buttonReco" id="button">Suivre</a>
</div>
<div class="UtiReco">
<img class="image" src="https://ionicframework.com/docs/img/demos/avatar.svg"/>
<div className="UtiReco">
<img className="image" src="https://ionicframework.com/docs/img/demos/avatar.svg"/>
<span>UtiT</span>
<a href="#" class="buttonReco" id="button">Suivre</a>
<a href="#" className="buttonReco" id="button">Suivre</a>
</div>
<div class="UtiReco">
<img class="image" src="https://ionicframework.com/docs/img/demos/avatar.svg"/>
<div className="UtiReco">
<img className="image" src="https://ionicframework.com/docs/img/demos/avatar.svg"/>
<span>UtiT</span>
<a href="#" class="buttonReco" id="button">Suivre</a>
<a href="#" className="buttonReco" id="button">Suivre</a>
</div>
</div>

@ -1,80 +1,36 @@
import React, {useEffect, useState} from 'react';
import React, {useState} from 'react';
import Navbar from '../components/Navbar';
import Notif from '../components/Notif';
import {useDispatch, useSelector} from "react-redux";
import {getNotif, getUser} from '../actions/user.actions';
import {isEmpty} from "../components/Utils";
import axios from "axios";
import FollowHandler from "../components/UserProfil/FollowHandler";
import Post from "../components/Post/Post";
import {useSelector} from "react-redux";
const Trends = () => {
console.log('test');
const [loadNotif, setLoadNotif] = useState(true);
const [count , setCount] = useState(5);
const dispatch = useDispatch();
const [setLoadNotif] = useState(true);
const userData = useSelector((state) => state.user.user);
const usersData = useSelector((state) => state.users.users);
const loadMore = () => {
if (window.innerHeight + document.documentElement.scrollTop + 1 > document.scrollingElement.scrollHeight){
setLoadNotif(true);
}
}
console.log("userData",userData,userData.notif, userData.notif.length);
console.log("idUser: ",userData._id);
return (
<div id={'listeNotif'}>
<Navbar />
<h1>Notification</h1>
{ /*userData.notif.length ? userData.notif.filter(notif => notif._id === userData.notif._id).map((notif) => <Notif message="dfdf"/>)
: <h3>Aucune Notification</h3>*/
{
userData.notif != null && userData.notif.map((notif) => {
return <Notif notification={notif}/>
return (
<li>
<Notif key={notif._id} notification={notif}/>
</li>
);
})
}
</div>
);
/*
return (
<div id={'listeNotif'}>
<Navbar />
<h1>Notification</h1>
{
return(<h3>Aucune Notification</h3>);
userData.notif.map((notif) => {
for (let i = 0; i < userData.notif.length; i++) {
if (notif._id === userData.notif[i]) {
return (
<Notif message="dfdf"/>
);
}
}
return <h3>Aucune Notification</h3>;
})
}
</div>
);*/
return (
<div id={'listeNotif'}>
<Navbar />
<h1>Notification</h1>
<Notif message="a like"/>
<Notif message="a like"/>
<Notif message="a like"/>
<Notif message="a like"/>
<Notif message="a like"/>
<Notif message="a commenter votre poste"/>
</div>);
};
export default Trends;

@ -165,7 +165,9 @@ module.exports.unlikePost = async (req, res) => {
// }
// };
module.exports.commentPost = (req, res) => {
module.exports.commentPost = async (req, res) => {
const idUser = await PostModel.findOne({ _id: ObjectID( req.params.id) });
if (!ObjectID.isValid(req.params.id))
return res.status(400).send("ID unknown : " + req.params.id);
@ -183,7 +185,14 @@ module.exports.commentPost = (req, res) => {
},
},
{ new: true })
.then((data) => res.send(data))
.then((data) => {
addNotification.addNotification(idUser.postedId, {
typeNotif: "commente",
id_user: req.body.commenterId,
id_post1: req.params.id,
id_post2: data.comments.slice(-1)[0]._id
});
res.send(data);})
.catch((err) => res.status(500).send({ message: err }));
} catch (err) {
return res.status(400).send(err);

@ -8,9 +8,7 @@ module.exports.getAllUsers = async (req, res) => {
};
module.exports.getNotif = async (req, res) => {
const users = await UserModel.find().select("-password");
console.log('api get notif',users);
res.status(200).json(users);
};
@ -18,10 +16,15 @@ module.exports.getNotif = async (req, res) => {
module.exports.userInfo = (req, res) => {
if (!ObjectID.isValid(req.params.id))
return res.status(400).send("ID unknown : " + req.params.id);
console.log('userinfo:',req.params.id)
UserModel.findById(req.params.id, (err, docs) => {
if (!err) res.send(docs);
else console.log("ID unknown : " + err);
if (!err) {
console.log('doc:',docs)
res.send(docs);
}
else
console.log("ID unknown : " + err);
}).select("-password");
};

Loading…
Cancel
Save