fix startup status detect

This commit is contained in:
josc146 2023-05-25 00:51:45 +08:00
parent 5729d9fc62
commit 6f629dbc55
6 changed files with 24 additions and 24 deletions

View File

@ -43,8 +43,8 @@ export const RunButton: FC<{ onClickRun?: MouseEventHandler, iconMode?: boolean
const navigate = useNavigate(); const navigate = useNavigate();
const onClickMainButton = async () => { const onClickMainButton = async () => {
if (commonStore.status.modelStatus === ModelStatus.Offline) { if (commonStore.status.status === ModelStatus.Offline) {
commonStore.setStatus({ modelStatus: ModelStatus.Starting }); commonStore.setStatus({ status: ModelStatus.Starting });
const modelConfig = commonStore.getCurrentModelConfig(); const modelConfig = commonStore.getCurrentModelConfig();
let modelName = ''; let modelName = '';
@ -54,7 +54,7 @@ export const RunButton: FC<{ onClickRun?: MouseEventHandler, iconMode?: boolean
modelPath = `./${manifest.localModelDir}/${modelName}`; modelPath = `./${manifest.localModelDir}/${modelName}`;
} else { } else {
toast(t('Model Config Exception'), { type: 'error' }); toast(t('Model Config Exception'), { type: 'error' });
commonStore.setStatus({ modelStatus: ModelStatus.Offline }); commonStore.setStatus({ status: ModelStatus.Offline });
return; return;
} }
@ -80,7 +80,7 @@ export const RunButton: FC<{ onClickRun?: MouseEventHandler, iconMode?: boolean
} }
}); });
if (depErrorMsg) { if (depErrorMsg) {
commonStore.setStatus({ modelStatus: ModelStatus.Offline }); commonStore.setStatus({ status: ModelStatus.Offline });
return; return;
} }
commonStore.setDepComplete(true); commonStore.setDepComplete(true);
@ -102,7 +102,7 @@ export const RunButton: FC<{ onClickRun?: MouseEventHandler, iconMode?: boolean
} }
}); });
commonStore.setStatus({ modelStatus: ModelStatus.Offline }); commonStore.setStatus({ status: ModelStatus.Offline });
return; return;
} }
@ -125,7 +125,7 @@ export const RunButton: FC<{ onClickRun?: MouseEventHandler, iconMode?: boolean
if (status) if (status)
commonStore.setStatus(status); commonStore.setStatus(status);
}); });
commonStore.setStatus({ modelStatus: ModelStatus.Loading }); commonStore.setStatus({ status: ModelStatus.Loading });
toast(t('Loading Model'), { type: 'info' }); toast(t('Loading Model'), { type: 'info' });
updateConfig({ updateConfig({
max_tokens: modelConfig.apiParameters.maxResponseToken, max_tokens: modelConfig.apiParameters.maxResponseToken,
@ -161,51 +161,51 @@ export const RunButton: FC<{ onClickRun?: MouseEventHandler, iconMode?: boolean
customCuda: customCudaFile !== '' customCuda: customCudaFile !== ''
}).then((r) => { }).then((r) => {
if (r.ok) { if (r.ok) {
commonStore.setStatus({ modelStatus: ModelStatus.Working }); commonStore.setStatus({ status: ModelStatus.Working });
toastWithButton(t('Startup Completed'), t('Chat'), () => { toastWithButton(t('Startup Completed'), t('Chat'), () => {
navigate({ pathname: '/chat' }); navigate({ pathname: '/chat' });
}, { type: 'success', autoClose: 3000 }); }, { type: 'success', autoClose: 3000 });
} else if (r.status === 304) { } else if (r.status === 304) {
toast(t('Loading Model'), { type: 'info' }); toast(t('Loading Model'), { type: 'info' });
} else { } else {
commonStore.setStatus({ modelStatus: ModelStatus.Offline }); commonStore.setStatus({ status: ModelStatus.Offline });
toast(t('Failed to switch model'), { type: 'error' }); toast(t('Failed to switch model'), { type: 'error' });
} }
}).catch(() => { }).catch(() => {
commonStore.setStatus({ modelStatus: ModelStatus.Offline }); commonStore.setStatus({ status: ModelStatus.Offline });
toast(t('Failed to switch model'), { type: 'error' }); toast(t('Failed to switch model'), { type: 'error' });
}); });
} }
}).catch(() => { }).catch(() => {
if (timeoutCount <= 0) { if (timeoutCount <= 0) {
clearInterval(intervalId); clearInterval(intervalId);
commonStore.setStatus({ modelStatus: ModelStatus.Offline }); commonStore.setStatus({ status: ModelStatus.Offline });
} }
}); });
timeoutCount--; timeoutCount--;
}, 1000); }, 1000);
} else { } else {
commonStore.setStatus({ modelStatus: ModelStatus.Offline }); commonStore.setStatus({ status: ModelStatus.Offline });
exit(); exit();
} }
}; };
const onClick = async (e: any) => { const onClick = async (e: any) => {
if (commonStore.status.modelStatus === ModelStatus.Offline) if (commonStore.status.status === ModelStatus.Offline)
await onClickRun?.(e); await onClickRun?.(e);
await onClickMainButton(); await onClickMainButton();
}; };
return (iconMode ? return (iconMode ?
<ToolTipButton disabled={commonStore.status.modelStatus === ModelStatus.Starting} <ToolTipButton disabled={commonStore.status.status === ModelStatus.Starting}
icon={iconModeButtonIcon[commonStore.status.modelStatus]} icon={iconModeButtonIcon[commonStore.status.status]}
desc={t(mainButtonText[commonStore.status.modelStatus])} desc={t(mainButtonText[commonStore.status.status])}
size="small" onClick={onClick} /> size="small" onClick={onClick} />
: :
<Button disabled={commonStore.status.modelStatus === ModelStatus.Starting} appearance="primary" size="large" <Button disabled={commonStore.status.status === ModelStatus.Starting} appearance="primary" size="large"
onClick={onClick}> onClick={onClick}>
{t(mainButtonText[commonStore.status.modelStatus])} {t(mainButtonText[commonStore.status.status])}
</Button> </Button>
); );
}); });

