"use client";

import React, { ReactNode } from "react";
import { Provider } from "react-redux";
import { store } from "./store";
import { GoogleOAuthProvider } from "@react-oauth/google";
import ListenAllEvents from "../components/ListenAllEvents";
import RouteGuard from "../utils/RouterGuard";
import InitializeLanguage from "../hooks/initializeLanguage";

interface Props {
  children: ReactNode;
}

const StoreProvider = ({ children }: Props) => {
  return (
    <GoogleOAuthProvider clientId={`${process.env.NEXT_PUBLIC_GOOGLE_SIGNIN_ID}`}>
      <Provider store={store}>
        <InitializeLanguage />
        <ListenAllEvents />
        <RouteGuard>{children}</RouteGuard>
      </Provider>
    </GoogleOAuthProvider>
  );
};

export default StoreProvider;
