fix: for gguf ref not be created, #2227

This commit is contained in:
jialin
2025-06-19 15:25:21 +08:00
parent a9b909cca1
commit be92f92991
7 changed files with 58 additions and 42 deletions
+18
View File
@@ -0,0 +1,18 @@
import { useRequest } from 'ahooks';
export default function useDeferredRequest<P extends any[], R>(
requestFn: (...args: P) => Promise<R>,
delay = 100
) {
return useRequest(
async (...args: P) => {
await new Promise((resolve) => {
setTimeout(resolve, delay);
});
return await requestFn(...args);
},
{
manual: true
}
);
}
+34 -34
View File
@@ -1,6 +1,7 @@
import ModalFooter from '@/components/modal-footer'; import ModalFooter from '@/components/modal-footer';
import GSDrawer from '@/components/scroller-modal/gs-drawer'; import GSDrawer from '@/components/scroller-modal/gs-drawer';
import { PageActionType } from '@/config/types'; import { PageActionType } from '@/config/types';
import useDeferredRequest from '@/hooks/use-deferred-request';
import { CloseOutlined } from '@ant-design/icons'; import { CloseOutlined } from '@ant-design/icons';
import { useIntl } from '@umijs/max'; import { useIntl } from '@umijs/max';
import { Button } from 'antd'; import { Button } from 'antd';
@@ -111,7 +112,6 @@ const AddModal: FC<AddModalProps> = (props) => {
cancelEvaluate, cancelEvaluate,
unlockWarningStatus, unlockWarningStatus,
handleOnValuesChange: handleOnValuesChangeBefore, handleOnValuesChange: handleOnValuesChangeBefore,
handleEvaluateOnChange,
clearCahceFormValues, clearCahceFormValues,
warningStatus, warningStatus,
submitAnyway submitAnyway
@@ -133,6 +133,11 @@ const AddModal: FC<AddModalProps> = (props) => {
}); });
const requestModelIdRef = useRef<number>(0); const requestModelIdRef = useRef<number>(0);
const { run: fetchModelFiles } = useDeferredRequest(
() => modelFileRef.current?.fetchModelFiles?.(),
100
);
/** /**
* Update the request model id to distinguish * Update the request model id to distinguish
* the evaluate request. * the evaluate request.
@@ -191,32 +196,8 @@ const AddModal: FC<AddModalProps> = (props) => {
return categories || null; return categories || null;
}; };
const handleSelectModelFile = async (item: any, requestModelId: number) => { const { run: onSelectFile } = useDeferredRequest(
if ( async (item: any, modelInfo: any) => {
evaluateStateRef.current.state !== EvaluateProccess.file ||
requestModelId !== evaluateStateRef.current.requestModelId
) {
return;
}
form.current?.form?.resetFields(resetFieldsByFile);
const modelInfo = onSelectModel(selectedModel, props.source);
form.current?.setFieldsValue?.({
..._.omit(modelInfo, ['name']),
file_name: item.fakeName,
categories: getCategory(item)
});
console.log('handleSelectModelFile', item);
await new Promise((resolve) => {
setTimeout(() => {
resolve(true);
}, 0);
});
// evaluate the form data when select a model file
if (item.fakeName) {
unlockWarningStatus(); unlockWarningStatus();
const evaluateRes = await handleOnValuesChangeBefore?.({ const evaluateRes = await handleOnValuesChangeBefore?.({
@@ -245,6 +226,31 @@ const AddModal: FC<AddModalProps> = (props) => {
: defaultSpec.backend_parameters || [], : defaultSpec.backend_parameters || [],
categories: getCategory(item) categories: getCategory(item)
}); });
},
100
);
const handleSelectModelFile = async (item: any, requestModelId: number) => {
if (
evaluateStateRef.current.state !== EvaluateProccess.file ||
requestModelId !== evaluateStateRef.current.requestModelId
) {
return;
}
form.current?.form?.resetFields(resetFieldsByFile);
const modelInfo = onSelectModel(selectedModel, props.source);
form.current?.setFieldsValue?.({
..._.omit(modelInfo, ['name']),
file_name: item.fakeName,
categories: getCategory(item)
});
console.log('handleSelectModelFile', item);
// evaluate the form data when select a model file
if (item.fakeName) {
onSelectFile(item, modelInfo);
} }
}; };
@@ -286,14 +292,8 @@ const AddModal: FC<AddModalProps> = (props) => {
} }
); );
await new Promise((resolve) => {
setTimeout(() => {
resolve(true);
}, 0);
});
if (item.isGGUF) { if (item.isGGUF) {
modelFileRef.current?.fetchModelFiles?.(); fetchModelFiles();
} }
}; };
@@ -335,7 +335,6 @@ const HFModelFile: React.FC<HFModelFileProps> = forwardRef((props, ref) => {
useEffect(() => { useEffect(() => {
if (!props.selectedModel.name) { if (!props.selectedModel.name) {
setDataSource({ fileList: [], loading: false }); setDataSource({ fileList: [], loading: false });
handleSelectModelFile({});
} }
}, [props.selectedModel?.name]); }, [props.selectedModel?.name]);
@@ -29,7 +29,6 @@ const HFModelItem: React.FC<HFModelItemProps> = (props) => {
return ( return (
<div <div
tabIndex={0}
className={classNames('hf-model-item', { className={classNames('hf-model-item', {
active: props.active active: props.active
})} })}
+4 -4
View File
@@ -174,8 +174,8 @@ const ModelCard: React.FC<{
setModelData(null); setModelData(null);
setReadmeText(null); setReadmeText(null);
handleOnCollapse(null); handleOnCollapse(null);
setIsGGUF(false); // setIsGGUF(false);
setIsGGUFModel(false); // setIsGGUFModel(false);
} }
}; };
@@ -205,8 +205,8 @@ const ModelCard: React.FC<{
setModelData(null); setModelData(null);
setReadmeText(null); setReadmeText(null);
handleOnCollapse(null); handleOnCollapse(null);
setIsGGUF(false); // setIsGGUF(false);
setIsGGUFModel(false); // setIsGGUFModel(false);
} }
}; };
@@ -79,7 +79,6 @@ const ModelFileItem: React.FC<ModelFileItemProps> = (props) => {
className={classNames('hf-model-file', { className={classNames('hf-model-file', {
active: active active: active
})} })}
tabIndex={0}
onClick={() => handleSelectModelFile(item)} onClick={() => handleSelectModelFile(item)}
> >
<div className="title">{item.path}</div> <div className="title">{item.path}</div>
@@ -142,7 +142,7 @@ const SearchModel: React.FC<SearchInputProps> = (props) => {
const handleOnSelectModel = (model: any) => { const handleOnSelectModel = (model: any) => {
const item = model || {}; const item = model || {};
if (item.evaluateResult && !item.isGGUF) { if (item.evaluated && !item.isGGUF) {
onSelectModelAfterEvaluate(item); onSelectModelAfterEvaluate(item);
} else { } else {
onSelectModel(item); onSelectModel(item);
@@ -326,6 +326,7 @@ const SearchModel: React.FC<SearchInputProps> = (props) => {
const resultList = list.map((item, index) => { const resultList = list.map((item, index) => {
return { return {
...item, ...item,
evaluated: true,
evaluateResult: evaluations[index] || null evaluateResult: evaluations[index] || null
}; };
}); });