From b6401737d1ef3ca51f82bd898cdd2a5c7c035257 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafael=20L=C3=A1szl=C3=B3?= <rlacko99@gmail.com> Date: Thu, 10 Dec 2020 18:24:40 +0100 Subject: [PATCH] reorder and check if is admin of group --- client/src/components/Content.tsx | 16 +++++++------ .../admin/{ => group}/GroupAdmin.tsx | 23 +++++++++++++++++-- .../admin/{ => group}/GroupDocuments.tsx | 0 .../admin/{ => group}/GroupItems.tsx | 0 .../admin/{ => group}/GroupMembers.tsx | 0 .../admin/{ => group}/GroupRentals.tsx | 0 .../admin/{ => group}/GroupStorages.tsx | 0 client/src/components/group/GroupInfo.tsx | 15 +++--------- .../src/components/utils/GroupNotExists.tsx | 13 +++++++++++ client/src/components/utils/Loader.tsx | 13 +++++++++++ .../src/components/utils/NotAdminOfGroup.tsx | 13 +++++++++++ 11 files changed, 72 insertions(+), 21 deletions(-) rename client/src/components/admin/{ => group}/GroupAdmin.tsx (83%) rename client/src/components/admin/{ => group}/GroupDocuments.tsx (100%) rename client/src/components/admin/{ => group}/GroupItems.tsx (100%) rename client/src/components/admin/{ => group}/GroupMembers.tsx (100%) rename client/src/components/admin/{ => group}/GroupRentals.tsx (100%) rename client/src/components/admin/{ => group}/GroupStorages.tsx (100%) create mode 100644 client/src/components/utils/GroupNotExists.tsx create mode 100644 client/src/components/utils/Loader.tsx create mode 100644 client/src/components/utils/NotAdminOfGroup.tsx diff --git a/client/src/components/Content.tsx b/client/src/components/Content.tsx index 4c2f64b..8ee6031 100644 --- a/client/src/components/Content.tsx +++ b/client/src/components/Content.tsx @@ -2,13 +2,13 @@ import { Box, Container } from '@material-ui/core'; import { Redirect, Route, Switch } from 'react-router-dom'; import { Faq } from './Faq'; -import { GroupAdmin } from './admin/GroupAdmin'; -import { GroupDocuments } from './admin/GroupDocuments'; +import { GroupAdmin } from './admin/group/GroupAdmin'; +import { GroupDocuments } from './admin/group/GroupDocuments'; import { GroupInfo } from './group/GroupInfo'; -import { GroupItems } from './admin/GroupItems'; -import { GroupMembers } from './admin/GroupMembers'; -import { GroupRentals } from './admin/GroupRentals'; -import { GroupStorages } from './admin/GroupStorages'; +import { GroupItems } from './admin/group/GroupItems'; +import { GroupMembers } from './admin/group/GroupMembers'; +import { GroupRentals } from './admin/group/GroupRentals'; +import { GroupStorages } from './admin/group/GroupStorages'; import { Groups } from './group/Groups'; import { LoggedInHome } from './home/LoggedInHome'; import { LoggedOutHome } from './home/LoggedOutHome'; @@ -22,7 +22,9 @@ export const Content: React.FC = () => { <Container maxWidth="lg"> <Box py={2}> <Switch> - <Route path="/groups" component={Groups} /> + <Route path="/groups"> + <SwitchComponentByAuth isLoggedIn={<Groups />} notLoggedIn={<NotAuthorized />} /> + </Route> <Route path="/gyik" component={Faq} /> <Route path="/profile/me"> <SwitchComponentByAuth isLoggedIn={<OwnProfile />} notLoggedIn={<NotAuthorized />} /> diff --git a/client/src/components/admin/GroupAdmin.tsx b/client/src/components/admin/group/GroupAdmin.tsx similarity index 83% rename from client/src/components/admin/GroupAdmin.tsx rename to client/src/components/admin/group/GroupAdmin.tsx index c215195..c5ee1c2 100644 --- a/client/src/components/admin/GroupAdmin.tsx +++ b/client/src/components/admin/group/GroupAdmin.tsx @@ -1,10 +1,29 @@ import { Card, CardContent, Grid, Typography, useTheme } from '@material-ui/core'; +import { IgetGroupById, getGroupById } from '../../../graphql/queries/group/getGroupById'; +import { GroupNotExists } from '../../utils/GroupNotExists'; +import { GroupRole } from '../../../types/graphqlSchema'; +import { Loader } from '../../utils/Loader'; +import { NotAdminOfGroup } from '../../utils/NotAdminOfGroup'; import React from 'react'; -import { StyledLink } from '../utils/StyledLink'; +import { RouteComponentProps } from 'react-router-dom'; +import { StyledLink } from '../../utils/StyledLink'; +import { useQuery } from '@apollo/client'; -export const GroupAdmin: React.FC = () => { +type TParams = { id: string }; + +export const GroupAdmin: React.FC<RouteComponentProps<TParams>> = ({ match }) => { const theme = useTheme(); + const { loading: groupDataIsLoading, data: groupData, error } = useQuery<IgetGroupById>(getGroupById(''), { + variables: { groupId: Number(match.params.id) }, + }); + + if (groupDataIsLoading) return <Loader />; + if (!!error) console.log(error); + if (!groupData) return <GroupNotExists />; + if (!groupData?.group.ownMemberShip || groupData?.group.ownMemberShip.groupRole !== GroupRole.Admin) + return <NotAdminOfGroup />; + return ( <Grid container spacing={1} justify="center"> <Grid item xs={12} md={4}> diff --git a/client/src/components/admin/GroupDocuments.tsx b/client/src/components/admin/group/GroupDocuments.tsx similarity index 100% rename from client/src/components/admin/GroupDocuments.tsx rename to client/src/components/admin/group/GroupDocuments.tsx diff --git a/client/src/components/admin/GroupItems.tsx b/client/src/components/admin/group/GroupItems.tsx similarity index 100% rename from client/src/components/admin/GroupItems.tsx rename to client/src/components/admin/group/GroupItems.tsx diff --git a/client/src/components/admin/GroupMembers.tsx b/client/src/components/admin/group/GroupMembers.tsx similarity index 100% rename from client/src/components/admin/GroupMembers.tsx rename to client/src/components/admin/group/GroupMembers.tsx diff --git a/client/src/components/admin/GroupRentals.tsx b/client/src/components/admin/group/GroupRentals.tsx similarity index 100% rename from client/src/components/admin/GroupRentals.tsx rename to client/src/components/admin/group/GroupRentals.tsx diff --git a/client/src/components/admin/GroupStorages.tsx b/client/src/components/admin/group/GroupStorages.tsx similarity index 100% rename from client/src/components/admin/GroupStorages.tsx rename to client/src/components/admin/group/GroupStorages.tsx diff --git a/client/src/components/group/GroupInfo.tsx b/client/src/components/group/GroupInfo.tsx index 3f9c380..d008a04 100644 --- a/client/src/components/group/GroupInfo.tsx +++ b/client/src/components/group/GroupInfo.tsx @@ -14,6 +14,7 @@ import { import { IgetGroupById, getGroupById } from '../../graphql/queries/group/getGroupById'; import { CardTable } from '../utils/CardTable'; +import { GroupNotExists } from '../utils/GroupNotExists'; import { Loading } from '../utils/Loading'; import React from 'react'; import { RouteComponentProps } from 'react-router-dom'; @@ -47,18 +48,8 @@ export const GroupInfo: React.FC<RouteComponentProps<TParams>> = ({ match }) => { variables: { groupId: Number(match.params.id) } }, ); - console.log(error); - - if (!groupDataIsLoading && !groupData) - return ( - <> - <Box my={2} mx={1}> - <Typography align="center" variant="h5"> - A megadott csoport nem létezik! - </Typography> - </Box> - </> - ); + if (!!error) console.log(error); + if (!groupDataIsLoading && !groupData) return <GroupNotExists />; return ( <> diff --git a/client/src/components/utils/GroupNotExists.tsx b/client/src/components/utils/GroupNotExists.tsx new file mode 100644 index 0000000..c1c2230 --- /dev/null +++ b/client/src/components/utils/GroupNotExists.tsx @@ -0,0 +1,13 @@ +import { Box, Typography } from '@material-ui/core'; + +import React from 'react'; + +export const GroupNotExists: React.FC = () => ( + <> + <Box my={2} mx={1}> + <Typography align="center" variant="h5"> + A megadott csoport nem létezik! + </Typography> + </Box> + </> +); diff --git a/client/src/components/utils/Loader.tsx b/client/src/components/utils/Loader.tsx new file mode 100644 index 0000000..7cea4ce --- /dev/null +++ b/client/src/components/utils/Loader.tsx @@ -0,0 +1,13 @@ +import { Box, Typography } from '@material-ui/core'; + +import React from 'react'; + +export const Loader: React.FC = () => ( + <> + <Box my={2} mx={1}> + <Typography align="center" variant="h5"> + Loading + </Typography> + </Box> + </> +); diff --git a/client/src/components/utils/NotAdminOfGroup.tsx b/client/src/components/utils/NotAdminOfGroup.tsx new file mode 100644 index 0000000..a1d0701 --- /dev/null +++ b/client/src/components/utils/NotAdminOfGroup.tsx @@ -0,0 +1,13 @@ +import { Box, Typography } from '@material-ui/core'; + +import React from 'react'; + +export const NotAdminOfGroup: React.FC = () => ( + <> + <Box my={2} mx={1}> + <Typography align="center" variant="h5"> + Nem vagy adminja ennek a csoportnak! + </Typography> + </Box> + </> +); -- GitLab