Louis 96dba2690d feat: class-based plugin manager
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
2023-11-06 13:46:01 +07:00

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