function sortByStatus()

in experimenter/experimenter/nimbus-ui/src/components/PageHome/sortByStatus.ts [13:53]


function sortByStatus(
  experiments: getAllExperiments_experiments[] = [],
  owner: string,
) {
  return experiments.reduce<ExperimentCollector>(
    (collector, experiment) => {
      const status = getStatus(experiment);

      if (status.archived) {
        collector.archived.push(experiment);
      } else if (status.live) {
        collector.live.push(experiment);
      } else if (status.complete) {
        collector.complete.push(experiment);
      } else if (status.draft && !status.idle) {
        collector.review.push(experiment);
      } else if (status.preview) {
        collector.preview.push(experiment);
      } else {
        collector.draft.push(experiment);
      }

      if (
        experiment.owner.username === owner ||
        experiment.subscribers.map((s) => s.username).includes(owner)
      ) {
        collector.owned.push(experiment);
      }
      return collector;
    },
    {
      draft: [],
      preview: [],
      review: [],
      live: [],
      complete: [],
      archived: [],
      owned: [],
    },
  );
}