Skip to content
Snippets Groups Projects
Commit d00e557f authored by gsf20's avatar gsf20
Browse files

FIX changes

parent 36079016
No related branches found
No related tags found
1 merge request!50Issue #56: HOTFIX general useSearchParams Suspense and other things
...@@ -111,7 +111,7 @@ export default function Header({ setQuery, handleOpenMenu }) { ...@@ -111,7 +111,7 @@ export default function Header({ setQuery, handleOpenMenu }) {
</div> </div>
<Box sx={{ display: { xs: "none", lg: "flex" } }}> <Box sx={{ display: { xs: "none", lg: "flex" } }}>
<IconButton {/* <IconButton
size="large" size="large"
aria-label="show 17 new notifications" aria-label="show 17 new notifications"
color="inherit" color="inherit"
...@@ -120,7 +120,7 @@ export default function Header({ setQuery, handleOpenMenu }) { ...@@ -120,7 +120,7 @@ export default function Header({ setQuery, handleOpenMenu }) {
<Badge> <Badge>
<NotificationsActiveSharpIcon className="text-slate-400 text-3xl " /> <NotificationsActiveSharpIcon className="text-slate-400 text-3xl " />
</Badge> </Badge>
</IconButton> </IconButton> */}
<AccountMenu isOpen={openMenuProfile} /> <AccountMenu isOpen={openMenuProfile} />
</Box> </Box>
......
...@@ -77,7 +77,7 @@ export default function InfiniteScrollCards({ data, type = "Collection", setNewS ...@@ -77,7 +77,7 @@ export default function InfiniteScrollCards({ data, type = "Collection", setNewS
<div className="flex flex-wrap justify-between mr-8 max-md:flex-col "> <div className="flex flex-wrap justify-between mr-8 max-md:flex-col ">
<p className=" ml-1 max-md:text-center text-gray-500 mb-0"> <p className=" ml-1 max-md:text-center text-gray-500 mb-0">
por <Link href="/perfil"> {item["owner"]["name"]}</Link>{timeFunction(item["updated_at"])} por <Link href={"/perfil/" + item["owner"]["id"]}> {item["owner"]["name"]}</Link>{timeFunction(item["updated_at"])}
</p> </p>
<div className="flex max-md:justify-center"> <div className="flex max-md:justify-center">
<DownloadButton id={item['id']} objects={item['collection_items']} /> <DownloadButton id={item['id']} objects={item['collection_items']} />
......
import * as React from 'react'; import * as React from "react";
import Box from '@mui/material/Box'; import Box from "@mui/material/Box";
import Avatar from '@mui/material/Avatar'; import Avatar from "@mui/material/Avatar";
import Menu from '@mui/material/Menu'; import Menu from "@mui/material/Menu";
import MenuItem from '@mui/material/MenuItem'; import MenuItem from "@mui/material/MenuItem";
import Divider from '@mui/material/Divider'; import Divider from "@mui/material/Divider";
import IconButton from '@mui/material/IconButton'; import IconButton from "@mui/material/IconButton";
import Settings from '@mui/icons-material/Settings'; import Settings from "@mui/icons-material/Settings";
import Logout from '@mui/icons-material/Logout'; import Logout from "@mui/icons-material/Logout";
import { useState, useEffect } from 'react'; import { useState, useEffect } from "react";
import Link from 'next/link'; import Link from "next/link";
import ShieldIcon from '@mui/icons-material/Shield'; import ShieldIcon from "@mui/icons-material/Shield";
import ContactSupportIcon from '@mui/icons-material/ContactSupport'; import ContactSupportIcon from "@mui/icons-material/ContactSupport";
import AccessibilityIcon from '@mui/icons-material/Accessibility'; import AccessibilityIcon from "@mui/icons-material/Accessibility";
import FeedbackIcon from '@mui/icons-material/Feedback'; import FeedbackIcon from "@mui/icons-material/Feedback";
import { getStoredValue, removeFromLocalStorage } from '../handlers/localStorageHandler'; import {
import { isLoggedIn, useLoginBarrier } from '../handlers/loginHandler'; getStoredValue,
removeFromLocalStorage,
} from "../handlers/localStorageHandler";
import { isLoggedIn, useLoginBarrier } from "../handlers/loginHandler";
const items = [
{ const items = [];
href: '/configuracoes', // const items = [
icon: Settings, // {
label: 'Configurações' // href: '/configuracoes',
}, // icon: Settings,
{ // label: 'Configurações'
href: '/privacidade', // },
icon: ShieldIcon, // {
label: 'Privacidade' // href: '/privacidade',
}, // icon: ShieldIcon,
{ // label: 'Privacidade'
href: '/ajuda', // },
icon: ContactSupportIcon, // {
label: 'Ajuda e suporte' // href: '/ajuda',
}, // icon: ContactSupportIcon,
{ // label: 'Ajuda e suporte'
href: '/tela', // },
icon: AccessibilityIcon, // {
label: 'Tela e Acessibilidade' // href: '/tela',
}, // icon: AccessibilityIcon,
{ // label: 'Tela e Acessibilidade'
href: '/feedback', // },
icon: FeedbackIcon, // {
label: 'Dar Feedback' // href: '/feedback',
} // icon: FeedbackIcon,
]; // label: 'Dar Feedback'
// }
// ];
export default function AccountMenu() { export default function AccountMenu() {
const [anchorEl, setAnchorEl] = useState(null); const [anchorEl, setAnchorEl] = useState(null);
const [authenticated, setAuthenticated] = useState(false); const [authenticated, setAuthenticated] = useState(false);
const [userData, setUserData] = useState({}); const [userData, setUserData] = useState({});
const open = Boolean(anchorEl); const open = Boolean(anchorEl);
const [id, setId] = useState(null) const [id, setId] = useState(null);
const loginBarrier = useLoginBarrier() const loginBarrier = useLoginBarrier();
const [logged, setLogged] = useState(false) const [logged, setLogged] = useState(false);
useEffect(() => { useEffect(() => {
if (isLoggedIn()) { if (isLoggedIn()) {
let data = JSON.parse(getStoredValue("user_data")) let data = JSON.parse(getStoredValue("user_data"));
setId(data["id"]) setId(data["id"]);
} }
setLogged(isLoggedIn()) setLogged(isLoggedIn());
}, []);
}, [])
const handleClick = (event) => { const handleClick = (event) => {
setAnchorEl(event.currentTarget); setAnchorEl(event.currentTarget);
...@@ -81,8 +77,8 @@ export default function AccountMenu() { ...@@ -81,8 +77,8 @@ export default function AccountMenu() {
setAuthenticated(false); setAuthenticated(false);
removeFromLocalStorage("access_token"); removeFromLocalStorage("access_token");
removeFromLocalStorage("user_data"); removeFromLocalStorage("user_data");
window.location.reload() window.location.reload();
} };
useEffect(() => { useEffect(() => {
let token = getStoredValue("access_token"); let token = getStoredValue("access_token");
...@@ -91,44 +87,62 @@ export default function AccountMenu() { ...@@ -91,44 +87,62 @@ export default function AccountMenu() {
let user = getStoredValue("user_data"); let user = getStoredValue("user_data");
setUserData(JSON.parse(user)); setUserData(JSON.parse(user));
} }
}, []) }, []);
return ( return (
<> <>
{logged ? {logged ? (
<Box className=' flex align-center'> <Box className=" flex align-center">
<IconButton <IconButton
onClick={handleClick} onClick={handleClick}
size="large" size="large"
aria-controls={open ? 'account-menu' : undefined} aria-controls={open ? "account-menu" : undefined}
aria-haspopup="true" aria-haspopup="true"
aria-expanded={open ? 'true' : undefined} aria-expanded={open ? "true" : undefined}
> >
{userData["avatar_file_name"] === null ? {userData["avatar_file_name"] === null ? (
<Avatar sx={{ width: 32, height: 32 }} className='mt-1'> {userData["name"][0]} </Avatar> <Avatar sx={{ width: 32, height: 32 }} className="mt-1">
: {" "}
<Avatar src={"https://api.portalmec.c3sl.ufpr.br/" + userData["avatar_file_name"]} sx={{ width: 32, height: 32 }} /> {userData["name"][0]}{" "}
</Avatar>
) : (
<Avatar
src={
"https://api.portalmec.c3sl.ufpr.br/" +
userData["avatar_file_name"]
} }
sx={{ width: 32, height: 32 }}
/>
)}
</IconButton> </IconButton>
</Box> </Box>
: <Link href={"/login"}> <IconButton size="large"> ) : (
<Avatar sx={{ width: 32, height: 32 }} className='mt-1' /> <Link href={"/login"}>
{" "}
<IconButton size="large">
<Avatar sx={{ width: 32, height: 32 }} className="mt-1" />
</IconButton> </IconButton>
</Link>} </Link>
)}
<Menu <Menu
anchorEl={anchorEl} anchorEl={anchorEl}
id="account-menu" id="account-menu"
open={open} open={open}
onClose={handleClose} onClose={handleClose}
onClick={handleClose} onClick={handleClose}
transformOrigin={{ horizontal: 'right', vertical: 'top' }} transformOrigin={{ horizontal: "right", vertical: "top" }}
anchorOrigin={{ horizontal: 'right', vertical: 'bottom' }} anchorOrigin={{ horizontal: "right", vertical: "bottom" }}
> >
<MenuItem onClick={handleClose}> <MenuItem onClick={handleClose}>
<Link href={`/perfil/${id}`} className='flex'> <Link href={`/perfil/${id}`} className="flex">
<Avatar src={"https://api.portalmec.c3sl.ufpr.br/" + userData["avatar_file_name"]} className='mr-2' /> <Avatar
<p className='flex flex-col pt-2'> {userData["name"]} </p> src={
"https://api.portalmec.c3sl.ufpr.br/" +
userData["avatar_file_name"]
}
className="mr-2"
/>
<p className="flex flex-col pt-2"> {userData["name"]} </p>
</Link> </Link>
</MenuItem> </MenuItem>
<Divider /> <Divider />
...@@ -136,24 +150,18 @@ export default function AccountMenu() { ...@@ -136,24 +150,18 @@ export default function AccountMenu() {
{items.map((item, index) => { {items.map((item, index) => {
return ( return (
<MenuItem key={index} onClick={handleClose}> <MenuItem key={index} onClick={handleClose}>
<Link href={item.href} className='flex' > <Link href={item.href} className="flex">
<item.icon fontSize="small" className='text-secondary' /> <item.icon fontSize="small" className="text-secondary" />
<p className='text-sm ml-2'> <p className="text-sm ml-2">{item.label}</p>
{item.label}
</p>
</Link> </Link>
</MenuItem> </MenuItem>
) );
})} })}
<MenuItem onClick={handleLogout}> <MenuItem onClick={handleLogout}>
<Logout fontSize="small" className='text-secondary' /> <Logout fontSize="small" className="text-secondary" />
<p className='text-sm ml-2'> <p className="text-sm ml-2">Sair</p>
Sair
</p>
</MenuItem> </MenuItem>
</Menu> </Menu>
</> </>
); );
......
...@@ -2,29 +2,43 @@ ...@@ -2,29 +2,43 @@
import Header from "./Header"; import Header from "./Header";
import SideBar from "./SideBar"; import SideBar from "./SideBar";
import { useEffect, useState } from "react"; import { Suspense, useEffect, useState } from "react";
import theme from "@/app/theme"; import theme from "@/app/theme";
import { ThemeProvider } from "@emotion/react"; import { ThemeProvider } from "@emotion/react";
import Loading from "./Loading";
export default function Overlay({ children, filterSubject, setFilterSubject, setQuery, setSelectFilter, selectFilter, setTitlePage, setNewSize }) { export default function Overlay({
children,
filterSubject,
setFilterSubject,
setQuery,
setSelectFilter,
selectFilter,
setTitlePage,
setNewSize,
}) {
const [openMenu, setOpenMenu] = useState(false); const [openMenu, setOpenMenu] = useState(false);
const handleOpenMenu = () => { const handleOpenMenu = () => {
setOpenMenu(!openMenu); setOpenMenu(!openMenu);
}; };
useEffect(() => { useEffect(() => {
if(setNewSize != undefined) if (setNewSize != undefined) setNewSize(true);
setNewSize(true);
}, [openMenu, setNewSize]); }, [openMenu, setNewSize]);
return ( return (
<Suspense fallback={<Loading />}>
<ThemeProvider theme={theme}> <ThemeProvider theme={theme}>
<main className="flex min-h-screen bg-main flex-col"> <main className="flex min-h-screen bg-main flex-col">
<Header setQuery={setQuery} handleOpenMenu={handleOpenMenu} /> <Header setQuery={setQuery} handleOpenMenu={handleOpenMenu} />
<SideBar filterSubject={filterSubject} setFilterSubject={setFilterSubject} openMenu={openMenu} setSelectFilter={setSelectFilter} selectFilter={selectFilter} setTitlePage={setTitlePage}/> <SideBar
filterSubject={filterSubject}
setFilterSubject={setFilterSubject}
openMenu={openMenu}
setSelectFilter={setSelectFilter}
selectFilter={selectFilter}
setTitlePage={setTitlePage}
/>
<div <div
className={`flex flex-col ml-0 ${ className={`flex flex-col ml-0 ${
openMenu ? "md:ml-64" : "md:ml-24" openMenu ? "md:ml-64" : "md:ml-24"
...@@ -34,5 +48,6 @@ export default function Overlay({ children, filterSubject, setFilterSubject, set ...@@ -34,5 +48,6 @@ export default function Overlay({ children, filterSubject, setFilterSubject, set
</div> </div>
</main> </main>
</ThemeProvider> </ThemeProvider>
</Suspense>
); );
} }
...@@ -94,7 +94,7 @@ export default function LoginForm({ ...@@ -94,7 +94,7 @@ export default function LoginForm({
</p> </p>
</Paper> </Paper>
</form> </form>
<a onClick={() => router.push("/collections")} className="text-secondary lg:text-nowrap hover:font-bold cursor-pointer">Entrar sem conta</a> <a onClick={() => router.push("/collections")} className="text-secondary lg:text-nowrap hover:font-bold cursor-pointer">Permanecer sem logar</a>
<p className="mt-5 text-xs text-gray-400 lg:text-nowrap"> <p className="mt-5 text-xs text-gray-400 lg:text-nowrap">
Não tem uma conta?{" "} Não tem uma conta?{" "}
<a <a
......
...@@ -13,13 +13,14 @@ import RelatedResources from "./components/relatedResources"; ...@@ -13,13 +13,14 @@ import RelatedResources from "./components/relatedResources";
import { isLoggedIn, useLoginBarrier } from "@/app/handlers/loginHandler"; import { isLoggedIn, useLoginBarrier } from "@/app/handlers/loginHandler";
import mecredApi from "@/axiosConfig"; import mecredApi from "@/axiosConfig";
import { getStoredValue } from "@/app/handlers/localStorageHandler"; import { getStoredValue } from "@/app/handlers/localStorageHandler";
import Loading from "@/app/components/Loading";
export default function Recurso({ params }) { export default function Recurso({ params }) {
const [learningObject, setLearningObject] = useState({}); const [learningObject, setLearningObject] = useState(undefined);
const token = getStoredValue("access_token") const token = getStoredValue("access_token");
const client = getStoredValue("client") const client = getStoredValue("client");
const uid = getStoredValue("uid") const uid = getStoredValue("uid");
useEffect(() => { useEffect(() => {
let headers = {}; let headers = {};
...@@ -31,7 +32,7 @@ export default function Recurso({ params }) { ...@@ -31,7 +32,7 @@ export default function Recurso({ params }) {
client: client, client: client,
uid: uid, uid: uid,
Expires: 0, Expires: 0,
} };
} }
mecredApi mecredApi
...@@ -47,7 +48,11 @@ export default function Recurso({ params }) { ...@@ -47,7 +48,11 @@ export default function Recurso({ params }) {
return ( return (
<> <>
<Overlay> <Overlay>
{!learningObject ? (
<Loading scroll />
) : (
<div className="flex flex-col lg:flex-row"> <div className="flex flex-col lg:flex-row">
{console.log("AAAA", learningObject)}
<div className="flex flex-col bg-main p-3 lg:w-[55%] flex-shrink-0"> <div className="flex flex-col bg-main p-3 lg:w-[55%] flex-shrink-0">
<div className=" flex justify-center"> <div className=" flex justify-center">
{/* thumbnail */} {/* thumbnail */}
...@@ -76,6 +81,7 @@ export default function Recurso({ params }) { ...@@ -76,6 +81,7 @@ export default function Recurso({ params }) {
<RelatedResources learningObject={learningObject} /> <RelatedResources learningObject={learningObject} />
</div> </div>
</div> </div>
)}
</Overlay> </Overlay>
</> </>
); );
......
"use client"; "use client";
import Overlay from "../components/Overlay"; import Overlay from "../components/Overlay";
import { useLoginBarrier } from "../handlers/loginHandler";
import Form from "./components/Form"; import Form from "./components/Form";
import { useEffect } from "react";
export default function Submit() { export default function Submit() {
const loginBarrier = useLoginBarrier();
useEffect(() => {
loginBarrier()
}, [loginBarrier])
return ( return (
<Overlay> <Overlay>
<div className="flex w-full justify-center items-center"> <div className="flex w-full justify-center items-center">
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment