From 8cdc8b3ad096d0e2f945ead80e7d08de908befbb Mon Sep 17 00:00:00 2001 From: chamikaJ Date: Fri, 30 May 2025 12:19:02 +0530 Subject: [PATCH] chore(dependencies): update rimraf version and clean up package-lock.json - Removed deprecated rimraf entries from package-lock.json to streamline dependencies. - Added an override for rimraf in package.json to ensure compatibility with version 6.0.1. - Refactored useTaskDragAndDrop and useTaskSocketHandlers hooks to use separate selectors for improved performance. - Made minor style adjustments in project-view-header and project-view components for consistency. --- worklenz-backend/package-lock.json | 77 ------------------- worklenz-backend/package.json | 3 + .../src/hooks/useTaskDragAndDrop.ts | 6 +- .../src/hooks/useTaskSocketHandlers.ts | 5 +- .../projectView/project-view-header.tsx | 2 +- .../projects/projectView/project-view.tsx | 9 +-- .../taskList/project-view-task-list.tsx | 39 +++------- 7 files changed, 23 insertions(+), 118 deletions(-) diff --git a/worklenz-backend/package-lock.json b/worklenz-backend/package-lock.json index 138d01ff..09dbb1c0 100644 --- a/worklenz-backend/package-lock.json +++ b/worklenz-backend/package-lock.json @@ -3934,23 +3934,6 @@ "node": ">=8" } }, - "node_modules/@jest/core/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/@jest/core/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -4485,22 +4468,6 @@ "node": ">=10" } }, - "node_modules/@mapbox/node-pre-gyp/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/@mapbox/node-pre-gyp/node_modules/semver": { "version": "7.5.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", @@ -9102,23 +9069,6 @@ "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/flat-cache/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/flatted": { "version": "3.2.7", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", @@ -9300,17 +9250,6 @@ "mkdirp": "bin/cmd.js" } }, - "node_modules/fstream/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", @@ -14983,22 +14922,6 @@ "node": ">=8.17.0" } }, - "node_modules/tmp/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/tmpl": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", diff --git a/worklenz-backend/package.json b/worklenz-backend/package.json index cffa800b..8c689b39 100644 --- a/worklenz-backend/package.json +++ b/worklenz-backend/package.json @@ -42,6 +42,9 @@ "reportFile": "test-reporter.xml", "indent": 4 }, + "overrides": { + "rimraf": "^6.0.1" + }, "dependencies": { "@aws-sdk/client-s3": "^3.378.0", "@aws-sdk/client-ses": "^3.378.0", diff --git a/worklenz-frontend/src/hooks/useTaskDragAndDrop.ts b/worklenz-frontend/src/hooks/useTaskDragAndDrop.ts index cab0a361..56e41057 100644 --- a/worklenz-frontend/src/hooks/useTaskDragAndDrop.ts +++ b/worklenz-frontend/src/hooks/useTaskDragAndDrop.ts @@ -19,10 +19,8 @@ import { IProjectTask } from '@/types/project/projectTasksViewModel.types'; export const useTaskDragAndDrop = () => { const dispatch = useAppDispatch(); - const { taskGroups, groupBy } = useAppSelector(state => ({ - taskGroups: state.taskReducer.taskGroups, - groupBy: state.taskReducer.groupBy, - })); + const taskGroups = useAppSelector(state => state.taskReducer.taskGroups); + const groupBy = useAppSelector(state => state.taskReducer.groupBy); // Memoize sensors configuration for better performance const sensors = useSensors( diff --git a/worklenz-frontend/src/hooks/useTaskSocketHandlers.ts b/worklenz-frontend/src/hooks/useTaskSocketHandlers.ts index 7c85ead6..6cc17eed 100644 --- a/worklenz-frontend/src/hooks/useTaskSocketHandlers.ts +++ b/worklenz-frontend/src/hooks/useTaskSocketHandlers.ts @@ -49,8 +49,9 @@ export const useTaskSocketHandlers = () => { const { socket } = useSocket(); const currentSession = useAuthService().getCurrentSession(); - const { loadingAssignees, taskGroups } = useAppSelector((state: any) => state.taskReducer); - const { projectId } = useAppSelector((state: any) => state.projectReducer); + const loadingAssignees = useAppSelector((state: any) => state.taskReducer.loadingAssignees); + const taskGroups = useAppSelector((state: any) => state.taskReducer.taskGroups); + const projectId = useAppSelector((state: any) => state.projectReducer.projectId); // Memoize socket event handlers const handleAssigneesUpdate = useCallback( diff --git a/worklenz-frontend/src/pages/projects/projectView/project-view-header.tsx b/worklenz-frontend/src/pages/projects/projectView/project-view-header.tsx index 385b50f1..bc82466d 100644 --- a/worklenz-frontend/src/pages/projects/projectView/project-view-header.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/project-view-header.tsx @@ -306,7 +306,7 @@ const ProjectViewHeader = () => { {renderProjectAttributes()} } - style={{ paddingInline: 0, marginBlockEnd: 12 }} + style={{ paddingInline: 0}} extra={renderHeaderActions()} /> {createPortal( {}} />, document.body, 'project-drawer')} diff --git a/worklenz-frontend/src/pages/projects/projectView/project-view.tsx b/worklenz-frontend/src/pages/projects/projectView/project-view.tsx index d5d87347..5bc25a73 100644 --- a/worklenz-frontend/src/pages/projects/projectView/project-view.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/project-view.tsx @@ -1,6 +1,6 @@ import React, { useEffect, useState, useMemo, useCallback } from 'react'; -import { PushpinFilled, PushpinOutlined, QuestionCircleOutlined } from '@ant-design/icons'; -import { Badge, Button, ConfigProvider, Flex, Tabs, TabsProps, Tooltip } from 'antd'; +import { PushpinFilled, PushpinOutlined } from '@ant-design/icons'; +import { Button, ConfigProvider, Flex, Tabs } from 'antd'; import { useLocation, useNavigate, useParams, useSearchParams } from 'react-router-dom'; import { createPortal } from 'react-dom'; @@ -117,7 +117,7 @@ const ProjectView = () => { const tabMenuItems = useMemo(() => tabItems.map(item => ({ key: item.key, label: ( - + {item.label} {item.key === 'tasks-list' || item.key === 'board' ? ( @@ -140,9 +140,6 @@ const ProjectView = () => { ) : ( ) } diff --git a/worklenz-frontend/src/pages/projects/projectView/taskList/project-view-task-list.tsx b/worklenz-frontend/src/pages/projects/projectView/taskList/project-view-task-list.tsx index 29914771..80a999d0 100644 --- a/worklenz-frontend/src/pages/projects/projectView/taskList/project-view-task-list.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/taskList/project-view-task-list.tsx @@ -19,36 +19,19 @@ const ProjectViewTaskList = () => { const [searchParams, setSearchParams] = useSearchParams(); const [initialLoadComplete, setInitialLoadComplete] = useState(false); - // Combine related selectors to reduce subscriptions - const { - projectId, - taskGroups, - loadingGroups, - groupBy, - archived, - fields, - search, - } = useAppSelector(state => ({ - projectId: state.projectReducer.projectId, - taskGroups: state.taskReducer.taskGroups, - loadingGroups: state.taskReducer.loadingGroups, - groupBy: state.taskReducer.groupBy, - archived: state.taskReducer.archived, - fields: state.taskReducer.fields, - search: state.taskReducer.search, - })); + // Use separate selectors to avoid creating new objects + const projectId = useAppSelector(state => state.projectReducer.projectId); + const taskGroups = useAppSelector(state => state.taskReducer.taskGroups); + const loadingGroups = useAppSelector(state => state.taskReducer.loadingGroups); + const groupBy = useAppSelector(state => state.taskReducer.groupBy); + const archived = useAppSelector(state => state.taskReducer.archived); + const fields = useAppSelector(state => state.taskReducer.fields); + const search = useAppSelector(state => state.taskReducer.search); - const { - statusCategories, - loading: loadingStatusCategories, - } = useAppSelector(state => ({ - statusCategories: state.taskStatusReducer.statusCategories, - loading: state.taskStatusReducer.loading, - })); + const statusCategories = useAppSelector(state => state.taskStatusReducer.statusCategories); + const loadingStatusCategories = useAppSelector(state => state.taskStatusReducer.loading); - const { loadingPhases } = useAppSelector(state => ({ - loadingPhases: state.phaseReducer.loadingPhases, - })); + const loadingPhases = useAppSelector(state => state.phaseReducer.loadingPhases); // Single source of truth for loading state - EXCLUDE labels loading from skeleton // Labels loading should not block the main task list display