Skip to content
Snippets Groups Projects
Firulas.js 3.3 KiB
Newer Older
vgm18's avatar
vgm18 committed
import React, { useState, useContext } from 'react';
import { Store } from '../Store'
Lucas Eduardo Schoenfelder's avatar
wip
Lucas Eduardo Schoenfelder committed
import styled from 'styled-components'
import Rating from '@material-ui/lab/Rating';
import StarBorderIcon from '@material-ui/icons/StarBorder';
lfr20's avatar
lfr20 committed
import { LikeCounter, ButtonNoWidth } from '../Components/ResourceCardFunction.js'
Lucas Eduardo Schoenfelder's avatar
wip
Lucas Eduardo Schoenfelder committed
import FavoriteIcon from '@material-ui/icons/Favorite';
lfr20's avatar
lfr20 committed
import { putRequest } from './HelperFunctions/getAxiosConfig'
vgm18's avatar
vgm18 committed
import SignUpModal from './SignUpModal'
import LoginModal from './LoginModal.js'
import Snackbar from '@material-ui/core/Snackbar';
import MuiAlert from '@material-ui/lab/Alert';
Lucas Eduardo Schoenfelder's avatar
wip
Lucas Eduardo Schoenfelder committed

lfr20's avatar
lfr20 committed
export default function Firulas(props) {
vgm18's avatar
vgm18 committed
    const { state } = useContext(Store);
    const [liked, toggleLiked] = useState(props.liked)
    const [likesCount, setLikesCount] = useState(props.likesCount)
vgm18's avatar
vgm18 committed
    const [signUpOpen, setSignUp] = useState(false)
    const [loginOpen, setLogin] = useState(false)
    const [successfulLoginOpen, handleSuccessfulLogin] = useState(false)

    function Alert(props) {
        return <MuiAlert elevation={6} variant="filled" {...props} />;
    }

    function handleSuccessLike(data) {
        toggleLiked(!liked)
        setLikesCount(data.count)
    }

    const handleLike = () => {
        if (!state.currentUser.id) {
            handleLogin()
        }
        else {
            const url = `/learning_objects/${props.recursoId}/like/`

            putRequest(url, {}, handleSuccessLike, (error) => { console.log(error) })
        }
    }

    const handleLogin = () => {
        setLogin(!loginOpen)
    }

    const handleSignUp = () => {
        setSignUp(!signUpOpen)
    }

    function toggleLoginSnackbar(reason) {
        if (reason === 'clickaway') {
            return;
        }
        handleSuccessfulLogin(false);
Lucas Eduardo Schoenfelder's avatar
wip
Lucas Eduardo Schoenfelder committed
    return (
vgm18's avatar
vgm18 committed
        <ConteinerFirulas style={props.contrast === "" ? {} : {color: "white"}}>
            <SignUpModal contrast={props.contrast} open={signUpOpen} handleClose={handleSignUp} openLogin={handleLogin}
            />
            <LoginModal contrast={props.contrast} open={loginOpen} handleClose={() => setLogin(false)} openSignUp={handleSignUp}
                openSnackbar={() => { handleSuccessfulLogin(true) }}
            />
            <Snackbar open={successfulLoginOpen} autoHideDuration={1000} onClose={toggleLoginSnackbar}
                anchorOrigin={{ vertical: 'top', horizontal: 'center' }}
            >
                <Alert severity="success" style={{ backgroundColor: "#00acc1" }}>Você está conectado(a)!</Alert>
            </Snackbar>
Lucas Eduardo Schoenfelder's avatar
wip
Lucas Eduardo Schoenfelder committed
            <Rating
vgm18's avatar
vgm18 committed
                className={`${props.contrast}IconColor`}
lfr20's avatar
lfr20 committed
                name="customized-empty"
vgm18's avatar
vgm18 committed
                value={props.rating}
lfr20's avatar
lfr20 committed
                readOnly
vgm18's avatar
vgm18 committed
                emptyIcon={<StarBorderIcon className={`${props.contrast}IconColor`} fontSize="inherit"/>}
Lucas Eduardo Schoenfelder's avatar
wip
Lucas Eduardo Schoenfelder committed
            />
vgm18's avatar
vgm18 committed
            <LikeCounter>
                <span>{likesCount}</span>
                <ButtonNoWidth onClick={handleLike}>
                    <FavoriteIcon className={`${props.contrast}LinkColor`} style={ props.contrast === "" ? {color: liked ? "red" : "#666"} : {color: liked ? "red" : "white"} } />
Lucas Eduardo Schoenfelder's avatar
wip
Lucas Eduardo Schoenfelder committed
                </ButtonNoWidth>
            </LikeCounter>
        </ConteinerFirulas>
    )
}

const ConteinerFirulas = styled.div`
    margin-bottom : 30px;
    display : inline-flex;
    padding-bottom : 10px;
`