import type { PayloadAction } from "@reduxjs/toolkit"; import { createSlice } from "@reduxjs/toolkit"; export interface LoaderState { counter: number loading: boolean; text?: string; } const initState: LoaderState = { counter: 0, loading: false } const loaderSlice = createSlice({ name: 'loader', initialState: initState, reducers: { setLoader: (state, action: PayloadAction>) => { const counter = action.payload.loading ? state.counter + 1 : Math.max(0, state.counter - 1); state.counter = counter; state.loading = counter > 0; state.text = action.payload.text; }, } }); export const loaderActions = loaderSlice.actions; export const loaderReducer = loaderSlice.reducer;