diff --git a/src/routes.tsx b/src/routes.tsx index 2cf0aa5b3..43a2ac41c 100644 --- a/src/routes.tsx +++ b/src/routes.tsx @@ -21,7 +21,7 @@ import RouteGuard from './ui/components/RouteGuard/RouteGuard'; import Person from '@material-ui/icons/Person'; import OpenPushRequests from './ui/views/OpenPushRequests/OpenPushRequests'; import PushDetails from './ui/views/PushDetails/PushDetails'; -import User from './ui/views/User/User'; +import User from './ui/views/User/UserProfile'; import UserList from './ui/views/UserList/UserList'; import RepoDetails from './ui/views/RepoDetails/RepoDetails'; import RepoList from './ui/views/RepoList/RepoList'; diff --git a/src/ui/services/user.ts b/src/ui/services/user.ts index ef2f60e5c..5896b60ea 100644 --- a/src/ui/services/user.ts +++ b/src/ui/services/user.ts @@ -17,7 +17,6 @@ const getUser = async ( if (id) { url = `${API_BASE}/api/v1/user/${id}`; } - console.log(url); try { const response: AxiosResponse = await axios(url, getAxiosConfig()); @@ -80,29 +79,4 @@ const updateUser = async (data: UserData): Promise => { } }; -const getUserLoggedIn = async ( - setIsLoading: SetStateCallback, - setIsAdmin: SetStateCallback, - setIsError: SetStateCallback, - setAuth: SetStateCallback, -): Promise => { - try { - const response: AxiosResponse = await axios( - `${API_BASE}/api/auth/me`, - getAxiosConfig(), - ); - const data = response.data; - setIsLoading(false); - setIsAdmin(data.admin || false); - } catch (error) { - setIsLoading(false); - const axiosError = error as AxiosError; - if (axiosError.response?.status === 401) { - setAuth(false); - } else { - setIsError(true); - } - } -}; - -export { getUser, getUsers, updateUser, getUserLoggedIn }; +export { getUser, getUsers, updateUser }; diff --git a/src/ui/views/User/User.tsx b/src/ui/views/User/UserProfile.tsx similarity index 86% rename from src/ui/views/User/User.tsx rename to src/ui/views/User/UserProfile.tsx index 517e09b4e..89b8a1bf9 100644 --- a/src/ui/views/User/User.tsx +++ b/src/ui/views/User/UserProfile.tsx @@ -1,4 +1,4 @@ -import React, { useState, useEffect } from 'react'; +import React, { useState, useEffect, useContext } from 'react'; import { Navigate, useNavigate, useParams } from 'react-router-dom'; import GridItem from '../../components/Grid/GridItem'; import GridContainer from '../../components/Grid/GridContainer'; @@ -6,7 +6,8 @@ import Card from '../../components/Card/Card'; import CardBody from '../../components/Card/CardBody'; import Button from '../../components/CustomButtons/Button'; import FormLabel from '@material-ui/core/FormLabel'; -import { getUser, updateUser, getUserLoggedIn } from '../../services/user'; +import { getUser, updateUser } from '../../services/user'; +import { UserContext } from '../../../context'; import { UserData } from '../../../types/models'; import { makeStyles } from '@material-ui/core/styles'; @@ -15,6 +16,7 @@ import { LogoGithubIcon } from '@primer/octicons-react'; import CloseRounded from '@material-ui/icons/CloseRounded'; import { Check, Save } from '@material-ui/icons'; import { TextField, Theme } from '@material-ui/core'; +import { UserContextType } from '../RepoDetails/RepoDetails'; const useStyles = makeStyles((theme: Theme) => ({ root: { @@ -31,42 +33,23 @@ export default function UserProfile(): React.ReactElement { const [auth, setAuth] = useState(true); const [isLoading, setIsLoading] = useState(true); const [isError, setIsError] = useState(false); - const [isProfile, setIsProfile] = useState(false); - const [isAdmin, setIsAdmin] = useState(false); const [gitAccount, setGitAccount] = useState(''); const navigate = useNavigate(); const { id } = useParams<{ id?: string }>(); + const { user: loggedInUser } = useContext(UserContext); + const isOwnProfile = !id; useEffect(() => { - if (id == null) { - setIsProfile(true); - } - - if (id) { - getUser( - setIsLoading, - (userData: UserData) => { - setData(userData); - setGitAccount(userData.gitAccount || ''); - }, - setAuth, - setIsError, - id, - ); - getUserLoggedIn(setIsLoading, setIsAdmin, setIsError, setAuth); - } else { - console.log('getting user data'); - setIsProfile(true); - getUser( - setIsLoading, - (userData: UserData) => { - setData(userData); - setGitAccount(userData.gitAccount || ''); - }, - setAuth, - setIsError, - ); - } + getUser( + setIsLoading, + (userData: UserData) => { + setData(userData); + setGitAccount(userData.gitAccount || ''); + }, + setAuth, + setIsError, + id, + ); }, [id]); if (isLoading) return
Loading...
; @@ -169,7 +152,7 @@ export default function UserProfile(): React.ReactElement { )} - {isProfile || isAdmin ? ( + {isOwnProfile || loggedInUser.admin ? (