Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
device.viewmodel.ts 1.15 KiB
import { useAppDispatch, useAppSelector } from '@hooks'
import { useMemo, useState } from 'react'
import { fetchPluginsThunk } from '../routines/plugin.routine'

export const useDeviceViewModel = () => {
    const [addModal, setAddModal] = useState<boolean>(false)
    const { selected: selectedDevice } = useAppSelector((state) => state.device)
    const dispatch = useAppDispatch()

    const openAddModal = () => {
        dispatch(fetchPluginsThunk())
        setAddModal(true)
    }

    const closeModal = () => {
        setAddModal(false)
    }

    const getYangModelJSON = (): JSON | null => {
        if (!selectedDevice?.mne?.model) {
            return null
        }

        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
        }

        return innerJson
    }

    const jsonYang = useMemo<JSON | null>(getYangModelJSON, [selectedDevice])

    return {
        jsonYang,
        selectedDevice,
        openAddModal,
        closeModal,
        addModal
    }
}