Skip to content
Snippets Groups Projects
Feed.js 3 KiB
Newer Older
  • Learn to ignore specific revisions
  • import React from 'react'
    
    ludvighillert's avatar
    ludvighillert committed
    import styles from '../styles/feed.module.css'
    
    Ludvig Damberg's avatar
    Ludvig Damberg committed
    import { useState, useEffect } from 'react'
    
    import Posts from '../components/Posts'
    import Post from '../components/Post'
    
    Ludvig Damberg's avatar
    Ludvig Damberg committed
    import buttons from '../styles/buttons.module.css'
    import { FaArrowLeft } from 'react-icons/fa';
    import { Link } from 'react-router-dom'
    
    import axios from 'axios'
    
    Ludvig Damberg's avatar
    Ludvig Damberg committed
    import { useNavigate } from 'react-router-dom'
    
    Ludvig Damberg's avatar
    Ludvig Damberg committed
    import Loading from '../components/Loading'
    
    const Feed = () => {
    
        const [profileData, setProfileData] = useState()
        const [loading, setLoading] = useState(true)
        const [openPost, setOpenPost] = useState(false)
    
    Ludvig Damberg's avatar
    Ludvig Damberg committed
        const [isLoggedIn, setIsLoggedIn] = useState(false);
        const navigate = useNavigate();
    
    
        const logout = () => {
            localStorage.removeItem("token")
            setIsLoggedIn(false)
            navigate('/')
    
    Ludvig Damberg's avatar
    Ludvig Damberg committed
        }
    
        const fetchProfile = async () => {
    
    Ludvig Damberg's avatar
    Ludvig Damberg committed
    
    
            const token = localStorage.getItem('token');
            console.log(token)
    
            axios.get('http://localhost:5000/profile', {
                headers: {
                    Authorization: `Bearer ${token}`
                }
            }).then((res) => {
                setProfileData(res.data);
            }).catch(err => console.log(err))
    
    
    Ludvig Damberg's avatar
    Ludvig Damberg committed
            setTimeout(() => {
                setLoading(false)
            }, 1000)
    
    
    Ludvig Damberg's avatar
    Ludvig Damberg committed
        const checkLoggedIn = async () => {
    
    Ludvig Damberg's avatar
    Ludvig Damberg committed
            const token = localStorage.getItem('token');
            if (!token) {
    
    Ludvig Damberg's avatar
    Ludvig Damberg committed
                logout()
                return;
    
    Ludvig Damberg's avatar
    Ludvig Damberg committed
            }
            const response = await axios.get('http://localhost:5000/profile', {
    
    Ludvig Damberg's avatar
    Ludvig Damberg committed
                headers: { Authorization: `Bearer ${token}` },
    
    Ludvig Damberg's avatar
    Ludvig Damberg committed
            }).then((res) => {
    
    Ludvig Damberg's avatar
    Ludvig Damberg committed
                setIsLoggedIn(true);
    
    Ludvig Damberg's avatar
    Ludvig Damberg committed
            }).catch(err => {
    
    Ludvig Damberg's avatar
    Ludvig Damberg committed
                localStorage.removeItem("token")
                logout()
    
    Ludvig Damberg's avatar
    Ludvig Damberg committed
            })
    
    Ludvig Damberg's avatar
    Ludvig Damberg committed
        }
    
    Ludvig Damberg's avatar
    Ludvig Damberg committed
    
        useEffect(() => {
            checkLoggedIn()
    
        const handleOpenPost = () => {
            if (openPost == true) {
                setOpenPost(false)
            } else {
                setOpenPost(true)
            }
        }
    
    
    Ludvig Damberg's avatar
    Ludvig Damberg committed
        if (loading === true) {
    
    Ludvig Damberg's avatar
    Ludvig Damberg committed
            <Loading />
            )
    
    Ludvig Damberg's avatar
    Ludvig Damberg committed
        }
        else {
            return (
    
    Ludvig Damberg's avatar
    Ludvig Damberg committed
                <div className={styles.feed}>
    
                    <div className={styles.header}>
    
                        <div className={styles.header_photo}> <img className={styles.posts_header_img} src={`http://localhost:5000/uploads/${profileData.photo}`} /></div>
                        <div className={styles.header_text}> <h2 >Feed</h2></div>
                        <div className={styles.header_button}><button onClick={handleOpenPost} className={buttons.button3}>add post +
                        </button></div>
                    </div>
    
    Ludvig Damberg's avatar
    Ludvig Damberg committed
                    <div className={buttons.arrow}><Link to='/'><FaArrowLeft /> Home</Link></div>
    
    Ludvig Damberg's avatar
    Ludvig Damberg committed
                    {openPost ? (
                        <div className={styles.body}> <Post /></div>
    
    Ludvig Damberg's avatar
    Ludvig Damberg committed
                        <></>
                    )}
    
    
    
                    <div className={styles.container} >
                        <Posts />
                    </div>
                </div>
    
            )
    
    Ludvig Damberg's avatar
    Ludvig Damberg committed
    
    
    Ludvig Damberg's avatar
    Ludvig Damberg committed
    
    
    }
    
    export default Feed