import type { ContestSchema } from '@/hooks/useContestClip';
import type { Clip } from '@/state/clipStore';

import { transformLandingToPageData } from '../../collab/[contest_id]/landingTransform';
import type { ContestLandingPageResponse } from '../../collab/[contest_id]/landingTransform';
import SunoContestPage from './SunoContestPage';
import landingJson from './landing.json';

export { generateMetadata } from './metadata';

function buildStubContest(): ContestSchema {
  return {
    id: 'generic',
    name: 'Suno Collabs',
    description: '',
    slug: null as any,
    start_time: undefined as any,
    end_time: undefined as any,
    judging_start: null as any,
    judging_end: null as any,
    winners_announced_date: null as any,
    base_clip_ids: [],
    submissions_visibility_level: 'none' as any,
    contest_visibility_level: 'everyone' as any,
    submissions_playlist_id: undefined as any,
  } as unknown as ContestSchema;
}

export default function GenericContestPage() {
  const landing: ContestLandingPageResponse = {
    contest_hub_enabled: true,
    contest: buildStubContest() as any,
    contest_clip: null as any,
    contest_info: landingJson as any,
  } as any;

  const landingData = transformLandingToPageData(landing);

  const contest = landing.contest as unknown as ContestSchema;
  const contestClip = null as unknown as Clip | null;

  // Force remove submissions section regardless of JSON
  landingData.sections.submissions.visibility = 'none' as any;

  return (
    <SunoContestPage
      contest={contest}
      contestClip={contestClip}
      landingData={landingData}
    />
  );
}
