File size: 894 Bytes
3c3f089
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
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;