mirror of
https://github.com/prowler-cloud/prowler.git
synced 2025-12-19 05:17:47 +00:00
45 lines
1.0 KiB
TypeScript
45 lines
1.0 KiB
TypeScript
/**
|
|
* Next.js Client Instrumentation
|
|
*
|
|
* This file runs on the client before React hydration.
|
|
* Used to set up navigation progress tracking.
|
|
*
|
|
* @see https://nextjs.org/docs/app/api-reference/file-conventions/instrumentation-client
|
|
*/
|
|
|
|
import {
|
|
cancelProgress,
|
|
startProgress,
|
|
} from "@/components/ui/navigation-progress/use-navigation-progress";
|
|
|
|
const NAVIGATION_TYPE = {
|
|
PUSH: "push",
|
|
REPLACE: "replace",
|
|
TRAVERSE: "traverse",
|
|
} as const;
|
|
|
|
type NavigationType = (typeof NAVIGATION_TYPE)[keyof typeof NAVIGATION_TYPE];
|
|
|
|
function getCurrentUrl(): string {
|
|
return window.location.pathname + window.location.search;
|
|
}
|
|
|
|
/**
|
|
* Called by Next.js when router navigation begins.
|
|
* Triggers the navigation progress bar.
|
|
*/
|
|
export function onRouterTransitionStart(
|
|
url: string,
|
|
_navigationType: NavigationType,
|
|
) {
|
|
const currentUrl = getCurrentUrl();
|
|
|
|
if (url === currentUrl) {
|
|
// Same URL - cancel any ongoing progress
|
|
cancelProgress();
|
|
} else {
|
|
// Different URL - start progress
|
|
startProgress();
|
|
}
|
|
}
|