export async function loader()

in src/components/CompareResults/hashToCommitLoader.ts [13:76]


export async function loader({ request }: { request: Request }) {
  const url = new URL(request.url);
  const baseHashFromUrl = url.searchParams.get('baseHash');
  const baseHashDateFromUrl = url.searchParams.get('baseHashDate');
  const newHashFromUrl = url.searchParams.get('newHash');
  const newHashDateFromUrl = url.searchParams.get('newHashDate') as string;
  const baseRepoFromUrl = url.searchParams.get('baseRepo') as
    | Repository['name']
    | null;
  const newReposFromUrl = url.searchParams.getAll(
    'newRepo',
  ) as Repository['name'][];
  const frameworkFromUrl = url.searchParams.get('framework');
  const pushed_today =
    new Date(newHashDateFromUrl).toISOString().split('T')[0] ==
    new Date().toISOString().split('T')[0];
  let commits_from_hashes: CommitFromHashData = {
    baseRevision: '',
    newRevision: '',
  };
  if (
    !baseHashFromUrl ||
    !baseHashDateFromUrl ||
    !newHashFromUrl ||
    !newHashDateFromUrl
  ) {
    throw new Error(
      'Not all values were supplied please check you provided all 4 of: baseHash, baseHashDate, newHash, newHashDate',
    );
  }
  try {
    commits_from_hashes = await fetchRevisionFromHash(
      baseHashFromUrl,
      baseHashDateFromUrl,
      newHashFromUrl,
      newHashDateFromUrl,
      'try',
    );
  } catch (e) {
    if (pushed_today) {
      throw new Error('Results pushed today, still processing...');
    } else {
      throw e;
    }
  }
  const baseRevsFromHash = commits_from_hashes.baseRevision;
  const newRevsFromHash = [commits_from_hashes.newRevision];
  const { baseRev, baseRepo, newRevs, newRepos, frameworkId, frameworkName } =
    checkValues({
      baseRev: baseRevsFromHash,
      baseRepo: baseRepoFromUrl,
      newRevs: newRevsFromHash,
      newRepos: newReposFromUrl,
      framework: frameworkFromUrl,
    });
  return await getComparisonInformation(
    baseRev,
    baseRepo,
    newRevs,
    newRepos,
    frameworkId,
    frameworkName,
  );
}