rrebase/knboard

View on GitHub
frontend/src/features/toast/ToastSlice.tsx

Summary

Maintainability
A
0 mins
Test Coverage
import { createSlice, PayloadAction } from "@reduxjs/toolkit";
import { Color } from "@material-ui/lab/Alert";

interface InitialState {
  open: boolean;
  message: string | null;
  severity: Color;
}

export const initialState: InitialState = {
  open: false,
  message: null,
  severity: "success",
};

export const slice = createSlice({
  name: "toast",
  initialState,
  reducers: {
    createSuccessToast: (state, action: PayloadAction<string>) => {
      state.open = true;
      state.message = action.payload;
      state.severity = "success";
    },
    createInfoToast: (state, action: PayloadAction<string>) => {
      state.open = true;
      state.message = action.payload;
      state.severity = "info";
    },
    createErrorToast: (state, action: PayloadAction<string>) => {
      state.open = true;
      state.message = action.payload;
      state.severity = "error";
    },
    clearToast: (state) => {
      state.open = false;
    },
  },
});

export const {
  createSuccessToast,
  createInfoToast,
  createErrorToast,
  clearToast,
} = slice.actions;

export default slice.reducer;