278 lines
8.5 KiB
JavaScript
278 lines
8.5 KiB
JavaScript
import { createAsyncThunk, createSlice } from "@reduxjs/toolkit";
|
|
import { jwtDecode } from "jwt-decode";
|
|
import { networkService } from "../../main";
|
|
const initialState = {
|
|
isLoading: false,
|
|
monitorsSummary: [],
|
|
success: null,
|
|
msg: null,
|
|
};
|
|
|
|
export const createPageSpeed = createAsyncThunk(
|
|
"pageSpeedMonitors/createPageSpeed",
|
|
async (data, thunkApi) => {
|
|
try {
|
|
const { authToken, monitor } = data;
|
|
const res = await networkService.createMonitor(authToken, monitor);
|
|
return res.data;
|
|
} catch (error) {
|
|
if (error.response && error.response.data) {
|
|
return thunkApi.rejectWithValue(error.response.data);
|
|
}
|
|
const payload = {
|
|
status: false,
|
|
msg: error.message ? error.message : "Unknown error",
|
|
};
|
|
return thunkApi.rejectWithValue(payload);
|
|
}
|
|
}
|
|
);
|
|
|
|
export const getPagespeedMonitorById = createAsyncThunk(
|
|
"monitors/getMonitorById",
|
|
async (data, thunkApi) => {
|
|
try {
|
|
const { authToken, monitorId } = data;
|
|
const res = await networkService.getMonitorByid(authToken, monitorId);
|
|
return res.data;
|
|
} catch (error) {
|
|
if (error.response && error.response.data) {
|
|
return thunkApi.rejectWithValue(error.response.data);
|
|
}
|
|
const payload = {
|
|
status: false,
|
|
msg: error.message ? error.message : "Unknown error",
|
|
};
|
|
return thunkApi.rejectWithValue(payload);
|
|
}
|
|
}
|
|
);
|
|
|
|
export const getPageSpeedByTeamId = createAsyncThunk(
|
|
"pageSpeedMonitors/getPageSpeedByTeamId",
|
|
async (token, thunkApi) => {
|
|
const user = jwtDecode(token);
|
|
try {
|
|
const res = await networkService.getMonitorsAndSummaryByTeamId(
|
|
token,
|
|
user.teamId,
|
|
["pagespeed"]
|
|
);
|
|
|
|
return res.data;
|
|
} catch (error) {
|
|
if (error.response && error.response.data) {
|
|
return thunkApi.rejectWithValue(error.response.data);
|
|
}
|
|
const payload = {
|
|
status: false,
|
|
msg: error.message ? error.message : "Unknown error",
|
|
};
|
|
return thunkApi.rejectWithValue(payload);
|
|
}
|
|
}
|
|
);
|
|
|
|
export const updatePageSpeed = createAsyncThunk(
|
|
"pageSpeedMonitors/updatePageSpeed",
|
|
async (data, thunkApi) => {
|
|
try {
|
|
const { authToken, monitor } = data;
|
|
const updatedFields = {
|
|
name: monitor.name,
|
|
description: monitor.description,
|
|
interval: monitor.interval,
|
|
// notifications: monitor.notifications,
|
|
};
|
|
const res = await networkService.updateMonitor(
|
|
authToken,
|
|
monitor._id,
|
|
updatedFields
|
|
);
|
|
return res.data;
|
|
} catch (error) {
|
|
if (error.response && error.response.data) {
|
|
return thunkApi.rejectWithValue(error.response.data);
|
|
}
|
|
const payload = {
|
|
status: false,
|
|
msg: error.message ? error.message : "Unknown error",
|
|
};
|
|
return thunkApi.rejectWithValue(payload);
|
|
}
|
|
}
|
|
);
|
|
|
|
export const deletePageSpeed = createAsyncThunk(
|
|
"pageSpeedMonitors/deletePageSpeed",
|
|
async (data, thunkApi) => {
|
|
try {
|
|
const { authToken, monitor } = data;
|
|
const res = await networkService.deleteMonitorById(
|
|
authToken,
|
|
monitor._id
|
|
);
|
|
return res.data;
|
|
} catch (error) {
|
|
if (error.response && error.response.data) {
|
|
return thunkApi.rejectWithValue(error.response.data);
|
|
}
|
|
const payload = {
|
|
status: false,
|
|
msg: error.message ? error.message : "Unknown error",
|
|
};
|
|
return thunkApi.rejectWithValue(payload);
|
|
}
|
|
}
|
|
);
|
|
export const pausePageSpeed = createAsyncThunk(
|
|
"pageSpeedMonitors/pausePageSpeed",
|
|
async (data, thunkApi) => {
|
|
try {
|
|
const { authToken, monitorId } = data;
|
|
const res = await networkService.pauseMonitorById(authToken, monitorId);
|
|
return res.data;
|
|
} catch (error) {
|
|
if (error.response && error.response.data) {
|
|
return thunkApi.rejectWithValue(error.response.data);
|
|
}
|
|
const payload = {
|
|
status: false,
|
|
msg: error.message ? error.message : "Unknown error",
|
|
};
|
|
return thunkApi.rejectWithValue(payload);
|
|
}
|
|
}
|
|
);
|
|
|
|
const pageSpeedMonitorSlice = createSlice({
|
|
name: "pageSpeedMonitor",
|
|
initialState,
|
|
reducers: {
|
|
clearMonitorState: (state) => {
|
|
state.isLoading = false;
|
|
state.monitorsSummary = [];
|
|
state.success = null;
|
|
state.msg = null;
|
|
},
|
|
},
|
|
extraReducers: (builder) => {
|
|
builder
|
|
// *****************************************************
|
|
// Monitors by teamId
|
|
// *****************************************************
|
|
|
|
.addCase(getPageSpeedByTeamId.pending, (state) => {
|
|
state.isLoading = true;
|
|
})
|
|
.addCase(getPageSpeedByTeamId.fulfilled, (state, action) => {
|
|
state.isLoading = false;
|
|
state.success = action.payload.msg;
|
|
state.monitorsSummary = action.payload.data;
|
|
})
|
|
.addCase(getPageSpeedByTeamId.rejected, (state, action) => {
|
|
state.isLoading = false;
|
|
state.success = false;
|
|
state.msg = action.payload
|
|
? action.payload.msg
|
|
: "Getting page speed monitors failed";
|
|
})
|
|
|
|
// *****************************************************
|
|
.addCase(getPagespeedMonitorById.pending, (state) => {
|
|
state.isLoading = true;
|
|
})
|
|
.addCase(getPagespeedMonitorById.fulfilled, (state, action) => {
|
|
state.isLoading = false;
|
|
state.success = action.payload.success;
|
|
state.msg = action.payload.msg;
|
|
})
|
|
.addCase(getPagespeedMonitorById.rejected, (state, action) => {
|
|
state.isLoading = false;
|
|
state.success = false;
|
|
state.msg = action.payload
|
|
? action.payload.msg
|
|
: "Failed to get pagespeed monitor";
|
|
})
|
|
|
|
// *****************************************************
|
|
// Create Monitor
|
|
// *****************************************************
|
|
.addCase(createPageSpeed.pending, (state) => {
|
|
state.isLoading = true;
|
|
})
|
|
.addCase(createPageSpeed.fulfilled, (state, action) => {
|
|
state.isLoading = false;
|
|
state.success = action.payload.success;
|
|
state.msg = action.payload.msg;
|
|
})
|
|
.addCase(createPageSpeed.rejected, (state, action) => {
|
|
state.isLoading = false;
|
|
state.success = false;
|
|
state.msg = action.payload
|
|
? action.payload.msg
|
|
: "Failed to create page speed monitor";
|
|
})
|
|
|
|
// *****************************************************
|
|
// Update Monitor
|
|
// *****************************************************
|
|
.addCase(updatePageSpeed.pending, (state) => {
|
|
state.isLoading = true;
|
|
})
|
|
.addCase(updatePageSpeed.fulfilled, (state, action) => {
|
|
state.isLoading = false;
|
|
state.success = action.payload.success;
|
|
state.msg = action.payload.msg;
|
|
})
|
|
.addCase(updatePageSpeed.rejected, (state, action) => {
|
|
state.isLoading = false;
|
|
state.success = false;
|
|
state.msg = action.payload
|
|
? action.payload.msg
|
|
: "Failed to update page speed monitor";
|
|
})
|
|
|
|
// *****************************************************
|
|
// Delete Monitor
|
|
// *****************************************************
|
|
.addCase(deletePageSpeed.pending, (state) => {
|
|
state.isLoading = true;
|
|
})
|
|
.addCase(deletePageSpeed.fulfilled, (state, action) => {
|
|
state.isLoading = false;
|
|
state.success = action.payload.success;
|
|
state.msg = action.payload.msg;
|
|
})
|
|
.addCase(deletePageSpeed.rejected, (state, action) => {
|
|
state.isLoading = false;
|
|
state.success = false;
|
|
state.msg = action.payload
|
|
? action.payload.msg
|
|
: "Failed to delete page speed monitor";
|
|
})
|
|
// *****************************************************
|
|
// Pause Monitor
|
|
// *****************************************************
|
|
.addCase(pausePageSpeed.pending, (state) => {
|
|
state.isLoading = true;
|
|
})
|
|
.addCase(pausePageSpeed.fulfilled, (state, action) => {
|
|
state.isLoading = false;
|
|
state.success = action.payload.success;
|
|
state.msg = action.payload.msg;
|
|
})
|
|
.addCase(pausePageSpeed.rejected, (state, action) => {
|
|
state.isLoading = false;
|
|
state.success = false;
|
|
state.msg = action.payload
|
|
? action.payload.msg
|
|
: "Failed to pause page speed monitor";
|
|
});
|
|
},
|
|
});
|
|
|
|
export const { setMonitors, clearMonitorState } = pageSpeedMonitorSlice.actions;
|
|
|
|
export default pageSpeedMonitorSlice.reducer;
|