mirror of
				https://github.com/csunny/DB-GPT.git
				synced 2025-10-31 06:39:43 +00:00 
			
		
		
		
	Co-authored-by: 夏姜 <wenfengjiang.jwf@digital-engine.com> Co-authored-by: yhjun1026 <460342015@qq.com> Co-authored-by: aries_ckt <916701291@qq.com> Co-authored-by: wb-lh513319 <wb-lh513319@alibaba-inc.com>
		
			
				
	
	
		
			62 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import Router from 'next/router';
 | |
| import NProgress from 'nprogress';
 | |
| 
 | |
| let timer: any;
 | |
| let state: any;
 | |
| let activeRequests = 0;
 | |
| const delay = 250;
 | |
| 
 | |
| function load() {
 | |
|   if (state === 'loading') {
 | |
|     return;
 | |
|   }
 | |
| 
 | |
|   state = 'loading';
 | |
| 
 | |
|   timer = setTimeout(function () {
 | |
|     NProgress.start();
 | |
|   }, delay); // only show progress bar if it takes longer than the delay
 | |
| }
 | |
| 
 | |
| function stop() {
 | |
|   if (activeRequests > 0) {
 | |
|     return;
 | |
|   }
 | |
| 
 | |
|   state = 'stop';
 | |
| 
 | |
|   clearTimeout(timer);
 | |
|   NProgress.done();
 | |
| }
 | |
| 
 | |
| Router.events.on('routeChangeStart', load);
 | |
| Router.events.on('routeChangeComplete', stop);
 | |
| Router.events.on('routeChangeError', stop);
 | |
| 
 | |
| if (typeof window !== 'undefined' && typeof window?.fetch === 'function') {
 | |
|   const originalFetch = window.fetch;
 | |
|   window.fetch = async function (...args) {
 | |
|     if (activeRequests === 0) {
 | |
|       load();
 | |
|     }
 | |
| 
 | |
|     activeRequests++;
 | |
| 
 | |
|     try {
 | |
|       const response = await originalFetch(...args);
 | |
|       return response;
 | |
|     } catch (error) {
 | |
|       return Promise.reject(error);
 | |
|     } finally {
 | |
|       activeRequests -= 1;
 | |
|       if (activeRequests === 0) {
 | |
|         stop();
 | |
|       }
 | |
|     }
 | |
|   };
 | |
| }
 | |
| 
 | |
| export default function TopProgressBar() {
 | |
|   return null;
 | |
| }
 |