fix stop model first then start model when change on right panel setting

This commit is contained in:
Faisal Amir 2024-01-17 10:46:57 +07:00
parent 9fa684e480
commit 95225c3637
2 changed files with 11 additions and 6 deletions

View File

@ -50,7 +50,7 @@ export default function DropdownListSidebar() {
const threadStates = useAtomValue(threadStatesAtom) const threadStates = useAtomValue(threadStatesAtom)
const [selectedModel, setSelectedModel] = useAtom(selectedModelAtom) const [selectedModel, setSelectedModel] = useAtom(selectedModelAtom)
const setThreadModelParams = useSetAtom(setThreadModelParamsAtom) const setThreadModelParams = useSetAtom(setThreadModelParamsAtom)
const { activeModel, startModel, stateModel } = useActiveModel() const { activeModel, startModel, stateModel, stopModel } = useActiveModel()
const [serverEnabled, setServerEnabled] = useAtom(serverEnabledAtom) const [serverEnabled, setServerEnabled] = useAtom(serverEnabledAtom)
const { setMainViewState } = useMainViewState() const { setMainViewState } = useMainViewState()
@ -142,12 +142,14 @@ export default function DropdownListSidebar() {
}, [stateModel.loading, loader]) }, [stateModel.loading, loader])
const onValueSelected = useCallback( const onValueSelected = useCallback(
(modelId: string) => { async (modelId: string) => {
const model = downloadedModels.find((m) => m.id === modelId) const model = downloadedModels.find((m) => m.id === modelId)
setSelectedModel(model) setSelectedModel(model)
await stopModel()
if (activeModel?.id !== modelId) { if (activeModel?.id !== modelId) {
startModel(modelId) await startModel(modelId)
} }
if (serverEnabled) { if (serverEnabled) {
@ -168,6 +170,7 @@ export default function DropdownListSidebar() {
downloadedModels, downloadedModels,
serverEnabled, serverEnabled,
activeThreadId, activeThreadId,
activeModel,
setSelectedModel, setSelectedModel,
setThreadModelParams, setThreadModelParams,
] ]
@ -184,7 +187,7 @@ export default function DropdownListSidebar() {
<div <div
className={twMerge( className={twMerge(
'relative w-full overflow-hidden rounded-md', 'relative w-full overflow-hidden rounded-md',
stateModel.loading && 'bg-blue-200 text-blue-600' stateModel.loading && 'pointer-events-none bg-blue-200 text-blue-600'
)} )}
> >
<Select value={selected?.id} onValueChange={onValueSelected}> <Select value={selected?.id} onValueChange={onValueSelected}>
@ -244,7 +247,9 @@ export default function DropdownListSidebar() {
value={x.id} value={x.id}
className={twMerge(x.id === selected?.id && 'bg-secondary')} className={twMerge(x.id === selected?.id && 'bg-secondary')}
onPointerUp={() => { onPointerUp={() => {
if (x.id === selected?.id) {
startModel(x.id) startModel(x.id)
}
}} }}
> >
<div className="flex w-full justify-between"> <div className="flex w-full justify-between">

View File

@ -8,7 +8,7 @@ export default function ModelStart() {
// This is fake loader please fix this when we have realtime percentage when load model // This is fake loader please fix this when we have realtime percentage when load model
useEffect(() => { useEffect(() => {
if (stateModel.loading) { if (stateModel.loading && stateModel.state === 'start') {
if (loader === 24) { if (loader === 24) {
setTimeout(() => { setTimeout(() => {
setLoader(loader + 1) setLoader(loader + 1)