wongjiahau/ttap-web

View on GitHub
src/ts/redux/actions/toggleSubjectListViewingOption.ts

Summary

Maintainability
A
0 mins
Test Coverage
import { IMasterState, MasterStateAction } from "./../reducers/masterState";
export class ToggleSubjectListViewingOptions extends MasterStateAction {
  public TypeName(): string {
    return "toggle subject list viewing option";
  }
  protected GenerateNewState(state: IMasterState): IMasterState {
    const newIsShowingSelectedSubjectOnly =
      !state.SubjectListState.IsShowingSelectedSubjectOnly;
    const newSubjects = state.SubjectListState.Subjects.map((s) => {
      if (newIsShowingSelectedSubjectOnly) {
        return {
          ...s,
          IsVisible: s.IsSelected,
        };
      } else {
        return {
          ...s,
          IsVisible: true,
        };
      }
    });
    const result: IMasterState = {
      ...state,
      SubjectListState: {
        ...state.SubjectListState,
        IsShowingSelectedSubjectOnly: newIsShowingSelectedSubjectOnly,
        Subjects: newSubjects,
      },
    };
    return result;
  }
}