File size: 1,543 Bytes
aa2e6af | 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 | import { useSetRecoilState } from 'recoil';
import { useEffect, useCallback } from 'react';
import { useQueryClient } from '@tanstack/react-query';
import type { TEndpointsConfig, TModelsConfig } from 'librechat-data-provider';
import { useGetEndpointsConfigOverride } from '~/data-provider';
import { QueryKeys } from 'librechat-data-provider';
import store from '~/store';
type TempOverrideType = Record<string, unknown> & {
endpointsConfig: TEndpointsConfig;
modelsConfig: TModelsConfig;
combinedOptions: unknown[];
combined: boolean;
};
export default function useConfigOverride() {
const setEndpointsQueryEnabled = useSetRecoilState(store.endpointsQueryEnabled);
const overrideQuery = useGetEndpointsConfigOverride({
staleTime: Infinity,
});
const queryClient = useQueryClient();
const handleOverride = useCallback(
async (data: unknown | boolean) => {
const { endpointsConfig, modelsConfig } = data as TempOverrideType;
if (endpointsConfig) {
setEndpointsQueryEnabled(false);
await queryClient.cancelQueries([QueryKeys.endpoints]);
queryClient.setQueryData([QueryKeys.endpoints], endpointsConfig);
}
if (modelsConfig) {
await queryClient.cancelQueries([QueryKeys.models]);
queryClient.setQueryData([QueryKeys.models], modelsConfig);
}
},
[queryClient, setEndpointsQueryEnabled],
);
useEffect(() => {
if (overrideQuery.data) {
handleOverride(overrideQuery.data);
}
}, [overrideQuery.data, handleOverride]);
}
|