Skip to content
Snippets Groups Projects
Commit 66cb6e85 authored by lfr20's avatar lfr20
Browse files

Fix bugs and dowload from collection page

parent f05d67c1
Branches
Tags
4 merge requests!57Merge of develop into master,!56Fixed buttons reportar, seguir, compartilhar, guardar and entrar (in comments...,!51Fixed resource editing not updating in some cases, inability to publish a...,!48merge
......@@ -48,7 +48,7 @@ export default function CollectionReview(props) {
getRequest(url, handleSuccessfulGet, (error) => { console.log(error) })
}, [props.id]);
}, [props.id, state.currentUser.id]);
const handleClickReport = () => {
setReportOpen(true);
......
......@@ -16,23 +16,34 @@ 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, { useState, useEffect } from 'react';
import React, { useState, useEffect, useContext } from 'react';
import Button from '@material-ui/core/Button';
import CheckIcon from '@material-ui/icons/Check';
import AddIcon from '@material-ui/icons/Add';
import styled from 'styled-components';
import SignUpModal from './SignUpModal.js';
import LoginModal from './LoginModal';
import SnackBarComponent from './SnackbarComponent';
import { getRequest, putRequest } from './HelperFunctions/getAxiosConfig'
import { Store } from '../Store'
export default function FollowCollectionButton(props) {
const { state } = useContext(Store)
const [icon, setIcon] = useState(<AddIcon fontSize="large" />);
const [button_text, setButtonText] = useState("Seguir Coleção");
const [variant, setVariant] = useState("outlined");
const [sign_up_open, setSignUpOpen] = useState(false);
const [open_login, setOpenLogin] = useState(false);
const [snackInfo, setSnackInfo] = useState({
open: false,
text: '',
severity: '',
color: ''
});
const [following, setFollowing] = useState(false); //user following collection
function handleSuccessGet(data) {
if(data)
if (!data.errors)
data.map((e) => {
if (e["followable"]["id"] === Number(props.collection_id)) {
setVariant("contained");
......@@ -42,11 +53,40 @@ export default function FollowCollectionButton(props) {
}
return undefined
})
else {
const info = {
open: true,
text: 'Falha ao verificar se o usuário segue a coleção!',
severity: 'error',
color: 'red'
}
handleSnackInfo(info)
}
}
useEffect(() => {
if (state.currentUser.id) {
const url = `/users/${props.user_id}/following/Collection`
getRequest(url, handleSuccessGet, (error) => console.log(error))
}, []);
getRequest(
url,
handleSuccessGet,
(error) => {
const info = {
open: true,
text: 'Falha ao verificar se o usuário segue a coleção!',
severity: 'error',
color: 'red'
}
handleSnackInfo(info)
})
}
else {
setIcon(<AddIcon fontSize="large" />)
setButtonText("Seguir Coleção")
setVariant("outlined")
setFollowing(false)
}
}, [state.currentUser.id]);
//handleMouse{Enter, Leave} only do anything when user follows given collection:
const handleMouseEnter = () => {
......@@ -65,33 +105,120 @@ export default function FollowCollectionButton(props) {
}
}
function handleOpenSnackSignIn() {
const info = {
open: true,
text: 'Você foi logado com sucesso!',
severity: 'success',
color: '',
}
handleSnackInfo(info)
}
function handleCloseSnack() {
setSnackInfo({
open: false,
text: '',
severity: '',
color: '',
})
}
function handleSnackInfo(info) {
setSnackInfo({
...info
})
}
function handleOpenLogin() {
setOpenLogin(true)
}
function handleOpenSignUp() {
setSignUpOpen(true)
}
function handleSuccessfulFollow(data) {
if (data.errors) {
setVariant("contained");
handleFailFollow()
}
else {
const info = {
open: true,
text: 'Sucesso ao seguir a coleção!',
severity: 'success',
color: 'green'
}
handleSnackInfo(info)
setVariant("contained");
setButtonText("Seguindo");
setIcon(<CheckIcon fontSize="large" />)
setFollowing(true);
}
}
function handleFailFollow(err) {
const info = {
open: true,
text: 'Falha ao seguir coleção',
severity: 'fail',
color: 'red',
}
handleSnackInfo(info)
}
function handleSuccessfulUnfollow(data) {
if (data.errors)
handleFailUnfollow()
else {
const info = {
open: true,
text: 'Sucesso ao deixar de seguir a coleção!',
severity: 'success',
color: 'green'
}
handleSnackInfo(info)
setVariant("outlined");
setButtonText("Seguir Coleção");
setIcon(<AddIcon fontSize="large" />);
setFollowing(false);
}
}
function handleFailUnfollow(err) {
const info = {
open: true,
text: 'Falha ao deixar de seguir coleção',
severity: 'error',
color: 'red',
}
handleSnackInfo(info)
}
const handleClick = () => {
const url = `/collections/${props.collection_id}/follow`
if (!props.user_id)
setSignUpOpen(true);
else if (!following) {
putRequest(url, {}, handleSuccessfulFollow, (error) => {console.log(error)})
putRequest(url, {}, handleSuccessfulFollow, handleFailFollow)
} else {
putRequest(url, {}, handleSuccessfulUnfollow, (error) => {console.log(error)})
putRequest(url, {}, handleSuccessfulUnfollow, handleFailUnfollow)
}
};
if (!props.user_is_owner)
return (
<div>
<SnackBarComponent
snackbarOpen={snackInfo.open}
handleClose={handleCloseSnack}
severity={snackInfo.severity}
text={snackInfo.text}
color={snackInfo.color}
/>
<FollowButton
variant={variant}
color="primary"
......@@ -103,7 +230,17 @@ export default function FollowCollectionButton(props) {
>
<ButtonText>{button_text}</ButtonText>
</FollowButton>
<SignUpModal open={sign_up_open} handleClose={() => setSignUpOpen(false)} />
<SignUpModal
open={sign_up_open}
handleClose={() => setSignUpOpen(false)}
openLogin={handleOpenLogin}
/>
<LoginModal
openSnackbar={handleOpenSnackSignIn}
open={open_login}
handleClose={() => setOpenLogin(false)}
openSignUp={handleOpenSignUp}
/>
</div>
);
else return (<div></div>);
......
......@@ -40,6 +40,7 @@ import SignUpModal from './SignUpModal'
import LoginModal from './LoginModal.js'
import Snackbar from '@material-ui/core/Snackbar';
import MuiAlert from '@material-ui/lab/Alert';
import { getRequest } from './HelperFunctions/getAxiosConfig'
export default function ResourceCardOptions(props) {
const { state } = useContext(Store)
......@@ -78,6 +79,13 @@ export default function ResourceCardOptions(props) {
const enableDownload = () => {
const url = props.downloadableLink
window.open(url, '_blank');
getRequest(
`/learning_objects/${props.learningObjectId}/download`,
(data, header) => {
},
(error) => {
}
)
toggleSnackbar(true)
}
......
......@@ -48,7 +48,7 @@ export default function CollectionPage(props) {
}, []);
const handleScrollToComments = () => {
window.scrollTo(0, comment_ref.current.offsetTop);
comment_ref.current.scrollIntoView({ behavior: 'smooth' })
}
return (
<>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment