From 9926f60c0901ac333e243e98198ec1811bf9a1b2 Mon Sep 17 00:00:00 2001 From: Alex Holliday Date: Tue, 4 Jun 2024 13:32:17 -0700 Subject: [PATCH] Refactored to use thunk for Axios request --- Client/src/Features/Monitors/monitorsSlice.js | 37 ++++++++++++++++--- Client/src/Pages/Demo/Demo.jsx | 16 ++------ 2 files changed, 35 insertions(+), 18 deletions(-) diff --git a/Client/src/Features/Monitors/monitorsSlice.js b/Client/src/Features/Monitors/monitorsSlice.js index b7b76e954..d7b506cca 100644 --- a/Client/src/Features/Monitors/monitorsSlice.js +++ b/Client/src/Features/Monitors/monitorsSlice.js @@ -1,4 +1,5 @@ -import { createSlice } from "@reduxjs/toolkit"; +import axios from "axios"; +import { createAsyncThunk, createSlice } from "@reduxjs/toolkit"; const initialState = { isLoading: false, @@ -7,13 +8,39 @@ const initialState = { msg: null, }; +export const getMonitors = createAsyncThunk( + "monitors/getMonitors", + async (token, thunkApi) => { + try { + const res = await axios.get("http://localhost:5000/api/v1/monitors"); + return res.data; + } catch (error) { + return thunkApi.rejectWithValue(error.response.data); + } + } +); + const monitorsSlice = createSlice({ name: "monitors", initialState, - reducers: { - setMonitors: (state, action) => { - state.monitors = action.payload; - }, + reducers: {}, + extraReducers: (builder) => { + builder + .addCase(getMonitors.pending, (state, action) => { + state.isLoading = true; + }) + .addCase(getMonitors.fulfilled, (state, action) => { + state.isLoading = false; + state.success = action.payload.success; + state.msg = action.payload.msg; + console.log(action.payload); + state.monitors = action.payload.data; + }) + .addCase(getMonitors.rejected, (state, action) => { + state.isLoading = false; + state.success = action.payload.success; + state.msg = action.payload.msg; + }); }, }); diff --git a/Client/src/Pages/Demo/Demo.jsx b/Client/src/Pages/Demo/Demo.jsx index 135c86072..393e2b529 100644 --- a/Client/src/Pages/Demo/Demo.jsx +++ b/Client/src/Pages/Demo/Demo.jsx @@ -30,7 +30,7 @@ import Divider from "@mui/material/Divider"; // Redux import { useSelector } from "react-redux"; import { useDispatch } from "react-redux"; -import { setMonitors } from "../../Features/Monitors/monitorsSlice"; +import { getMonitors } from "../../Features/Monitors/monitorsSlice"; const cols = [ { @@ -211,18 +211,8 @@ const Demo = () => {