Skip to content

Commit 8e22209

Browse files
committed
Refactor code structure for improved readability and maintainability
1 parent be13de8 commit 8e22209

5 files changed

Lines changed: 547 additions & 744 deletions

File tree

src/components/apis/analytics.ts

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,19 @@ export interface TaskProgress {
3232
export interface ProjectStats {
3333
projectId: string;
3434
projectName: string;
35-
totalTasks: number;
36-
completedTasks: number;
37-
pendingTasks: number;
38-
overdueTasks: number;
39-
teamSize: number;
35+
memberCount: number;
36+
mainTaskCount: number;
37+
subTaskCount: number;
38+
completedSubTasks: number;
39+
overdueSubTasks: number;
40+
tasksByPriority: Record<string, number>;
41+
tasksByStatus: Record<string, number>;
42+
completionRate: number;
43+
tasksByCategory: Array<{
44+
categoryName: string;
45+
totalTasks: number;
46+
completedTasks: number;
47+
}>;
4048
}
4149

4250
export interface UserOverview {

src/components/headers/NavigationHeader.tsx

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,19 @@ export default function NavigationHeader() {
4747
return;
4848
}
4949
try {
50-
const project = await projectsApi.getProjectById(projectName);
50+
// Decode project name from URL and find matching project
51+
const decodedName = decodeURIComponent(projectName).replace(/-/g, ' ');
52+
const projects = await projectsApi.getProjectsAsMember();
53+
const project = projects.find(p => p.projectName.toLowerCase() === decodedName.toLowerCase());
54+
55+
if (!project) {
56+
console.warn('NavigationHeader - Project not found:', decodedName);
57+
setUserProjectRole(null);
58+
return;
59+
}
60+
5161
const role = project.permissions?.[user.id] || 'Member';
62+
console.log('NavigationHeader - Project:', project.projectName, 'User ID:', user.id, 'Role:', role, 'Permissions:', project.permissions);
5263
setUserProjectRole(role);
5364
} catch (err) {
5465
console.error('Failed to fetch project role:', err);

src/components/sidebar/ProjectList.tsx

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -93,9 +93,14 @@ export default function ProjectList({ openCategories, onNavigateToProjects, refr
9393
.slice(0, RECENT_LIMIT);
9494
}, [projects]);
9595

96-
const handleProjectClick = (projectName: string) => {
97-
const slug = buildSlug(projectName);
98-
navigate(`/home/project/${slug}/kanban`);
96+
const handleProjectClick = (project: Project) => {
97+
const slug = buildSlug(project.projectName);
98+
// Check if user is a client in this project
99+
const userRole = project.permissions?.[currentUser?.id || ''];
100+
const isClient = userRole === 'Client';
101+
// Redirect clients to analytics, others to kanban
102+
const targetPath = isClient ? 'analytics' : 'kanban';
103+
navigate(`/home/project/${slug}/${targetPath}`);
99104
};
100105

101106
return (
@@ -147,7 +152,7 @@ export default function ProjectList({ openCategories, onNavigateToProjects, refr
147152
key={project.id}
148153
value={project.id}
149154
className={mergeClasses(s.navSubItem)}
150-
onClick={() => handleProjectClick(project.projectName)}
155+
onClick={() => handleProjectClick(project)}
151156
>
152157
{project.projectName}
153158
</NavSubItem>

0 commit comments

Comments
 (0)