From 3c982ef9ad6510011c55051625b13830de44eb5a Mon Sep 17 00:00:00 2001 From: Matthias Feyll <matthias.feyll@stud.h-da.de> Date: Thu, 6 Mar 2025 11:32:39 +0100 Subject: [PATCH] remove explicit json parse --- .../devices/reducer/device.reducer.ts | 11 +------ .../devices/routines/mne.routine.ts | 32 ++----------------- .../devices/view_model/device.viewmodel.ts | 7 ++-- 3 files changed, 7 insertions(+), 43 deletions(-) diff --git a/react-ui/src/components/devices/reducer/device.reducer.ts b/react-ui/src/components/devices/reducer/device.reducer.ts index c7538079a..812c416f8 100755 --- a/react-ui/src/components/devices/reducer/device.reducer.ts +++ b/react-ui/src/components/devices/reducer/device.reducer.ts @@ -16,7 +16,6 @@ export type Device = NetworkelementFlattenedManagedNetworkElement interface SelectedObject { device: Device mne: NetworkelementManagedNetworkElement | null - json: JSON | null } export interface DeviceSliceState { @@ -93,18 +92,10 @@ const deviceSlice = createSlice({ state.selected.mne = action.payload }, - - setSelectedJson: (state, action: PayloadAction<JSON>) => { - if (!state.selected) { - throw new Error('Selected Device is null where it shouldn´t be null') - } - - state.selected.json = action.payload || null - }, }, }) -export const { setDevices, setSelectedDevice, setSelectedMne, setSelectedJson, setPnds } = +export const { setDevices, setSelectedDevice, setSelectedMne, setPnds } = deviceSlice.actions export default deviceSlice.reducer diff --git a/react-ui/src/components/devices/routines/mne.routine.ts b/react-ui/src/components/devices/routines/mne.routine.ts index 967da2615..8f75e3a64 100755 --- a/react-ui/src/components/devices/routines/mne.routine.ts +++ b/react-ui/src/components/devices/routines/mne.routine.ts @@ -1,9 +1,8 @@ -import { api, NetworkElementServiceGetApiArg, NetworkElementServiceParseYangApiArg } from '@api/api' +import { api, NetworkElementServiceGetApiArg } from '@api/api' import { Device, setSelectedDevice, - setSelectedJson, - setSelectedMne, + setSelectedMne } from '@component/devices/reducer/device.reducer' import { createAsyncThunk } from '@reduxjs/toolkit' import { addRoutine } from '@shared/reducer/routine.reducer' @@ -83,30 +82,3 @@ startListening({ listenerApi.dispatch(setSelectedMne(action.payload.mne)) }, }) - -/** - * #3 - * Fetch & receive json - * - * Triggered by #2 - */ -startListening({ - predicate: (action) => setSelectedMne.match(action), - effect: async (action, listenerApi) => { - const payload: NetworkElementServiceParseYangApiArg = { - timestamp: new Date().getTime().toString(), - yang: action.payload.model, - } - - const { data } = await listenerApi.dispatch( - api.endpoints.networkElementServiceParseYang.initiate(payload) - ) - - if (!data?.json) { - throw new Error('ParseYang response is invalid. The json field is null') - } - const json = JSON.parse(data.json) - - listenerApi.dispatch(setSelectedJson(json)) - }, -}) diff --git a/react-ui/src/components/devices/view_model/device.viewmodel.ts b/react-ui/src/components/devices/view_model/device.viewmodel.ts index 5c4acc661..543c45857 100755 --- a/react-ui/src/components/devices/view_model/device.viewmodel.ts +++ b/react-ui/src/components/devices/view_model/device.viewmodel.ts @@ -17,12 +17,13 @@ export const useDeviceViewModel = () => { } const getYangModelJSON = (): JSON | null => { - if (!selectedDevice?.json) { + if (!selectedDevice?.mne?.model) { return null } - const key = Object.keys(selectedDevice.json).at(1) as keyof typeof selectedDevice.json - const innerJson = selectedDevice.json[key] + const json = JSON.parse(selectedDevice.mne.model); + const key = Object.keys(json).at(1) as keyof typeof selectedDevice.mne.model + const innerJson = json[key] if (!(innerJson instanceof Object)) { return null -- GitLab