diff --git a/lib/fetcher.ts b/lib/fetcher.ts index cb7c4956..dbae1bfe 100644 --- a/lib/fetcher.ts +++ b/lib/fetcher.ts @@ -2,6 +2,10 @@ import axios from 'axios'; // eslint-disable-next-line @typescript-eslint/no-explicit-any export const fetcher = async (...args: any[]) => { + if (!args[0]) { + return null; + } + const response = await axios(args[0]); if (response.status !== 200) { throw new Error('An error occurred while fetching the data.'); diff --git a/pages/_app.tsx b/pages/_app.tsx index 75dbabcb..f6971217 100644 --- a/pages/_app.tsx +++ b/pages/_app.tsx @@ -1,7 +1,7 @@ import { useState } from 'react'; import { AppProps } from 'next/app'; import useSWR from 'swr'; -import { SessionProvider } from 'next-auth/react'; +import { SessionProvider, useSession } from 'next-auth/react'; import { Loader2 } from 'lucide-react'; import { AppContextProvider } from '@/context/AppContextProvider'; import { AppDataContext } from '@/context/Common/CommonContext'; @@ -13,13 +13,22 @@ import { ShareModal } from '@/components/Modals/ShareModal'; import { ThemeProvider } from '@/components/ThemeProvider/ThemeProvider'; import '@/styles/globals.css'; -export default function MyApp({ Component, pageProps }: AppProps) { +type AppContentProps = { + Component: AppProps['Component']; + pageProps: AppProps['pageProps']; +}; + +function AppContent({ Component, pageProps }: AppContentProps) { const getUserDetailsApiUrl = `/api/user/details`; const [randomKey, setRandomKey] = useState(); + const { status: currentUserStatus } = useSession(); + + const isAuth = currentUserStatus === 'authenticated'; + const { data: profileDetails, isLoading: isDetailsLoading } = useSWR( - getUserDetailsApiUrl, - fetcher, + isAuth ? getUserDetailsApiUrl : null, + isAuth ? fetcher : () => null, { errorRetryCount: 0 } ); @@ -30,27 +39,33 @@ export default function MyApp({ Component, pageProps }: AppProps) { setRandomKey, }; + return ( + + + + + + + {!isDetailsLoading ? ( + <> + + + + ) : ( +
+ +
+ )} +
+
+
+ ); +} + +export default function MyApp({ Component, pageProps }: AppProps) { return ( - - - - - - - {!isDetailsLoading ? ( - <> - - - - ) : ( -
- -
- )} -
-
-
+
); }