From 58b45b8ebca26187055d82bf97489a8b4616de3f Mon Sep 17 00:00:00 2001 From: Alex <33497058+bexsoft@users.noreply.github.com> Date: Thu, 2 Feb 2023 23:22:43 -0600 Subject: [PATCH] Redesigned Logger Webhooks & Audit Webhooks pages (#2620) Signed-off-by: Benjamin Perez --- .../screens/Console/Configurations/types.ts | 5 + .../CustomForms/EditConfiguration.tsx | 150 +++++----- .../CustomForms/EndpointDisplay.tsx | 88 ------ .../WebhookSettings/AddEndpointModal.tsx | 251 ++++++++++++++++ .../WebhookSettings/DeleteWebhookEndpoint.tsx | 96 ++++++ .../WebhookSettings/EditWebhookEndpoint.tsx | 280 ++++++++++++++++++ .../WebhookSettings/WebhookSettings.tsx | 191 ++++++++++++ portal-ui/src/systemSlice.ts | 6 + 8 files changed, 912 insertions(+), 155 deletions(-) delete mode 100644 portal-ui/src/screens/Console/NotificationEndpoints/CustomForms/EndpointDisplay.tsx create mode 100644 portal-ui/src/screens/Console/NotificationEndpoints/WebhookSettings/AddEndpointModal.tsx create mode 100644 portal-ui/src/screens/Console/NotificationEndpoints/WebhookSettings/DeleteWebhookEndpoint.tsx create mode 100644 portal-ui/src/screens/Console/NotificationEndpoints/WebhookSettings/EditWebhookEndpoint.tsx create mode 100644 portal-ui/src/screens/Console/NotificationEndpoints/WebhookSettings/WebhookSettings.tsx diff --git a/portal-ui/src/screens/Console/Configurations/types.ts b/portal-ui/src/screens/Console/Configurations/types.ts index 2214a37d0..3abc113b4 100644 --- a/portal-ui/src/screens/Console/Configurations/types.ts +++ b/portal-ui/src/screens/Console/Configurations/types.ts @@ -54,6 +54,11 @@ export interface IElementValue { value: string; } +export interface IConfigurationSys { + name?: string; + key_values: IElementValue[]; +} + export interface IElement { configuration_id: string; configuration_label: string; diff --git a/portal-ui/src/screens/Console/NotificationEndpoints/CustomForms/EditConfiguration.tsx b/portal-ui/src/screens/Console/NotificationEndpoints/CustomForms/EditConfiguration.tsx index ba2fc1997..acee4aaa6 100644 --- a/portal-ui/src/screens/Console/NotificationEndpoints/CustomForms/EditConfiguration.tsx +++ b/portal-ui/src/screens/Console/NotificationEndpoints/CustomForms/EditConfiguration.tsx @@ -15,7 +15,7 @@ // along with this program. If not, see . import React, { Fragment, useCallback, useEffect, useState } from "react"; -import { Button } from "mds"; +import { Button, Loader } from "mds"; import { useLocation, useNavigate } from "react-router-dom"; import get from "lodash/get"; import { Theme } from "@mui/material/styles"; @@ -36,18 +36,20 @@ import { } from "../../Configurations/utils"; import { IConfigurationElement, + IConfigurationSys, IElementValue, } from "../../Configurations/types"; import { ErrorResponseHandler } from "../../../../common/types"; import ResetConfigurationModal from "./ResetConfigurationModal"; import { + configurationIsLoading, setErrorSnackMessage, setServerNeedsRestart, setSnackBarMessage, } from "../../../../systemSlice"; -import { useAppDispatch } from "../../../../store"; -import { Loader } from "mds"; -import EndpointDisplay from "./EndpointDisplay"; +import { AppState, useAppDispatch } from "../../../../store"; +import WebhookSettings from "../WebhookSettings/WebhookSettings"; +import { useSelector } from "react-redux"; const styles = (theme: Theme) => createStyles({ @@ -81,15 +83,20 @@ const EditConfiguration = ({ //Local States const [valuesObj, setValueObj] = useState([]); const [saving, setSaving] = useState(false); - const [loadingConfig, setLoadingConfig] = useState(true); const [configValues, setConfigValues] = useState([]); - const [configSubsysList, setConfigSubsysList] = useState([]); + const [configSubsysList, setConfigSubsysList] = useState( + [] + ); const [resetConfigurationOpen, setResetConfigurationOpen] = useState(false); + const loadingConfig = useSelector( + (state: AppState) => state.system.loadingConfigurations + ); + useEffect(() => { - setLoadingConfig(true); - }, [selConfigTab]); + dispatch(configurationIsLoading(true)); + }, [selConfigTab, dispatch]); useEffect(() => { if (loadingConfig) { @@ -102,16 +109,16 @@ const EditConfiguration = ({ setConfigSubsysList(res); const keyVals = get(res[0], "key_values", []); setConfigValues(keyVals); - setLoadingConfig(false); + dispatch(configurationIsLoading(false)); }) .catch((err: ErrorResponseHandler) => { - setLoadingConfig(false); + dispatch(configurationIsLoading(false)); dispatch(setErrorSnackMessage(err)); }); return; } - setLoadingConfig(false); + dispatch(configurationIsLoading(false)); } }, [loadingConfig, selectedConfiguration, dispatch]); @@ -129,6 +136,7 @@ const EditConfiguration = ({ .then((res) => { setSaving(false); dispatch(setServerNeedsRestart(res.restart)); + dispatch(configurationIsLoading(true)); if (!res.restart) { dispatch(setSnackBarMessage("Configuration saved successfully")); } @@ -157,10 +165,14 @@ const EditConfiguration = ({ setResetConfigurationOpen(false); dispatch(setServerNeedsRestart(restart)); if (restart) { - setLoadingConfig(true); + dispatch(configurationIsLoading(true)); } }; + const resetConfigurationMOpen = () => { + setResetConfigurationOpen(true); + }; + return ( {resetConfigurationOpen && ( @@ -181,62 +193,66 @@ const EditConfiguration = ({ height: "100%", }} > -
- - - {(selectedConfiguration.configuration_id === "logger_webhook" || - selectedConfiguration.configuration_id === "audit_webhook") && ( - - )} - - - +
+ + +

Currently Configured Endpoints

+ +
+
+ + ); +}; + +export default WebhookSettings; diff --git a/portal-ui/src/systemSlice.ts b/portal-ui/src/systemSlice.ts index 394141c91..ddbeed915 100644 --- a/portal-ui/src/systemSlice.ts +++ b/portal-ui/src/systemSlice.ts @@ -35,6 +35,7 @@ export interface SystemState { userName: string; serverNeedsRestart: boolean; serverIsLoading: boolean; + loadingConfigurations: boolean; loadingProgress: number; snackBar: snackBarMessage; modalSnackBar: snackBarMessage; @@ -58,6 +59,7 @@ const initialState: SystemState = { siteReplicationInfo: { siteName: "", curSite: false, enabled: false }, serverNeedsRestart: false, serverIsLoading: false, + loadingConfigurations: true, loadingProgress: 100, snackBar: { message: "", @@ -106,6 +108,9 @@ export const systemSlice = createSlice({ serverIsLoading: (state, action: PayloadAction) => { state.serverIsLoading = action.payload; }, + configurationIsLoading: (state, action: PayloadAction) => { + state.loadingConfigurations = action.payload; + }, setLoadingProgress: (state, action: PayloadAction) => { state.loadingProgress = action.payload; }, @@ -192,6 +197,7 @@ export const { setOverrideStyles, setAnonymousMode, resetSystem, + configurationIsLoading, } = systemSlice.actions; export const selDistSet = (state: AppState) => state.system.distributedSetup;