﻿import { type HomepageCollection, getHomepageCollection } from '@/services/homeCollections';
import { type NewsActualItem, getActualNews } from '@/services/news';

import HomepageBirthdayCreators from '@/components/home/blocks/HomepageBirthdayCreators';
import HomepageCreationSelectionFramed from '@/components/home/blocks/HomepageCreationSelectionFramed';
import HomepageCreatorOfTheWeek from '@/components/home/blocks/HomepageCreatorOfTheWeek';
import HomepageFeaturedVideos from '@/components/home/blocks/HomepageFeaturedVideos';
import HomepageHeroVideo from '@/components/home/blocks/HomepageHeroVideo';
import HomepageInteractiveCreatorPicker from '@/components/home/blocks/HomepageInteractiveCreatorPicker';
import HomepageIntro from '@/components/home/blocks/HomepageIntro';
import HomepageLibraryNews from '@/components/home/blocks/HomepageLibraryNews';
import HomepageMapShowcase from '@/components/home/blocks/HomepageMapShowcase';
import HomepageParallelPathsTeaser from '@/components/home/blocks/HomepageParallelPathsTeaser';
import featuredVideosEn from '@/components/home/featuredVideos.en.json';
import featuredVideosHu from '@/components/home/featuredVideos.hu.json';

// TODO: site h1-h6 re-structure

export default async function Home({
  params,
}: {
  params: Promise<{
    locale: string;
  }>;
}) {
  const { locale } = await params;
  let libraryNewsItems: NewsActualItem[] = [];
  let featuredVideosCollection: HomepageCollection | null = null;
  let creatorOfTheWeekCollection: HomepageCollection | null = null;
  let creationSelectionCollection: HomepageCollection | null = null;
  let mapShowcaseCollection: HomepageCollection | null = null;
  let birthdayCreatorsCollection: HomepageCollection | null = null;
  let libraryNewsCollection: HomepageCollection | null = null;
  let interactiveCreatorPickerCollection: HomepageCollection | null = null;
  let parallelPathsCollection: HomepageCollection | null = null;

  [
    libraryNewsItems,
    featuredVideosCollection,
    creatorOfTheWeekCollection,
    creationSelectionCollection,
    mapShowcaseCollection,
    birthdayCreatorsCollection,
    libraryNewsCollection,
    interactiveCreatorPickerCollection,
    parallelPathsCollection,
  ] = await Promise.all([
    getActualNews().catch((error) => {
      console.error('Homepage library news fetch error:', error);
      return [];
    }),
    getHomepageCollection(1),
    getHomepageCollection(2),
    getHomepageCollection(3),
    getHomepageCollection(4),
    getHomepageCollection(5),
    getHomepageCollection(6),
    getHomepageCollection(7),
    getHomepageCollection(8),
  ]);

  return (
    <div className="overflow-x-hidden">
      <HomepageHeroVideo locale={locale} />
      <HomepageIntro />
      <HomepageInteractiveCreatorPicker
        locale={locale}
        textFields={interactiveCreatorPickerCollection?.textFields}
      />
      <HomepageBirthdayCreators
        locale={locale}
        textFields={birthdayCreatorsCollection?.textFields}
      />

      <HomepageFeaturedVideos
        videos={locale === 'en' ? featuredVideosEn : featuredVideosHu}
        textFields={featuredVideosCollection?.textFields}
      />

      <HomepageMapShowcase textFields={mapShowcaseCollection?.textFields} />

      <HomepageCreatorOfTheWeek
        creations={creatorOfTheWeekCollection?.creations ?? []}
        textFields={creatorOfTheWeekCollection?.textFields}
        locale={locale}
      />

      <HomepageParallelPathsTeaser
        locale={locale}
        textFields={parallelPathsCollection?.textFields}
      />

      <HomepageCreationSelectionFramed
        creations={creationSelectionCollection?.creations ?? []}
        textFields={creationSelectionCollection?.textFields}
      />

      {libraryNewsItems.length > 0 ? (
        <HomepageLibraryNews
          newsItems={libraryNewsItems}
          textFields={libraryNewsCollection?.textFields}
        />
      ) : (
        <div className="bg-[#f3f0e9] h-[1px] w-full" />
      )}
    </div>
  );
}
