From 774932e45a03b7964b2b418c7fb53e452d20380a Mon Sep 17 00:00:00 2001
From: Luis Felipe Risch <lfr20@inf.ufpr.br>
Date: Mon, 1 Feb 2021 12:17:51 -0300
Subject: [PATCH] Fixed the menu of the card

---
 src/Components/ResourceCardOptions.js | 178 +++++++++++++++++---------
 1 file changed, 114 insertions(+), 64 deletions(-)

diff --git a/src/Components/ResourceCardOptions.js b/src/Components/ResourceCardOptions.js
index 7503fec2..44bc52df 100644
--- a/src/Components/ResourceCardOptions.js
+++ b/src/Components/ResourceCardOptions.js
@@ -16,8 +16,8 @@ GNU Affero General Public License for more details.
 You should have received a copy of the GNU Affero General Public License
 along with Plataforma Integrada MEC.  If not, see <http://www.gnu.org/licenses/>.*/
 
-import React, {useContext, useState} from 'react';
-import {Store} from '../Store.js'
+import React, { useContext, useState } from 'react';
+import { Store } from '../Store.js'
 import styled from 'styled-components'
 import Button from '@material-ui/core/Button';
 import Menu from '@material-ui/core/Menu';
@@ -27,16 +27,22 @@ import MoreVertIcon from '@material-ui/icons/MoreVert';
 import OpenIcon from '@material-ui/icons/OpenInNew';
 import ReportIcon from '@material-ui/icons/Error';
 import ReportModal from './ReportModal.js'
-import {Link} from 'react-router-dom'
+import { Link } from 'react-router-dom'
 import DownloadIcon from '@material-ui/icons/CloudDownload';
 import ShareIcon from '@material-ui/icons/Share';
 import AddIcon from '@material-ui/icons/CreateNewFolder';
 import GuardarModal from './GuardarModal'
 import ShareModal from './ShareModal'
 import SnackbarComponent from './SnackbarComponent'
