|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import { useCallback, useEffect } from 'react'; |
|
|
import { useTranslation } from 'react-i18next'; |
|
|
import { API, processModelsData, processGroupsData } from '../../helpers'; |
|
|
import { API_ENDPOINTS } from '../../constants/playground.constants'; |
|
|
|
|
|
export const useDataLoader = ( |
|
|
userState, |
|
|
inputs, |
|
|
handleInputChange, |
|
|
setModels, |
|
|
setGroups, |
|
|
) => { |
|
|
const { t } = useTranslation(); |
|
|
|
|
|
const loadModels = useCallback(async () => { |
|
|
try { |
|
|
const res = await API.get(API_ENDPOINTS.USER_MODELS); |
|
|
const { success, message, data } = res.data; |
|
|
|
|
|
if (success) { |
|
|
const { modelOptions, selectedModel } = processModelsData( |
|
|
data, |
|
|
inputs.model, |
|
|
); |
|
|
setModels(modelOptions); |
|
|
|
|
|
if (selectedModel !== inputs.model) { |
|
|
handleInputChange('model', selectedModel); |
|
|
} |
|
|
} else { |
|
|
showError(t(message)); |
|
|
} |
|
|
} catch (error) { |
|
|
showError(t('加载模型失败')); |
|
|
} |
|
|
}, [inputs.model, handleInputChange, setModels, t]); |
|
|
|
|
|
const loadGroups = useCallback(async () => { |
|
|
try { |
|
|
const res = await API.get(API_ENDPOINTS.USER_GROUPS); |
|
|
const { success, message, data } = res.data; |
|
|
|
|
|
if (success) { |
|
|
const userGroup = |
|
|
userState?.user?.group || |
|
|
JSON.parse(localStorage.getItem('user'))?.group; |
|
|
const groupOptions = processGroupsData(data, userGroup); |
|
|
setGroups(groupOptions); |
|
|
|
|
|
const hasCurrentGroup = groupOptions.some( |
|
|
(option) => option.value === inputs.group, |
|
|
); |
|
|
if (!hasCurrentGroup) { |
|
|
handleInputChange('group', groupOptions[0]?.value || ''); |
|
|
} |
|
|
} else { |
|
|
showError(t(message)); |
|
|
} |
|
|
} catch (error) { |
|
|
showError(t('加载分组失败')); |
|
|
} |
|
|
}, [userState, inputs.group, handleInputChange, setGroups, t]); |
|
|
|
|
|
|
|
|
useEffect(() => { |
|
|
if (userState?.user) { |
|
|
loadModels(); |
|
|
loadGroups(); |
|
|
} |
|
|
}, [userState?.user, loadModels, loadGroups]); |
|
|
|
|
|
return { |
|
|
loadModels, |
|
|
loadGroups, |
|
|
}; |
|
|
}; |
|
|
|