function DownloadButton()

in src/components/CompareResults/DownloadButton.tsx [90:140]


function DownloadButton({ resultsPromise }: DownloadButtonProps) {
  const activeComparison = useAppSelector(
    (state) => state.comparison.activeComparison,
  );

  const fileName = useAppSelector((state: RootState) => {
    if (
      state.comparison.activeComparison ===
      Strings.components.comparisonRevisionDropdown.allRevisions.key
    ) {
      return 'perf-compare-all-revisions.json';
    } else {
      return `perf-compare-${truncateHash(
        state.comparison.activeComparison,
      )}.json`;
    }
  });

  const handleDownloadClick = async () => {
    const results = await resultsPromise;
    const processedResults = generateJsonDataFromComparisonResults(
      activeComparison,
      results,
    );
    const blob = new Blob([processedResults], {
      type: 'application/json',
    });
    const blobUrl = URL.createObjectURL(blob);

    // Trigger the download programmatically
    const downloadLink = document.createElement('a');
    downloadLink.href = blobUrl;
    downloadLink.download = fileName;
    downloadLink.click();

    // Clean up the URL object
    URL.revokeObjectURL(blobUrl);
  };

  return (
    <div className={styles.downloadButton}>
      <Button
        variant='contained'
        color='secondary'
        onClick={() => void handleDownloadClick()}
      >
        Download JSON
      </Button>
    </div>
  );
}