From 496bd34ff4143dcef9532f4298ca670bfa34e399 Mon Sep 17 00:00:00 2001 From: Divyansh Singh <40380293+brc-dd@users.noreply.github.com> Date: Sat, 3 Sep 2022 10:08:17 +0530 Subject: [PATCH] fix(theme): show progress bar after delay (#1278) --- src/client/theme-default/index.ts | 17 +++++++++++++++-- src/client/theme-default/support/utils.ts | 8 ++++---- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/src/client/theme-default/index.ts b/src/client/theme-default/index.ts index ff23ef38b72..fb317104e9e 100644 --- a/src/client/theme-default/index.ts +++ b/src/client/theme-default/index.ts @@ -28,11 +28,24 @@ const theme: Theme = { NotFound, enhanceApp: ({ router }) => { if (inBrowser) { + let timeoutId: NodeJS.Timeout + let called = false + router.onBeforeRouteChange = () => { - nprogress.start() + timeoutId = setTimeout(() => { + nprogress.start() + called = true + }, 500) } + router.onAfterRouteChanged = () => { - nprogress.done(true) + if (timeoutId) { + clearTimeout(timeoutId) + } + if (called) { + nprogress.done(true) + called = false + } } } } diff --git a/src/client/theme-default/support/utils.ts b/src/client/theme-default/support/utils.ts index 79ffa658223..33bc0bb539c 100644 --- a/src/client/theme-default/support/utils.ts +++ b/src/client/theme-default/support/utils.ts @@ -13,12 +13,12 @@ export function isExternal(path: string): boolean { } export function throttleAndDebounce(fn: () => void, delay: number): () => void { - let timeout: any + let timeoutId: NodeJS.Timeout let called = false return () => { - if (timeout) { - clearTimeout(timeout) + if (timeoutId) { + clearTimeout(timeoutId) } if (!called) { @@ -28,7 +28,7 @@ export function throttleAndDebounce(fn: () => void, delay: number): () => void { called = false }, delay) } else { - timeout = setTimeout(fn, delay) + timeoutId = setTimeout(fn, delay) } } }