export function getFilterValueFromParams()

in experimenter/experimenter/nimbus-ui/src/components/PageHome/filterExperiments.ts [106:196]


export function getFilterValueFromParams(
  options: FilterOptions,
  params: URLSearchParams,
): FilterValue {
  const filterValue: FilterValue = {};
  for (const key of filterValueKeys) {
    const values = params.get(key)?.split(",");
    if (!values) continue;
    // Verbose switch that seems to make types happier
    switch (key) {
      case "owners":
        filterValue[key] = selectFilterOptions<"owners">(
          options[key],
          optionIndexKeys[key],
          values,
        );
        break;
      case "applications":
        filterValue[key] = selectFilterOptions<"applications">(
          options[key],
          optionIndexKeys[key],
          values,
        );
        break;
      case "allFeatureConfigs":
        filterValue[key] = selectFilterOptions<"allFeatureConfigs">(
          options[key],
          optionIndexKeys[key],
          values,
        );
        break;
      case "firefoxVersions":
        filterValue[key] = selectFilterOptions<"firefoxVersions">(
          options[key],
          optionIndexKeys[key],
          values,
        );
        break;
      case "channels":
        filterValue[key] = selectFilterOptions<"channels">(
          options[key],
          optionIndexKeys[key],
          values,
        );
        break;
      case "types":
        filterValue[key] = selectFilterOptions<"types">(
          options[key],
          optionIndexKeys[key],
          values,
        );
        break;
      case "projects":
        filterValue[key] = selectFilterOptions<"projects">(
          options[key],
          optionIndexKeys[key],
          values,
        );
        break;
      case "targetingConfigs":
        filterValue[key] = selectFilterOptions<"targetingConfigs">(
          options[key],
          optionIndexKeys[key],
          values,
        );
        break;
      case "takeaways":
        filterValue[key] = selectFilterOptions<"takeaways">(
          options[key],
          optionIndexKeys[key],
          values as string[],
        );
        break;
      case "qaStatus":
        filterValue[key] = selectFilterOptions<"qaStatus">(
          options[key],
          optionIndexKeys[key],
          values as string[],
        );
        break;
      case "subscribers":
        filterValue[key] = selectFilterOptions<"subscribers">(
          options[key],
          optionIndexKeys[key],
          values as string[],
        );
        break;
    }
  }
  return filterValue;
}