chore: add facades refactor: core module export refactor: inference plugin - deprecate function registering (#537) * refactor: revamp inference plugin as class - deprecate function registering * refactor: monitoring plugin - deprecate service registering (#538) refactor: revamp inference plugin as class - deprecate function registering chore: update import refactor: plugin revamp - model management chore: update build steps and remove experimental plugins refactor: remove pluggable electron chore: add sorting for conversations chore: build plugins for testing chore: consistent plugin directory name chore: docs chore: fix CI chore: update conversation prefix
49 lines
1.8 KiB
TypeScript
49 lines
1.8 KiB
TypeScript
import ProgressBar from '@/_components/ProgressBar'
|
|
import SystemItem from '@containers/SystemItem'
|
|
import { useAtomValue } from 'jotai'
|
|
import { appDownloadProgress } from '@helpers/JotaiWrapper'
|
|
import useGetAppVersion from '@hooks/useGetAppVersion'
|
|
import useGetSystemResources from '@hooks/useGetSystemResources'
|
|
import { modelDownloadStateAtom } from '@helpers/atoms/DownloadState.atom'
|
|
import { formatDownloadPercentage } from '@utils/converter'
|
|
import { activeModelAtom } from '@helpers/atoms/Model.atom'
|
|
|
|
const MonitorBar: React.FC = () => {
|
|
const progress = useAtomValue(appDownloadProgress)
|
|
const activeModel = useAtomValue(activeModelAtom)
|
|
const { version } = useGetAppVersion()
|
|
const { ram, cpu } = useGetSystemResources()
|
|
const modelDownloadStates = useAtomValue(modelDownloadStateAtom)
|
|
|
|
const downloadStates: DownloadState[] = []
|
|
for (const [, value] of Object.entries(modelDownloadStates)) {
|
|
downloadStates.push(value)
|
|
}
|
|
|
|
return (
|
|
<div className="flex flex-row items-center justify-between">
|
|
{progress && progress >= 0 ? (
|
|
<ProgressBar total={100} used={progress} />
|
|
) : null}
|
|
<div className="flex flex-1 items-center justify-end gap-8 px-2">
|
|
{downloadStates.length > 0 && (
|
|
<SystemItem
|
|
name="Downloading"
|
|
value={`${downloadStates[0].fileName}: ${formatDownloadPercentage(
|
|
downloadStates[0].percent
|
|
)}`}
|
|
/>
|
|
)}
|
|
<SystemItem name="CPU" value={`${cpu}%`} />
|
|
<SystemItem name="Mem" value={`${ram}%`} />
|
|
{activeModel && (
|
|
<SystemItem name={`Active model: ${activeModel.name}`} value={''} />
|
|
)}
|
|
<span className="text-xs">v{version}</span>
|
|
</div>
|
|
</div>
|
|
)
|
|
}
|
|
|
|
export default MonitorBar
|