View File

@ -29,8 +29,8 @@ export const WorkHeader: FC = observer(() => {
<div className="flex flex-col gap-1"> <div className="flex flex-col gap-1">
<div className="flex justify-between items-center"> <div className="flex justify-between items-center">
<div className="flex items-center gap-2"> <div className="flex items-center gap-2">
<PresenceBadge status={badgeStatus[commonStore.status.modelStatus]} /> <PresenceBadge status={badgeStatus[commonStore.status.status]} />
<Text size={100}>{t('Model Status') + ': ' + t(statusText[commonStore.status.modelStatus])}</Text> <Text size={100}>{t('Model Status') + ': ' + t(statusText[commonStore.status.status])}</Text>
</div> </div>
<div className="flex items-center gap-2"> <div className="flex items-center gap-2">
<ConfigSelector size="small" /> <ConfigSelector size="small" />

View File

@ -93,7 +93,7 @@ const ChatPanel: FC = observer(() => {
e.stopPropagation(); e.stopPropagation();
if (e.type === 'click' || (e.keyCode === 13 && !e.shiftKey)) { if (e.type === 'click' || (e.keyCode === 13 && !e.shiftKey)) {
e.preventDefault(); e.preventDefault();
if (commonStore.status.modelStatus === ModelStatus.Offline) { if (commonStore.status.status === ModelStatus.Offline) {
toast(t('Please click the button in the top right corner to start the model'), { type: 'warning' }); toast(t('Please click the button in the top right corner to start the model'), { type: 'warning' });
return; return;
} }

View File

@ -135,7 +135,7 @@ const CompletionPanel: FC = observer(() => {
}; };
const onSubmit = (prompt: string) => { const onSubmit = (prompt: string) => {
if (commonStore.status.modelStatus === ModelStatus.Offline) { if (commonStore.status.status === ModelStatus.Offline) {
toast(t('Please click the button in the top right corner to start the model'), { type: 'warning' }); toast(t('Please click the button in the top right corner to start the model'), { type: 'warning' });
commonStore.setCompletionGenerating(false); commonStore.setCompletionGenerating(false);
return; return;

View File

@ -33,7 +33,7 @@ export async function startup() {
if (commonStore.settings.autoUpdatesCheck) // depends on config settings if (commonStore.settings.autoUpdatesCheck) // depends on config settings
checkUpdate(); checkUpdate();
getStatus(500).then(status => { // depends on config api port getStatus(1000).then(status => { // depends on config api port
if (status) if (status)
commonStore.setStatus(status); commonStore.setStatus(status);
}); });

View File

@ -20,7 +20,7 @@ export enum ModelStatus {
} }
export type Status = { export type Status = {
modelStatus: ModelStatus; status: ModelStatus;
pid: number; pid: number;
device_name: string; device_name: string;
} }
@ -28,7 +28,7 @@ export type Status = {
class CommonStore { class CommonStore {
// global // global
status: Status = { status: Status = {
modelStatus: ModelStatus.Offline, status: ModelStatus.Offline,
pid: 0, pid: 0,
device_name: 'CPU' device_name: 'CPU'
}; };