-
-export default function ResourceCardOptions (props) {
-    const {state} = useContext(Store)
+import OpenInBrowserIcon from '@material-ui/icons/OpenInBrowser';
+import Tooltip from '@material-ui/core/Tooltip';
+import SignUpModal from './SignUpModal'
+import LoginModal from './LoginModal.js'
+import Snackbar from '@material-ui/core/Snackbar';
+import MuiAlert from '@material-ui/lab/Alert';
+
+export default function ResourceCardOptions(props) {
+    const { state } = useContext(Store)
     const [anchorEl, setAnchorEl] = React.useState(null);
 
     function handleClick(event) {
@@ -60,8 +66,8 @@ export default function ResourceCardOptions (props) {
 
     const [saveToCol, toggleSave] = useState(false)
     const handleGuardar = () => {
-        if(state.currentUser.id === '') {
-            console.log('abrir login modal');
+        if (!state.currentUser.id) {
+            handleLogin();
         }
         else {
             toggleSave(true);
@@ -78,8 +84,8 @@ export default function ResourceCardOptions (props) {
     const [shareOpen, toggleShare] = useState(false)
 
     const handleShare = () => {
-        if(state.currentUser.id === '') {
-            console.log('abrir login modal');
+        if (!state.currentUser.id) {
+            handleLogin()
         }
         else {
             toggleShare(true);
@@ -87,65 +93,109 @@ export default function ResourceCardOptions (props) {
         handleClose()
     }
     const getShareablePageLink = () => {
-        return (window.location.href + "/recurso/" + props.learningObjectId)
+        return (window.origin + "/recurso/" + props.learningObjectId)
+    }
+
+    const handleSignUp = () => {
+        setSignUp(!signUpOpen)
+    }
+
+    const handleLogin = () => {
+        setLogin(!loginOpen)
+    }
+
+    function Alert(props) {
+        return <MuiAlert elevation={6} variant="filled" {...props} />;
+    }
+
+    function toggleLoginSnackbar(reason) {
+        if (reason === 'clickaway') {
+            return;
+        }
+        handleSuccessfulLogin(false);
     }
 
     const [snackbarOpen, toggleSnackbar] = useState(false)
+    const [signUpOpen, setSignUp] = useState(false)
+    const [loginOpen, setLogin] = useState(false)
+    const [successfulLoginOpen, handleSuccessfulLogin] = useState(false)
 
     return (
-        <React.Fragment>
-        <ReportModal open={reportModal} handleClose={() => handleModalReportar(false)}
-            form="recurso" complainableId={props.learningObjectId}
-            complainableType={"LearningObject"}
-            {...props}
-        />
-        <GuardarModal open={saveToCol} handleClose={() => {toggleSave(false)}}
-            thumb={props.thumb} title={props.title} recursoId={props.learningObjectId}
-        />
-        <ShareModal open={shareOpen} handleClose={() => {toggleShare(false)}}
-            thumb={props.thumb} title={props.title} link={getShareablePageLink()}
-        />
-        <SnackbarComponent snackbarOpen={snackbarOpen} severity={"info"} handleClose={() => {toggleSnackbar(false)}} text={"Baixando o Recurso... Lembre-se de relatar sua experiência após o uso do Recurso!"}
-            />
-        <div style={{fontSize: "12px", display : "flex", flexDirection : "column", justifyContent : "center"}}>
-            <ButtonNoWidth aria-controls="simple-menu" aria-haspopup="true" onClick={handleClick} style={{color : "#666"}}>
-                <MoreVertIcon style={{color : "#666"}}/>
-            </ButtonNoWidth>
-            <Menu
-                id="simple-menu"
-                anchorEl={anchorEl}
-                keepMounted
-                open={Boolean(anchorEl)}
-                onClose={handleClose}
-            >
-                <StyledMenuItem onClick={handleClose}>
-                    <Link to={"/recurso/" + props.learningObjectId}>
-                        <ListItemIcon><OpenIcon /></ListItemIcon>Abrir
-                    </Link>
-                </StyledMenuItem>
-
-                {
-                    props.downloadableLink &&
-                    <StyledMenuItem onClick={() => {enableDownload(); handleClose()}}>
-                        <ListItemIcon><DownloadIcon /></ListItemIcon>Baixar
-                    </StyledMenuItem>
-                }
-
-                <StyledMenuItem onClick={handleShare}>
-                    <ListItemIcon><ShareIcon /></ListItemIcon>Compartilhar
-                </StyledMenuItem>
-
-                <StyledMenuItem onClick={handleGuardar}>
-                    <ListItemIcon><AddIcon /></ListItemIcon>Guardar
-                </StyledMenuItem>
-
-                <StyledMenuItem onClick={() => {handleModalReportar(true); handleClose()}}>
-                    <ListItemIcon><ReportIcon /></ListItemIcon>Reportar
-                </StyledMenuItem>
-            </Menu>
-        </div>
-    </React.Fragment>
-  );
+        <>
+
+            <React.Fragment>
+                <ReportModal open={reportModal} handleClose={() => handleModalReportar(false)}
+                    form="recurso" complainableId={props.learningObjectId}
+                    complainableType={"LearningObject"}
+                    {...props}
+                />
+                <GuardarModal open={saveToCol} handleClose={() => { toggleSave(false) }}
+                    thumb={props.thumb} title={props.title} recursoId={props.learningObjectId}
+                />
+                <ShareModal open={shareOpen} handleClose={() => { toggleShare(false) }}
+                    thumb={props.thumb} title={props.title} link={getShareablePageLink()}
+                />
+                <SnackbarComponent snackbarOpen={snackbarOpen} severity={"info"} handleClose={() => { toggleSnackbar(false) }} text={"Baixando o Recurso... Lembre-se de relatar sua experiência após o uso do Recurso!"}
+                />
+                <SignUpModal open={signUpOpen} handleClose={handleSignUp} openLogin={handleLogin}
+                />
+                <LoginModal 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>
+                <div style={{ fontSize: "12px", display: "flex", flexDirection: "column", justifyContent: "center" }}>
+                    <ButtonNoWidth aria-controls="simple-menu" aria-haspopup="true" onClick={handleClick} style={{ color: "#666" }}>
+                        <MoreVertIcon style={{ color: "#666" }} />
+                    </ButtonNoWidth>
+                    <Menu
+                        id="simple-menu"
+                        anchorEl={anchorEl}
+                        keepMounted
+                        open={Boolean(anchorEl)}
+                        onClose={handleClose}
+                    >
+                        <Tooltip title="Não preserva filtro" arrow>
+                            <StyledMenuItem onClick={handleClose}>
+                                <Link to={"/recurso/" + props.learningObjectId}>
+                                    <ListItemIcon><OpenIcon /></ListItemIcon>Abrir
+                                </Link>
+                            </StyledMenuItem>
+                        </Tooltip>
+
+                        <Tooltip title="Preserva filtro" arrow>
+                            <StyledMenuItem onClick={() => window.open("/recurso/" + props.learningObjectId, "_blank")}>
+                                <ListItemIcon><OpenInBrowserIcon /></ListItemIcon> Abrir em nova guia
+                            </StyledMenuItem>
+                        </Tooltip>
+
+                        {
+                            props.downloadableLink &&
+                            <StyledMenuItem onClick={() => { enableDownload(); handleClose() }}>
+                                <ListItemIcon><DownloadIcon /></ListItemIcon>Baixar
+                            </StyledMenuItem>
+                        }
+
+                        <StyledMenuItem onClick={handleShare}>
+                            <ListItemIcon><ShareIcon /></ListItemIcon>Compartilhar
+                        </StyledMenuItem>
+
+                        <StyledMenuItem onClick={handleGuardar}>
+                            <ListItemIcon><AddIcon /></ListItemIcon>Guardar
+                        </StyledMenuItem>
+
+                        <StyledMenuItem onClick={() => { handleModalReportar(true); handleClose() }}>
+                            <ListItemIcon><ReportIcon /></ListItemIcon>Reportar
+                        </StyledMenuItem>
+
+                    </Menu>
+                </div>
+            </React.Fragment>
+        </>
+    );
 }
 
 const ButtonNoWidth = styled(Button)`
-- 
GitLab