rungroups: mergeTo()

in src/pages/Home/Home.state.ts [102:127]


          rungroups: mergeTo(state.newRuns, state.rungroups, state.params),
          newRuns: [],
        };
      }
      return { ...state, isScrolledFromTop: action.isScrolledFromTop };
    }
  }
};

/**
 * Add or merge incoming runs to existing run groups
 * @param runs Incoming runs
 * @param initialData Existing run groups
 * @param params
 */
export function mergeTo(
  runs: Run[],
  initialData: Record<string, Run[]>,
  params: Record<string, string>,
): Record<string, Run[]> {
  return runs.reduce((data, item) => {
    const groupKey = item[params._group as keyof Run] || 'undefined';
    if (typeof groupKey === 'string') {
      if (data[groupKey]) {
        const index = data[groupKey].findIndex((r) => r.run_number === item.run_number);
        return {