export interface SectionToggle {
    [key: string]: boolean
}

export type SectionToggleAction =
    | { type: undefined }
    | {
        type: "SECTION_TOGGLE_SET";
        id: string;
        state: boolean;
      }
    | {
        type: "SECTION_TOGGLE_UNSET";
        id: string;
      }
    | {
          type: "RESET";
      };

export function sectionToggle(state = {} as SectionToggle, action: SectionToggleAction): SectionToggle {
    switch (action.type) {
        case "SECTION_TOGGLE_SET": {
            return {
                ...state,
                [action.id]: action.state
            }
        }
        case "SECTION_TOGGLE_UNSET": {
            const { [action.id]: _, ...newState } = state;
            return newState;
        }
        case "RESET":
            return {};
        default:
            return state;
    }
}