Faisal Amir daa7c0ca21
feat: better hardware setting (#4471)
* feat: better hardware setting

* chore: update layout

* feat: better hardware setting

* chore: fix title section

* chore: added hardware engine management

* chore: integrate gpus and enable set gpu activate

* chore: update calculate ram and vram

* chore: update calulate vram and ram used

* fix: set active gpus

* chore: fix progress bar spacing

* chore: always update cache vram gpu

* chore: update cpu usage percentage

* chore: fix type usage cpu

* chore: update ram cpus usage getsystemmonitor from new api harware engine management system

* test: update test case data using hardware management extension

* chore: resolve conflict lock json

* chore: cleanup app services

* chore: update type OperationSystemInfo

* chore: update app service

* chore: show list gpus on system monitor

* chore: remove monitoring extension

* chore: update test case app service

* chore: remove unused hooks useGpusSetting

* chore: remove monitor from shource index

* chore: fix test core

* chore: update gpu and cpu info on engine management ext

* chore: fix app service test

* chore: update test appService include cpu info

* chore: filter gpus show or hide on system monitor based activated gpu

* chore: remove unused run_mode

* chore: remove tensort

* chore: update check gpu run_mode

* chore: handle undefined gpus

* chore: cleanup PR

* chore: cleanup process node error

* chore: fix type
2025-02-03 22:01:08 +07:00

85 lines
2.4 KiB
TypeScript

import React, { useState } from 'react'
import { InferenceEngine } from '@janhq/core'
import { useAtomValue } from 'jotai'
import { useGetEngines } from '@/hooks/useEngineManagement'
import Advanced from '@/screens/Settings/Advanced'
import ProxySettings from '@/screens/Settings/Advanced/ProxySettings'
import AppearanceOptions from '@/screens/Settings/Appearance'
import ExtensionCatalog from '@/screens/Settings/CoreExtensions'
import Engines from '@/screens/Settings/Engines'
import LocalEngineSettings from '@/screens/Settings/Engines/LocalEngineSettings'
import RemoteEngineSettings from '@/screens/Settings/Engines/RemoteEngineSettings'
import ExtensionSetting from '@/screens/Settings/ExtensionSetting'
import Hardware from '@/screens/Settings/Hardware'
import Hotkeys from '@/screens/Settings/Hotkeys'
import MyModels from '@/screens/Settings/MyModels'
import Privacy from '@/screens/Settings/Privacy'
import { isLocalEngine } from '@/utils/modelEngine'
import { selectedSettingAtom } from '@/helpers/atoms/Setting.atom'
const SettingDetail = () => {
const selectedSetting = useAtomValue(selectedSettingAtom)
const { engines } = useGetEngines()
const [subdir, setSubdir] = useState<string | null>(null)
switch (selectedSetting) {
case 'Engines':
return <Engines />
case 'Extensions':
return <ExtensionCatalog />
case 'Preferences':
return <AppearanceOptions />
case 'Keyboard Shortcuts':
return <Hotkeys />
case 'Hardware':
return <Hardware />
case 'Privacy':
return <Privacy />
case 'Advanced Settings':
switch (subdir) {
case 'proxy':
return <ProxySettings onBack={() => setSubdir(null)} />
default:
return <Advanced setSubdir={setSubdir} />
}
case 'My Models':
return <MyModels />
default:
if (
!selectedSetting.includes('@janhq') &&
isLocalEngine(engines, selectedSetting as InferenceEngine)
) {
return (
<LocalEngineSettings engine={selectedSetting as InferenceEngine} />
)
} else if (
!selectedSetting.includes('@janhq') &&
!isLocalEngine(engines, selectedSetting as InferenceEngine)
) {
return (
<RemoteEngineSettings engine={selectedSetting as InferenceEngine} />
)
}
return (
<div className="mx-4">
<ExtensionSetting />
</div>
)
}
}
export default SettingDetail