Skip to content

Commit 5db6a82

Browse files
authored
Merge pull request #24 from deepraj21/landing-page
fix: update types of project
2 parents be660b1 + c9d5e61 commit 5db6a82

File tree

3 files changed

+32
-19
lines changed

3 files changed

+32
-19
lines changed

client/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<html lang="en">
33
<head>
44
<meta charset="UTF-8" />
5-
<link rel="icon" type="image" href="./public/logo.png" />
5+
<link rel="icon" type="image" href="/logo.png" />
66
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
77
<title>DevHub</title>
88
</head>

client/src/components/Sidebar/HomeSidebar.tsx

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,7 @@ import { useNavigate } from 'react-router-dom';
33
import { Sidebar, SidebarBody, SidebarLink } from "@/components/ui/sidebar";
44
import {
55
IconArrowLeft,
6-
IconBrandTabler,
7-
IconSettings,
8-
IconUserBolt,
6+
IconBrandTabler
97
} from "@tabler/icons-react";
108
import { Link } from 'react-router-dom';
119
import { motion } from "framer-motion";

client/src/pages/EditProfileForm.tsx

Lines changed: 30 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -7,23 +7,38 @@ import { Label } from "@/components/ui/label";
77

88
const backendUrl = import.meta.env.VITE_BACKEND_URL || 'http://localhost:5000';
99

10+
interface Project {
11+
id?: number;
12+
title: string;
13+
description: string;
14+
repoLink: string;
15+
}
16+
17+
interface ProfileData {
18+
name: string;
19+
bio: string;
20+
githubUsername: string;
21+
leetcodeUsername: string;
22+
projects: Project[];
23+
}
24+
1025
interface EditProfileFormProps {
11-
onProjectAdded: (newProject: any) => void;
26+
onProjectAdded: (newProject: Project) => void;
1227
}
1328

1429
const EditProfileForm: React.FC<EditProfileFormProps> = ({ onProjectAdded }) => {
1530
const { username } = useParams<{ username: string }>();
16-
const [profileData, setProfileData] = useState<any>({
31+
const [profileData, setProfileData] = useState<ProfileData>({
1732
name: '',
1833
bio: '',
1934
githubUsername: '',
2035
leetcodeUsername: '',
2136
projects: [],
2237
});
2338
const [isLoading, setIsLoading] = useState(false);
24-
const [selectedProject, setSelectedProject] = useState<any>(null);
39+
const [selectedProject, setSelectedProject] = useState<Project | null>(null);
2540
const [newProjectMode, setNewProjectMode] = useState(false);
26-
const [newProject, setNewProject] = useState({
41+
const [newProject, setNewProject] = useState<Project>({
2742
title: '',
2843
description: '',
2944
repoLink: '',
@@ -46,7 +61,7 @@ const EditProfileForm: React.FC<EditProfileFormProps> = ({ onProjectAdded }) =>
4661

4762
const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {
4863
const { name, value } = e.target;
49-
setProfileData(prevData => ({
64+
setProfileData((prevData: ProfileData) => ({
5065
...prevData,
5166
[name]: value,
5267
}));
@@ -55,12 +70,12 @@ const EditProfileForm: React.FC<EditProfileFormProps> = ({ onProjectAdded }) =>
5570
const handleProjectChange = (e: React.ChangeEvent<HTMLInputElement>) => {
5671
const { name, value } = e.target;
5772
if (selectedProject) {
58-
setSelectedProject(prevProject => ({
73+
setSelectedProject((prevProject: Project) => ({
5974
...prevProject,
6075
[name]: value,
6176
}));
6277
} else {
63-
setNewProject(prevProject => ({
78+
setNewProject((prevProject: Project) => ({
6479
...prevProject,
6580
[name]: value,
6681
}));
@@ -93,7 +108,7 @@ const EditProfileForm: React.FC<EditProfileFormProps> = ({ onProjectAdded }) =>
93108
const addedProject = response.data.project;
94109

95110
if (addedProject) {
96-
setProfileData(prevData => ({
111+
setProfileData((prevData: ProfileData) => ({
97112
...prevData,
98113
projects: [...prevData.projects, addedProject],
99114
}));
@@ -117,9 +132,9 @@ const EditProfileForm: React.FC<EditProfileFormProps> = ({ onProjectAdded }) =>
117132
const updatedProject = { ...selectedProject };
118133
await axios.put(`${backendUrl}/profile/${username}/projects/${selectedProject.id}`, updatedProject, { withCredentials: true });
119134

120-
setProfileData(prevData => ({
135+
setProfileData((prevData: ProfileData) => ({
121136
...prevData,
122-
projects: prevData.projects.map((p: any) => p.id === selectedProject.id ? updatedProject : p),
137+
projects: prevData.projects.map((p: Project) => p.id === selectedProject.id ? updatedProject : p),
123138
}));
124139
setSelectedProject(null);
125140
}
@@ -133,9 +148,9 @@ const EditProfileForm: React.FC<EditProfileFormProps> = ({ onProjectAdded }) =>
133148
try {
134149
const response = await axios.delete(`${backendUrl}/profile/${username}/projects/${projectId}`, { withCredentials: true });
135150
if (response.status === 200) {
136-
setProfileData(prevData => ({
151+
setProfileData((prevData: ProfileData) => ({
137152
...prevData,
138-
projects: prevData.projects.filter((project: any) => project.id !== projectId),
153+
projects: prevData.projects.filter((project: Project) => project.id !== projectId),
139154
}));
140155
alert('Project deleted successfully');
141156
if (selectedProject && selectedProject.id === projectId) {
@@ -211,7 +226,7 @@ const EditProfileForm: React.FC<EditProfileFormProps> = ({ onProjectAdded }) =>
211226

212227
<h2>Existing Projects</h2>
213228
<ul>
214-
{profileData.projects && profileData.projects.map((project, index) => (
229+
{profileData.projects && profileData.projects.map((project: Project, index: number) => (
215230
project && project.title ? (
216231
<li key={project.id || index}>
217232
<h3 onClick={() => setSelectedProject(project)}>{project.title}</h3>
@@ -258,7 +273,7 @@ const EditProfileForm: React.FC<EditProfileFormProps> = ({ onProjectAdded }) =>
258273
<Button onClick={handleUpdateProject} disabled={isLoading}>
259274
{isLoading ? 'Updating...' : 'Update Project'}
260275
</Button>
261-
<Button onClick={() => handleDeleteProject(selectedProject.id)} disabled={isLoading}>
276+
<Button onClick={() => handleDeleteProject(selectedProject.id!)} disabled={isLoading}>
262277
{isLoading ? 'Deleting...' : 'Delete Project'}
263278
</Button>
264279
</div>
@@ -314,4 +329,4 @@ const EditProfileForm: React.FC<EditProfileFormProps> = ({ onProjectAdded }) =>
314329
);
315330
};
316331

317-
export default EditProfileForm;
332+
export default EditProfileForm;

0 commit comments

Comments
 (0)