azizkhelifi

dashboard.js

Mar 26th, 2021
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import React, { useState, useEffect } from "react";
  2. import { useHistory } from "react-router";
  3. import { axiosInstance } from "../../App";
  4. import Modal from "react-modal";
  5. import "./dashboard.css";
  6.  
  7. Modal.setAppElement("#root");
  8.  
  9. export default function Dashboard() {
  10.   const history = useHistory();
  11.   const [username, setUsername] = useState("");
  12.   const [talkingTo, setTalkingTo] = useState("Mohamed Khalil Jendoubi");
  13.   const [nbRequests, setNbRequests] = useState(0);
  14.   const [addModal, setAddModal] = useState(false);
  15.   const [requestsModal, setrequestsModal] = useState(false);
  16.   const [blockedModal, setblockedModal] = useState(false);
  17.   const [usersList, setUsersList] = useState([]);
  18.   console.log("usersList =========>",usersList);
  19.   var messageend;
  20.   useEffect(() => {
  21.     if (!window.sessionStorage.getItem("token")) {
  22.       history.push("/");
  23.     } else {
  24.       setUsername(window.sessionStorage.getItem("username"));
  25.       axiosInstance
  26.         .get("/friends", {
  27.           headers: {
  28.             Authorization: window.sessionStorage.getItem("token"),
  29.           },
  30.         })
  31.         .then((resp) => {
  32.           console.log(resp.data);
  33.         });
  34.       axiosInstance
  35.         .get("/friends/requests", {
  36.           headers: {
  37.             Authorization: window.sessionStorage.getItem("token"),
  38.           },
  39.         })
  40.         .then((resp) => {
  41.           console.log(resp.data);
  42.           setNbRequests(resp.data.requests.length);
  43.         });
  44.       messageend.scrollIntoView({ behavior: "smooth" });
  45.     }
  46.   }, []);
  47.   useEffect(() => {
  48.     if (addModal) {
  49.       axiosInstance
  50.         .get("/users", {
  51.           headers: {
  52.             Authorization: window.sessionStorage.getItem("token"),
  53.           },
  54.         })
  55.         .then((resp) => {
  56.           setUsersList(resp.data.users);
  57.         });
  58.     }
  59.   }, [addModal]);
  60.   useEffect(() => {
  61.     if (requestsModal) {
  62.       axiosInstance
  63.         .get("/friends/requests", {
  64.           headers: {
  65.             Authorization: window.sessionStorage.getItem("token"),
  66.           },
  67.         })
  68.         .then((resp) => {
  69.           setUsersList(resp.data.requests);
  70.         });
  71.     }
  72.   }, [requestsModal]);
  73.   return (
  74.     <div className="dashboard_container">
  75.       <div className="dashboard_gauchecontainer">
  76.         <div className="dashboard_iconandname">
  77.           <span className="dashboard_icon">
  78.             <i className="fas fa-user"></i>
  79.           </span>
  80.  
  81.           <div className="dashboard_username">{username}</div>
  82.         </div>
  83.         <hr className="dashboard_hr" />
  84.         <div className="dashboard_icons">
  85.           <i
  86.             className="fas fa-user-plus"
  87.             onClick={() => {
  88.               setAddModal(true);
  89.             }}
  90.           ></i>
  91.           <i
  92.             className={
  93.               nbRequests > 0
  94.                 ? "fas fa-user-friends dashboard_haverequests"
  95.                 : "fas fa-user-friends"
  96.             }
  97.             onClick={() => {
  98.               setrequestsModal(true);
  99.             }}
  100.           ></i>
  101.           <i
  102.             className="fas fa-users-slash"
  103.             onClick={() => {
  104.               setblockedModal(true);
  105.             }}
  106.           ></i>
  107.         </div>
  108.         <hr className="dashboard_hr" />
  109.         <div className="dashboard_messangescontainer">
  110.           <div className="dashboard_userelement">
  111.             <i className="fas fa-user"></i>
  112.             <span className="dashboard_usersname">Mohamed Khalil Jendoubi</span>
  113.             <i className="fas fa-user-minus"></i>
  114.             <i className="fas fa-ban"></i>
  115.           </div>
  116.         </div>
  117.         <div>
  118.           <input
  119.             className="dashboard_recherche"
  120.             type="text"
  121.             placeholder="Rechercher"
  122.           />
  123.         </div>
  124.       </div>
  125.       <div className="dashboard_droitecontainer">
  126.         <div className="dashboard_talkingtoname">
  127.           <i className="fas fa-user"></i> {talkingTo}
  128.         </div>
  129.         <hr className="dashboard_separating" />
  130.         <div className="dashboard_msg">
  131.           <div className="msg-receive ">
  132.           Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur nec lacinia urna. Integer dapibus velit scelerisque dui interdum bibendum sed ac felis. Nulla facilisi. Nulla facilisi. Sed eget dui efficitur, pharetra metus et, fermentum tortor.
  133.           </div>
  134.           <div className="msg-sent ">
  135.           Aenean risus risus, ullamcorper a tincidunt vitae, pulvinar et risus. Sed vel arcu blandit, tincidunt nisi nec, condimentum enim. Proin finibus eget metus et faucibus. Fusce quis sapien id dolor gravida imperdiet nec convallis sem. Phasellus finibus condimentum rhoncus. Nulla facilisi. Aenean nibh enim, lacinia quis arcu sit amet, efficitur interdum sem. Mauris eget ante eleifend libero vestibulum consectetur.
  136.           </div>
  137.           <div className="msg-sent ">
  138.           Integer a nunc nisl. Fusce magna erat, porttitor eu ante sit amet, egestas feugiat quam. Aenean porttitor elit at risus placerat tristique a eu metus. Nulla lobortis dolor a lorem molestie pellentesque. Praesent non tortor eu risus laoreet pretium. Sed laoreet viverra nibh, sit amet condimentum ipsum sodales eu.
  139.           </div>
  140.           <div className="msg-receive ">
  141.           Donec faucibus volutpat purus et aliquet. Suspendisse commodo molestie ullamcorper. Praesent sed dolor vel risus ultrices pulvinar eu vel justo. Donec ut ultricies mi. Donec venenatis odio non sapien fringilla ultricies. Etiam quis rutrum metus. Ut feugiat nisl at elementum facilisis. In justo nunc, ultricies ut elementum et, ullamcorper vitae massa.
  142.           </div>
  143.           <div className="msg-receive ">
  144.           Praesent a eleifend turpis. Donec rhoncus massa tortor, non ullamcorper eros pharetra eget. Nulla aliquet dictum massa, vel aliquam nibh vehicula eu. Morbi quam arcu, pulvinar ut cursus ac, aliquam sed magna. Nulla ultricies sem blandit, ullamcorper risus ac, feugiat justo. Nam ornare,
  145.           </div>
  146.           <div className="msg-receive ">
  147.           massa posuere aliquam fermentum, nibh turpis dapibus magna, vitae venenatis leo nulla eget sem. Phasellus egestas justo vitae faucibus rhoncus. Nunc nisl lacus, tristique sed porttitor id, ultricies nec massa. Quisque lacinia condimentum ante. Curabitur non euismod urna. Vestibulum non volutpat sem, quis porttitor felis. Pellentesque placerat dignissim augue, at posuere tellus posuere semper. Fusce mollis maximus consequat.
  148.           </div>
  149.           <div className="msg-receive ">
  150.           Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque scelerisque lacus quis dui hendrerit, in vehicula odio bibendum. Proin dapibus ante enim, gravida efficitur tellus porttitor quis.
  151.           </div>
  152.           <div
  153.             style={{ float: "left", clear: "both" }}
  154.             ref={(el) => {
  155.               messageend = el;
  156.             }}
  157.           ></div>
  158.         </div>
  159.         <div className="dashboard_sendmsg">
  160.           <input className="dashboard_txtbox" type="text" placeholder="Aa" />
  161.           <div className="dashboard_send_icon">
  162.             <i className="fas fa-paper-plane"></i>
  163.           </div>
  164.         </div>
  165.       </div>
  166.       <Modal isOpen={addModal} className="dashboard_modal">
  167.         <div className="dashboard_addmodal">
  168.           <div className="dashboard_addmodaltop">
  169.             <span>Search</span>
  170.             <span
  171.               className="dashboard_modalclose"
  172.               onClick={() => {
  173.                 setAddModal(false);
  174.               }}
  175.             >
  176.               X
  177.             </span>
  178.           </div>
  179.           <div className="dashboard_addsearch">
  180.             <input
  181.               placeholder="Search"
  182.               onChange={(event) => {
  183.                 axiosInstance
  184.                   .get("/users/" + event.target.value, {
  185.                     headers: {
  186.                       Authorization: window.sessionStorage.getItem("token"),
  187.                     },
  188.                   })
  189.                   .then((resp) => {
  190.                     setUsersList(resp.data.users);
  191.                   });
  192.               }}
  193.             />
  194.             <div className="dashboard_addmodalpersons">
  195.               {usersList.map((el, key) => {
  196.                 return (
  197.                   <div
  198.                     key={key}
  199.                     style={
  200.                       el.username == window.sessionStorage.getItem("username")
  201.                         ? { display: "none" }
  202.                         : {}
  203.                     }
  204.                     className="dashboardaddmodalperson"
  205.                   >
  206.                     <span>{el.username}</span>
  207.                     <button
  208.                       onClick={() => {
  209.                         axiosInstance
  210.                           .post(
  211.                             "/friends",
  212.                             {
  213.                               id: el._id,
  214.                             },
  215.                             {
  216.                               headers: {
  217.                                 Authorization: window.sessionStorage.getItem(
  218.                                   "token"
  219.                                 ),
  220.                               },
  221.                             }
  222.                           )
  223.                           .then((resp) => {
  224.                             alert(resp.data.message);
  225.                           });
  226.                       }}
  227.                     >
  228.                       ADD
  229.                     </button>
  230.                   </div>
  231.                 );
  232.               })}
  233.             </div>
  234.           </div>
  235.         </div>
  236.       </Modal>
  237.       <Modal isOpen={requestsModal} className="dashboard_modal">
  238.         <div className="dashboard_addmodal">
  239.           <div className="dashboard_addmodaltop">
  240.             <span>Requests</span>
  241.             <span
  242.               className="dashboard_modalclose"
  243.               onClick={() => {
  244.                 setrequestsModal(false);
  245.               }}
  246.             >
  247.               X
  248.             </span>
  249.           </div>
  250.           <div className="dashboard_addsearch">
  251.             <div className="dashboard_addmodalpersons">
  252.               {usersList.map((el, key) => {
  253.                 return (
  254.                   <div className="dashboardaddmodalperson">
  255.                     <span>{el.username}</span> <button>Accept</button>
  256.                     <button>Decline</button>
  257.                   </div>
  258.                 );
  259.               })}
  260.             </div>
  261.           </div>
  262.         </div>
  263.       </Modal>
  264.       <Modal isOpen={blockedModal} className="dashboard_modal">
  265.         <div className="dashboard_addmodal">
  266.           <div className="dashboard_addmodaltop">
  267.             <span>Blocked List</span>
  268.             <span
  269.               className="dashboard_modalclose"
  270.               onClick={() => {
  271.                 setblockedModal(false);
  272.               }}
  273.             >
  274.               X
  275.             </span>
  276.           </div>
  277.           <div className="dashboard_addsearch">
  278.             <div className="dashboard_addmodalpersons">
  279.               <div className="dashboardaddmodalperson">
  280.                 <span>Person name</span> <button>Unblock</button>
  281.               </div>
  282.             </div>
  283.           </div>
  284.         </div>
  285.       </Modal>
  286.     </div>
  287.   );
  288. }
  289.  
Add Comment
Please, Sign In to add comment