import "antd/dist/antd.css";
import "../styles/globals.css";

import "public/css/nprogress.min.css";
import "swiper/swiper-bundle.min.css";
import "swiper/components/navigation/navigation.scss";
import "swiper/components/pagination/pagination.scss";

import "public/css/aweb.css";

import "react-gallery-carousel/dist/index.css";

// import "public/css/services_css/base.css";
// import "public/css/services_css/index.css";

// import 'public/fontawesome/css/fontawesome-all.css'
import type { AppProps } from "next/app";
import { QueryClient, QueryClientProvider } from "react-query";
import { ReactQueryDevtools } from "react-query/devtools";
import { UserProvider } from "context/UserContext";
import { DistrictProvider } from "context/DistrictContext";
import { SearchProvider } from "context/SearchContext";
//@ts-ignore
import { Provider } from "react-redux";
import Router, { useRouter } from "next/router";
import { DefaultSeo } from "next-seo";


//@ts-ignore
import NProgress from "nprogress";
import { useEffect, useRef } from "react";
// import { store } from "lib/redux/store";

import { watcherSaga } from "lib/redux/sagas";
import { sagaMiddleware, store } from "lib/redux/store";
import { NotificationsProvider } from "reapop";
import { HistoryProvider } from "context/HistoryContext";
import ReactGA from "react-ga4";
import TawkMessengerReact from '@tawk.to/tawk-messenger-react';

// Create a client
export const queryClient = new QueryClient({
  defaultOptions: {
    queries: {
      refetchOnWindowFocus: false,
      retry: false
    },
  },
});

// run the saga
sagaMiddleware.run(watcherSaga);

function MyApp({ Component, pageProps }: AppProps) {
  useEffect(() => {
    var ads = document.getElementsByClassName("adsbygoogle").length;
    for (var i = 0; i < ads; i++) {
      try {
        (window.adsbygoogle = window.adsbygoogle || []).push({});
      } catch (e) {}
    }

    ReactGA.initialize("G-VZN0F41V17");
  }, []);

  Router.events.on("routeChangeStart", (url) => {
    //if not the homepage, please show
    NProgress.start();
  });

  Router.events.on("routeChangeComplete", (url) => {
    //if not on the homepage, please show
    NProgress.done();
  });

  
  return (
    <>
      <QueryClientProvider client={queryClient}>
        <Provider store={store}>
          <HistoryProvider>
            <NotificationsProvider>
              <DistrictProvider>
                <SearchProvider>
                  <UserProvider>
                    <DefaultSeo
                      title="Ashantiweb | Classifieds, Events, Lifestyles, Jobs, News, Developments, and more"
                      description="Classifieds, Events, Lifestyles, Jobs, News, Developments, and more"
                    />
										<Component {...pageProps} />
                  </UserProvider>
                </SearchProvider>
              </DistrictProvider>
            </NotificationsProvider>
          </HistoryProvider>
          <TawkMessengerReact
                propertyId="64f1caf0b2d3e13950ed5713"
                widgetId="1h9881fug"
              />
        </Provider>
        <ReactQueryDevtools initialIsOpen={false} />
      </QueryClientProvider>
    </>
  );
}

export default MyApp;
