// "use client";

// import { Provider as ReduxProvider } from "react-redux";
// import { store } from "@/lib/store";
// import ReactQueryProvider from "./ReactQueryProvider";
// import { AlertDialogProvider } from "./AlertDialogProvider";
// import { useCurrentUser } from "@/modules/auth/hooks/auth.hooks";

// function SessionInitializer({ children }: { children: React.ReactNode }) {
//   // Globally initialize user session and dispatch state to Redux
//   useCurrentUser();
//   return <>{children}</>;
// }

// export default function AppProvider({
//   children,
// }: {
//   children: React.ReactNode;
// }) {
//   return (
//     <ReduxProvider store={store}>
//       <ReactQueryProvider>
//         <AlertDialogProvider>
//           <SessionInitializer>
//             {children}
//           </SessionInitializer>
//         </AlertDialogProvider>
//       </ReactQueryProvider>
//     </ReduxProvider>
//   );
// }


// AppProvider.tsx
"use client";

import { useLayoutEffect } from "react";
import { Provider as ReduxProvider } from "react-redux";
import { store } from "@/lib/store";
import { setCurrentUser } from "@/modules/auth/slices/authSlice";
import ReactQueryProvider from "./ReactQueryProvider";
import { AlertDialogProvider } from "./AlertDialogProvider";
import { useCurrentUser } from "@/modules/auth/hooks/auth.hooks";

const STORAGE_KEY = "auth_user";

function SessionInitializer({ children }: { children: React.ReactNode }) {
  useLayoutEffect(() => {
    try {
      const raw = localStorage.getItem(STORAGE_KEY);
      if (raw) {
        store.dispatch(setCurrentUser(JSON.parse(raw)));
      }
    } catch {}
  }, []);

  useCurrentUser(); // background verify/refresh — jaisa pehle tha
  return <>{children}</>;
}

export default function AppProvider({
  children,
}: {
  children: React.ReactNode;
}) {
  return (
    <ReduxProvider store={store}>
      <ReactQueryProvider>
        <AlertDialogProvider>
          <SessionInitializer>{children}</SessionInitializer>
        </AlertDialogProvider>
      </ReactQueryProvider>
    </ReduxProvider>
  );
}