import type {
  LookupServiceLinks,
  PrereleaseUpgradeResponse,
} from '~/lib/songwhipApi/types';
import type {
  PrereleaseCampaignResult,
  ServiceLinkOverrideCallback,
} from '~/src/features/presave';

import { PresaveDetails } from '~/src/features/presave';

interface FilteredPresaveDetailsProps {
  campaignResult: PrereleaseCampaignResult;
  missingServices: string[];
  errors: PrereleaseUpgradeResponse['errors'];
  linksOverride?: LookupServiceLinks;
  onLinkChange: ServiceLinkOverrideCallback;
}

export const FilteredPresaveDetails = ({
  campaignResult,
  missingServices,
  linksOverride,
  errors,
  onLinkChange,
}: FilteredPresaveDetailsProps) => {
  // Filter the campaign result to only include services in missingServices
  const filteredServices = missingServices.reduce((acc, service) => {
    if (campaignResult.services[service]) {
      acc[service] = campaignResult.services[service];
    }
    return acc;
  }, {});

  const filteredCampaignResult: PrereleaseCampaignResult = {
    ...campaignResult,
    services: filteredServices,
  };

  return (
    <PresaveDetails
      campaignResult={filteredCampaignResult}
      linksOverride={linksOverride}
      errors={errors}
      onLinkChange={onLinkChange}
      showFinalWarning={false}
    />
  );
};
