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 GSDrawer from '@/components/scroller-modal/gs-drawer';
import { PageActionType } from '@/config/types';
import useDeferredRequest from '@/hooks/use-deferred-request';
import { CloseOutlined } from '@ant-design/icons';
import { useIntl } from '@umijs/max';
import { Button } from 'antd';
@@ -111,7 +112,6 @@ const AddModal: FC<AddModalProps> = (props) => {
cancelEvaluate,
unlockWarningStatus,
handleOnValuesChange: handleOnValuesChangeBefore,
handleEvaluateOnChange,
clearCahceFormValues,
warningStatus,
submitAnyway
@@ -133,6 +133,11 @@ const AddModal: FC<AddModalProps> = (props) => {
});
const requestModelIdRef = useRef<number>(0);
const { run: fetchModelFiles } = useDeferredRequest(
() => modelFileRef.current?.fetchModelFiles?.(),
100
);
/**
* Update the request model id to distinguish
* the evaluate request.
@@ -191,32 +196,8 @@ const AddModal: FC<AddModalProps> = (props) => {
return categories || null;
};
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);
await new Promise((resolve) => {
setTimeout(() => {
resolve(true);
}, 0);
});
// evaluate the form data when select a model file
if (item.fakeName) {
const { run: onSelectFile } = useDeferredRequest(
async (item: any, modelInfo: any) => {
unlockWarningStatus();
const evaluateRes = await handleOnValuesChangeBefore?.({
@@ -245,6 +226,31 @@ const AddModal: FC<AddModalProps> = (props) => {
: defaultSpec.backend_parameters || [],
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) {
modelFileRef.current?.fetchModelFiles?.();
fetchModelFiles();
}
};
@@ -335,7 +335,6 @@ const HFModelFile: React.FC<HFModelFileProps> = forwardRef((props, ref) => {
useEffect(() => {
if (!props.selectedModel.name) {
setDataSource({ fileList: [], loading: false });
handleSelectModelFile({});
}
}, [props.selectedModel?.name]);
@@ -29,7 +29,6 @@ const HFModelItem: React.FC<HFModelItemProps> = (props) => {
return (
<div
tabIndex={0}
className={classNames('hf-model-item', {
active: props.active
})}
+4 -4
View File
@@ -174,8 +174,8 @@ const ModelCard: React.FC<{
setModelData(null);
setReadmeText(null);
handleOnCollapse(null);
setIsGGUF(false);
setIsGGUFModel(false);
// setIsGGUF(false);
// setIsGGUFModel(false);
}
};
@@ -205,8 +205,8 @@ const ModelCard: React.FC<{
setModelData(null);
setReadmeText(null);
handleOnCollapse(null);
setIsGGUF(false);
setIsGGUFModel(false);
// setIsGGUF(false);
// setIsGGUFModel(false);
}
};
@@ -79,7 +79,6 @@ const ModelFileItem: React.FC<ModelFileItemProps> = (props) => {
className={classNames('hf-model-file', {
active: active
})}
tabIndex={0}
onClick={() => handleSelectModelFile(item)}
>
<div className="title">{item.path}</div>
@@ -142,7 +142,7 @@ const SearchModel: React.FC<SearchInputProps> = (props) => {
const handleOnSelectModel = (model: any) => {
const item = model || {};
if (item.evaluateResult && !item.isGGUF) {
if (item.evaluated && !item.isGGUF) {
onSelectModelAfterEvaluate(item);
} else {
onSelectModel(item);
@@ -326,6 +326,7 @@ const SearchModel: React.FC<SearchInputProps> = (props) => {
const resultList = list.map((item, index) => {
return {
...item,
evaluated: true,
evaluateResult: evaluations[index] || null
};
});