From 736296090e29050e29293a0848f3ec6075efd26c Mon Sep 17 00:00:00 2001 From: Anmol Singh Bhatia <121005188+anmolsinghbhatia@users.noreply.github.com> Date: Mon, 11 Aug 2025 00:37:35 +0530 Subject: [PATCH] [WEB-4654] refactor: replace nprogress with bprogress and clean up unused code (#7559) * refactor: replace nprogress with bprogress and clean up unused code * chore: code refactor * chore: code refactor --- apps/web/app/provider.tsx | 43 +-- .../core/components/core/list/list-item.tsx | 6 +- .../components/cycles/cycle-peek-overview.tsx | 2 +- .../cycles/list/cycle-list-item-action.tsx | 4 +- .../cycles/list/cycles-list-item.tsx | 4 +- .../components/home/widgets/recents/issue.tsx | 2 +- .../components/modules/module-card-item.tsx | 2 +- apps/web/core/components/project/card.tsx | 6 +- apps/web/core/hooks/use-app-router.tsx | 2 +- .../core/lib/b-progress/AppProgressBar.tsx | 6 + apps/web/core/lib/b-progress/index.tsx | 1 + .../core/lib/n-progress/AppProgressBar.tsx | 313 ------------------ apps/web/core/lib/n-progress/index.tsx | 65 ---- .../lib/n-progress/utils/getAnchorProperty.ts | 59 ---- apps/web/core/lib/n-progress/utils/sameURL.ts | 13 - apps/web/core/lib/n-progress/withSuspense.tsx | 11 - apps/web/package.json | 5 +- apps/web/styles/nprogress.css | 41 --- yarn.lock | 20 ++ 19 files changed, 67 insertions(+), 538 deletions(-) create mode 100644 apps/web/core/lib/b-progress/AppProgressBar.tsx create mode 100644 apps/web/core/lib/b-progress/index.tsx delete mode 100644 apps/web/core/lib/n-progress/AppProgressBar.tsx delete mode 100644 apps/web/core/lib/n-progress/index.tsx delete mode 100644 apps/web/core/lib/n-progress/utils/getAnchorProperty.ts delete mode 100644 apps/web/core/lib/n-progress/utils/sameURL.ts delete mode 100644 apps/web/core/lib/n-progress/withSuspense.tsx delete mode 100644 apps/web/styles/nprogress.css diff --git a/apps/web/app/provider.tsx b/apps/web/app/provider.tsx index 4a014d619..830dcb58c 100644 --- a/apps/web/app/provider.tsx +++ b/apps/web/app/provider.tsx @@ -1,6 +1,7 @@ "use client"; import { FC, ReactNode } from "react"; +import { AppProgressProvider as ProgressProvider } from "@bprogress/next"; import dynamic from "next/dynamic"; import { useTheme, ThemeProvider } from "next-themes"; import { SWRConfig } from "swr"; @@ -10,8 +11,6 @@ import { TranslationProvider } from "@plane/i18n"; import { Toast } from "@plane/ui"; //helpers import { resolveGeneralTheme } from "@plane/utils"; -// nprogress -import { AppProgressBar } from "@/lib/n-progress"; // polyfills import "@/lib/polyfills"; // mobx store provider @@ -37,23 +36,29 @@ export const AppProvider: FC = (props) => { // themes return ( <> - - - - - - - - - - {children} - - - - - - - + + + + + + + + + + {children} + + + + + + + + ); }; diff --git a/apps/web/core/components/core/list/list-item.tsx b/apps/web/core/components/core/list/list-item.tsx index 7fe1cad4f..89c911680 100644 --- a/apps/web/core/components/core/list/list-item.tsx +++ b/apps/web/core/components/core/list/list-item.tsx @@ -23,7 +23,7 @@ interface IListItemProps { actionItemContainerClassName?: string; isSidebarOpen?: boolean; quickActionElement?: JSX.Element; - preventDefaultNProgress?: boolean; + preventDefaultProgress?: boolean; leftElementClassName?: string; rightElementClassName?: string; } @@ -45,7 +45,7 @@ export const ListItem: FC = (props) => { isSidebarOpen = false, quickActionElement, itemClassName = "", - preventDefaultNProgress = false, + preventDefaultProgress = false, leftElementClassName = "", rightElementClassName = "", } = props; @@ -76,7 +76,7 @@ export const ListItem: FC = (props) => { target="_self" onClick={handleControlLinkClick} disabled={disableLink} - data-prevent-nprogress={preventDefaultNProgress} + data-prevent-progress={preventDefaultProgress} >
{prependTitleElement && {prependTitleElement}} diff --git a/apps/web/core/components/cycles/cycle-peek-overview.tsx b/apps/web/core/components/cycles/cycle-peek-overview.tsx index 2baadf0c1..51d70ae98 100644 --- a/apps/web/core/components/cycles/cycle-peek-overview.tsx +++ b/apps/web/core/components/cycles/cycle-peek-overview.tsx @@ -31,7 +31,7 @@ export const CyclePeekOverview: React.FC = observer((props) => { const handleClose = () => { const query = generateQueryParams(searchParams, ["peekCycle"]); - router.push(`${pathname}?${query}`, {}, { showProgressBar: false }); + router.push(`${pathname}?${query}`, { showProgress: false }); }; useEffect(() => { diff --git a/apps/web/core/components/cycles/list/cycle-list-item-action.tsx b/apps/web/core/components/cycles/list/cycle-list-item-action.tsx index 9f7940597..330f6041f 100644 --- a/apps/web/core/components/cycles/list/cycle-list-item-action.tsx +++ b/apps/web/core/components/cycles/list/cycle-list-item-action.tsx @@ -189,9 +189,9 @@ export const CycleListItemAction: FC = observer((props) => { const query = generateQueryParams(searchParams, ["peekCycle"]); if (searchParams.has("peekCycle") && searchParams.get("peekCycle") === cycleId) { - router.push(`${pathname}?${query}`, {}, { showProgressBar: false }); + router.push(`${pathname}?${query}`, { showProgress: false }); } else { - router.push(`${pathname}?${query && `${query}&`}peekCycle=${cycleId}`, {}, { showProgressBar: false }); + router.push(`${pathname}?${query && `${query}&`}peekCycle=${cycleId}`, { showProgress: false }); } }; diff --git a/apps/web/core/components/cycles/list/cycles-list-item.tsx b/apps/web/core/components/cycles/list/cycles-list-item.tsx index 6e0bca8de..d1ca58e05 100644 --- a/apps/web/core/components/cycles/list/cycles-list-item.tsx +++ b/apps/web/core/components/cycles/list/cycles-list-item.tsx @@ -67,9 +67,9 @@ export const CyclesListItem: FC = observer((props) => { const query = generateQueryParams(searchParams, ["peekCycle"]); if (searchParams.has("peekCycle") && searchParams.get("peekCycle") === cycleId) { - router.push(`${pathname}?${query}`, {}, { showProgressBar: false }); + router.push(`${pathname}?${query}`, { showProgress: false }); } else { - router.push(`${pathname}?${query && `${query}&`}peekCycle=${cycleId}`, {}, { showProgressBar: false }); + router.push(`${pathname}?${query && `${query}&`}peekCycle=${cycleId}`, { showProgress: false }); } }; diff --git a/apps/web/core/components/home/widgets/recents/issue.tsx b/apps/web/core/components/home/widgets/recents/issue.tsx index 25fafa059..040aefea4 100644 --- a/apps/web/core/components/home/widgets/recents/issue.tsx +++ b/apps/web/core/components/home/widgets/recents/issue.tsx @@ -129,7 +129,7 @@ export const RecentIssue = observer((props: BlockProps) => { className="bg-transparent my-auto !px-2 border-none py-3" itemClassName="my-auto" onItemClick={handlePeekOverview} - preventDefaultNProgress + preventDefaultProgress /> ); }); diff --git a/apps/web/core/components/modules/module-card-item.tsx b/apps/web/core/components/modules/module-card-item.tsx index e588610bc..578af737b 100644 --- a/apps/web/core/components/modules/module-card-item.tsx +++ b/apps/web/core/components/modules/module-card-item.tsx @@ -211,7 +211,7 @@ export const ModuleCardItem: React.FC = observer((props) => { })); return ( -
+
diff --git a/apps/web/core/components/project/card.tsx b/apps/web/core/components/project/card.tsx index a90838720..c2800f3aa 100644 --- a/apps/web/core/components/project/card.tsx +++ b/apps/web/core/components/project/card.tsx @@ -121,7 +121,7 @@ export const ProjectCard: React.FC = observer((props) => { const MENU_ITEMS: TContextMenuItem[] = [ { key: "settings", - action: () => router.push(`/${workspaceSlug}/settings/projects/${project.id}`, {}, { showProgressBar: false }), + action: () => router.push(`/${workspaceSlug}/settings/projects/${project.id}`, { showProgress: false }), title: "Settings", icon: Settings, shouldRender: !isArchived && (hasAdminRole || hasMemberRole), @@ -200,7 +200,7 @@ export const ProjectCard: React.FC = observer((props) => { if (!isArchived) setJoinProjectModal(true); } }} - data-prevent-nprogress={!isMemberOfProject || isArchived} + data-prevent-progress={!isMemberOfProject || isArchived} className="flex flex-col rounded border border-custom-border-200 bg-custom-background-100" > @@ -232,7 +232,7 @@ export const ProjectCard: React.FC = observer((props) => {
{!isArchived && ( -
+