summaryrefslogtreecommitdiff
path: root/src/pages/_app.js
diff options
context:
space:
mode:
authorRafi Zadanly <rafizadanly@gmail.com>2022-11-19 11:47:19 +0700
committerRafi Zadanly <rafizadanly@gmail.com>2022-11-19 11:47:19 +0700
commitbb9a64abe0c4ee7650a010df0226c63556df3f62 (patch)
treeabff8b08dc319b0c57a04c0a0bc60f038c9e505c /src/pages/_app.js
parentfeba1cef895c0c8d2ce6595d681fc602cbd02435 (diff)
Add loader
Diffstat (limited to 'src/pages/_app.js')
-rw-r--r--src/pages/_app.js22
1 files changed, 21 insertions, 1 deletions
diff --git a/src/pages/_app.js b/src/pages/_app.js
index 136b8cb3..1d8c5ce0 100644
--- a/src/pages/_app.js
+++ b/src/pages/_app.js
@@ -2,8 +2,23 @@ import '../styles/globals.css';
import NextProgress from "next-progress";
import { ToastContainer, Slide } from 'react-toastify';
import 'react-toastify/dist/ReactToastify.css';
+import { useRouter } from 'next/router';
+import { useEffect, useState } from 'react';
+import Image from 'next/image';
function MyApp({ Component, pageProps }) {
+ const router = useRouter();
+ const [pageLoading, setPageLoading] = useState(false);
+
+ useEffect(() => {
+ const handleStartLoading = () => { setPageLoading(true) };
+ const handleCompleteLoading = () => { setPageLoading(false) };
+
+ router.events.on('routeChangeStart', handleStartLoading);
+ router.events.on('routeChangeComplete', handleCompleteLoading);
+ router.events.on('routeChangeError', handleCompleteLoading);
+ }, [router]);
+
return (
<>
<ToastContainer
@@ -17,7 +32,12 @@ function MyApp({ Component, pageProps }) {
<NextProgress color="#D7A30A" options={{
showSpinner: false,
}} />
- <Component {...pageProps} />
+ {pageLoading ? (
+ <div className='h-screen w-screen flex flex-col justify-center items-center'>
+ <Image src='/images/loading.gif' width={64} height={64} alt='Loading Indoteknik' />
+ <h1>Loading</h1>
+ </div>
+ ) : <Component {...pageProps} />}
</>
)
}