Skip to content

Commit 6b7cd05

Browse files
committed
feat: workspace veiw card initial fetch done
1 parent 4c2e7c6 commit 6b7cd05

File tree

16 files changed

+157
-88
lines changed

16 files changed

+157
-88
lines changed

src/app/api/user.ts

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,19 @@ export interface UserData {
55
message: string;
66
}
77

8+
9+
export interface UserOrgs {
10+
[userName: string]: UserOrgDetails;
11+
}
12+
13+
export interface UserOrgDetails {
14+
bookmark: string;
15+
role: string;
16+
archive: string;
17+
}
18+
19+
20+
821
export interface AllUserData {
922
users: {
1023
id: number;
@@ -84,12 +97,12 @@ export const setOrgArcheiveStatus = async (
8497
export const getUserOrgs = async (
8598
authorizationToken: string,
8699
username: string
87-
) => {
100+
):Promise<AxiosResponse<UserOrgs>> => {
88101
const url =
89102
BACKEND_URL +
90-
'/api/protected/user/setArcheiveStatus/getUserOrgs/' +
103+
'/api/protected/user/getUserOrgs/' +
91104
username;
92-
const respnse = await axios.get(url, {
105+
const respnse = await axios.get<UserOrgs>(url, {
93106
headers: {
94107
Accept: 'application/json',
95108
Authorization: `Bearer ${authorizationToken}`,

src/app/context/user/userContext.tsx

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import { UserOrgs } from "app/api/user";
2+
import { createContext } from "react";
3+
4+
export interface UserContextType{
5+
username: String | null;
6+
setUsername: (name: String)=>void;
7+
userOrgs: UserOrgs | null;
8+
setUserOrgs: (user_Orgs: UserOrgs)=> void
9+
}
10+
11+
const UserContext= createContext<UserContextType | undefined>(undefined);
12+
13+
export default UserContext;

src/app/context/user/userState.tsx

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import { FC, ReactNode, useState } from "react";
2+
import UserContext from "./userContext";
3+
import { UserOrgs } from "app/api/user";
4+
5+
interface Props{
6+
children: ReactNode
7+
}
8+
9+
const UserState: FC<Props>= ({children})=>{
10+
11+
const [username, setUsername] = useState<String | null>(null);
12+
const [userOrgs, setUserOrgs] = useState<UserOrgs|null>(null)
13+
14+
return (
15+
<UserContext.Provider value={{username, setUsername, userOrgs, setUserOrgs}} >
16+
17+
{children}
18+
19+
</UserContext.Provider>
20+
)
21+
}
22+
23+
export default UserState

src/app/index.tsx

Lines changed: 40 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,47 @@
1-
import React from 'react';
21
import Navbar from 'app/components/navbar';
32
import BasicRoutes from 'app/routes/BasicRoutes';
43
import './index.scss';
5-
import { Toaster } from 'react-hot-toast';
4+
import toast, { Toaster } from 'react-hot-toast';
5+
import { getUser } from './api/user';
6+
import { useLocation, useNavigate } from 'react-router-dom';
7+
import { useQuery } from 'react-query';
8+
import { useContext } from 'react';
9+
import UserContext from './context/user/userContext';
10+
611
function App() {
12+
13+
const navigate= useNavigate();
14+
const location = useLocation();
15+
const currentPath = location.pathname;
16+
const userContext= useContext(UserContext);
17+
const token= localStorage.getItem('token');
18+
const checklogin= async ()=>{
19+
if(token!=null){
20+
try{
21+
const userData= await getUser(token);
22+
userContext?.setUsername(userData.data.message);
23+
if(currentPath=="/login"){
24+
navigate("/");
25+
}
26+
} catch(e){
27+
localStorage.removeItem('token')
28+
if(currentPath!="/login"){
29+
toast.error("Session expired")
30+
navigate("/login");
31+
}
32+
}
33+
}else{
34+
if(currentPath!="/login"){
35+
toast.error("Not authenticated")
36+
navigate("/login")
37+
}
38+
}
39+
}
40+
const {} = useQuery("login", checklogin, {
41+
enabled: true,
42+
staleTime: Infinity
43+
})
44+
745
return (
846
<>
947
<Navbar />

src/envConstants.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
export const CLIENT_ID = '149d2857118e05e729a8';
2-
export const BACKEND_URL = 'http://13.233.127.61:808';
2+
export const BACKEND_URL = 'http://13.233.127.61:8080';
33
export const AVATAR_API= "w9zrqHdDa4MsYB";

src/features/AddProject/index.tsx

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -19,25 +19,7 @@ const AddProject = () => {
1919

2020
const [validName, setValidName] = useState<boolean>(false);
2121

22-
const checkLogin = async () => {
23-
if (token != null) {
24-
const userData = await getUser(token);
25-
return userData.data;
26-
} else {
27-
toast.error('Not authorized');
28-
navigate('/login');
29-
}
30-
};
3122

32-
const { data, isError } = useQuery({
33-
queryFn: () => checkLogin(),
34-
queryKey: 'checkLogin',
35-
});
36-
37-
if (isError) {
38-
toast.error('Session Expired');
39-
navigate('/login');
40-
}
4123

4224
const linkChange = async (event: ChangeEvent<HTMLInputElement>) => {
4325
setLink(event.target.value);

src/features/home/components/projectCard/index.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ import { AVATAR_API } from 'envConstants';
2828

2929
const ProjectCard: React.FC<Props> = ({projectName,orgName ,status, githubData}) => {
3030
const token= localStorage.getItem('token')
31-
3231
const [ProjectData,SetProjectData]= useState<GetProject|null>(null)
3332
const [projectMembers,setProjectMembers]= useState<ProjectMembers|null>(null)
3433

src/features/home/index.tsx

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -34,30 +34,10 @@ const Home = () => {
3434
const [weeklyOrgProjectsData, setWeeklyOrgProjectsData] =
3535
useState<ProjectsGithubData | null>(null);
3636
const orgName = 'fordev';
37-
const checklogin = async () => {
38-
if (token != null) {
39-
try {
40-
const userData = await getUser(token);
41-
42-
setUserData(userData.data.message);
43-
} catch (e) {
44-
toast.error('Session expired');
45-
navigate('/login');
46-
}
47-
} else {
48-
toast.error('Not authorized');
49-
navigate('/login');
50-
}
51-
};
52-
53-
useEffect(() => {
54-
checklogin();
55-
}, []);
5637

5738
const fetchOrgProjects = async () => {
5839
if (token) {
5940
const orgProjects = await getOrgProjects(token, orgName);
60-
6141
setOrgProjects(orgProjects.data.projects);
6242

6343

src/features/login/index.tsx

Lines changed: 1 addition & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -14,29 +14,7 @@ import './index.scss';
1414

1515
const Login = () => {
1616
const [searchParam] = useSearchParams();
17-
const navigate = useNavigate();
18-
19-
20-
const token = localStorage.getItem('token');
21-
const checklogin = async () => {
22-
if (token != null) {
23-
try {
24-
const userData = await getUser(token);
25-
navigate('/');
26-
} catch (e) {
27-
localStorage.removeItem('token');
28-
navigate('/login');
29-
}
30-
localStorage.removeItem('token');
31-
32-
}
33-
};
34-
35-
useEffect(() => {
36-
checklogin();
37-
}, []);
38-
39-
17+
const navigate = useNavigate();
4018
const loginFunc = async () => {
4119
if (searchParam.get('code') !== null) {
4220
try{

src/features/project-members/index.scss

Whitespace-only changes.

0 commit comments

Comments
 (0)