-1

I am making ecommerce site clone using nextjs 13 and in its order page i call useSession(from next-auth/react) to see whether user signed in or not. At first time i visit the page through link navigation there is no problem but when i refresh or i directly visit the page, its stucking in loading state.

order page:

"use client";
  ...
const Orders = async () => {
  const { data: session } = useSession();
  
    ...

root layout page:

export default async function RootLayout({
  children,
}: {
  children: React.ReactNode;
}) {
  return (
    <html lang="en">
      <body>
        <AuthProvider>
          <BasketProvider>{children}</BasketProvider>
        </AuthProvider>
      </body>
    </html>
  );
}

provider:

"use client";
import { SessionProvider } from "next-auth/react";

const AuthProvider = ({ children }: { children: React.ReactNode }) => {
  return <SessionProvider>{children}</SessionProvider>;
};

export default AuthProvider;

redirect from home page

after refreshing page(loops indefinitely!!!)

Mayank Kumar Chaudhari
  • 16,027
  • 10
  • 55
  • 122

1 Answers1

0

Hope this one helps you

import { getSession } from 'next-auth/client';

export async function getServerSideProps(context) {
  const session = await getSession(context);

  if (!session) {
    return {
      redirect: {
        destination: '/login',
        permanent: false,
      },
    };
  }

  return {
    props: { session },
  };
}

const Orders = ({ session }) => {
  ...
};

export default Orders;
Diego Ammann
  • 463
  • 7
  • i am using using nextjs 13 app folder structure so this unfortunately does not work with my project. however as @Mayank 's post suggests, i have to remove the async keyword at the page component. thnx – Murat Turhan Jul 25 '23 at 13:40