import React, {useContext} from 'react';
import Head from 'src/components/core/head';
import {NextPage} from 'next';
import {LanguageContext} from 'context/languageContext';
import {Page} from 'src/components/layouts/containers';
import {getPagebySlug, getSearchEngineIndexing} from 'services/wpgraphql';
import {BlockArray} from 'src/components/core/blockArray';
import {ComponentRenderer} from 'utils/componentMap';
import PreintakeCta from 'src/components/blocks/preintakeCta/preintakeCta';
import {PreintakeCtaProps} from 'src/components/blocks/preintakeCta/preintakeCta';

import type { GetStaticProps } from 'next';

interface IndexPageProps {
  sections: Array<any>;
  showPreintake: boolean;
  preintakeData: PreintakeCtaProps;
  shouldIndex?: string;
}

/**
 * Loop through page section blocks and display them
 *
 * @since v1.0.0
 * @param IndexPageProps
 * @returns 
 */
const Index: NextPage<IndexPageProps> = ({sections, showPreintake, preintakeData, shouldIndex}) => {
  const {language} = useContext(LanguageContext);

  return (
    <Page>
      <Head title="Home" shouldIndex={shouldIndex} />
      <BlockArray
        items={sections}
        renderItem={(item, index) => <React.Fragment key={index}> {ComponentRenderer(item, language)}</React.Fragment>}
      />
      {showPreintake && <PreintakeCta {...preintakeData} language={language} />}
    </Page>
  );
};

/*
export const getServerSideProps: GetServerSideProps = async () => {

  const {data} = await getPagebySlug('home-page');
  const {"data": {"additionalSettings": {"searchEngineIndexing": shouldIndex}}} = await getSearchEngineIndexing();

  return {
    props: {
      sections: data.page.sections.layout,
      showPreintake: data.page.sections.showPreintake,
      preintakeData: data.post.acf_preintakeCta,
      shouldIndex: shouldIndex
    },
  };
};
*/

export const getStaticProps: GetStaticProps = async() => {
  const {data} = await getPagebySlug('home-page');
  const {"data": {"additionalSettings": {"searchEngineIndexing": shouldIndex}}} = await getSearchEngineIndexing();

  return {
    props: {
      sections: data.page.sections.layout,
      showPreintake: data.page.sections.showPreintake,
      preintakeData: data.post.acf_preintakeCta,
      shouldIndex: shouldIndex
    },
    revalidate: 5,
  };
};

//export const dynamic = 'force-dynamic';
//export const revalidate = 0;

export default Index;