File size: 1,360 Bytes
7e26e0d |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
import { useSetModalState } from '@/hooks/commonHooks';
import { IApiKeySavingParams, useSaveApiKey } from '@/hooks/llmHooks';
import { useOneNamespaceEffectsLoading } from '@/hooks/storeHooks';
import { useCallback, useState } from 'react';
type SavingParamsState = Omit<IApiKeySavingParams, 'api_key'>;
export const useSubmitApiKey = () => {
const [savingParams, setSavingParams] = useState<SavingParamsState>(
{} as SavingParamsState,
);
const saveApiKey = useSaveApiKey();
const {
visible: apiKeyVisible,
hideModal: hideApiKeyModal,
showModal: showApiKeyModal,
} = useSetModalState();
const onApiKeySavingOk = useCallback(
async (apiKey: string) => {
const ret = await saveApiKey({ ...savingParams, api_key: apiKey });
if (ret.retcode === 0) {
hideApiKeyModal();
}
},
[hideApiKeyModal, saveApiKey, savingParams],
);
const onShowApiKeyModal = useCallback(
(savingParams: SavingParamsState) => {
setSavingParams(savingParams);
showApiKeyModal();
},
[showApiKeyModal, setSavingParams],
);
const loading = useOneNamespaceEffectsLoading('settingModel', [
'set_api_key',
]);
return {
saveApiKeyLoading: loading,
initialApiKey: '',
onApiKeySavingOk,
apiKeyVisible,
hideApiKeyModal,
showApiKeyModal: onShowApiKeyModal,
};
};
|