import { getCreatorList } from '@/services/creators';
import type { HomepageCollectionTextFields } from '@/services/homeCollections';

import type { CreatorListData } from '@/types/Creator';

import HomepageParallelPathsTeaserClient from './HomepageParallelPathsTeaserClient';

interface HomepageParallelPathsTeaserProps {
  locale: string;
  textFields?: HomepageCollectionTextFields | null;
}

const HomepageParallelPathsTeaser = async ({
  locale,
  textFields,
}: HomepageParallelPathsTeaserProps) => {
  const sortLocale = locale.startsWith('en') ? 'en' : 'hu';
  let creatorOptions: CreatorListData[] = [];

  try {
    const creators = await getCreatorList({
      body: {
        onlyWithData: true,
      },
    });
    const creatorsById = new Map<string, CreatorListData>();

    creators.forEach((creator) => {
      if (!creator.alkotoAzonosito || !creator.nev) return;
      if (creatorsById.has(creator.alkotoAzonosito)) return;
      creatorsById.set(creator.alkotoAzonosito, creator);
    });

    creatorOptions = Array.from(creatorsById.values()).sort((left, right) =>
      (left.nev || '').localeCompare(right.nev || '', sortLocale)
    );
  } catch (error) {
    console.error('Failed to preload creators for homepage parallel paths teaser:', error);
  }

  return (
    <HomepageParallelPathsTeaserClient creatorOptions={creatorOptions} textFields={textFields} />
  );
};

export default HomepageParallelPathsTeaser;
