import { createSlice, PayloadAction } from "@reduxjs/toolkit";
import { RootState } from "../store";

export enum ModalEnum {
  IDLE = "IDLE",
  AUTH = "AUTH",
  TEMPLATE = "TEMPLATE",
  SETTINGS = "SETTINGS",
}

type InitialStateType = {
  type: ModalEnum;
  visible: boolean;
};

const initialState = {
  type: ModalEnum.IDLE,
  visible: false,
};

export const modalSlice = createSlice({
  name: "modal",
  initialState: initialState,
  reducers: {
    open_modal: (state: InitialStateType, action: PayloadAction<ModalEnum>) => {
      state.type = action.payload;
      state.visible = true;
    },
    close_modal: (state: InitialStateType) => {
      state.type = ModalEnum.IDLE;
      state.visible = false;
    },
  },
});

export const { open_modal, close_modal } = modalSlice.actions;

export const modal_state = (state: RootState) => state.modal;

export default modalSlice.reducer;