fix(client-config): set isLoaded to false on API status update (#12371)
Attempt at #12289 (edit Félix: removed fix keyword since I don't think it fixes it) --------- Co-authored-by: Félix Malfait <felix.malfait@gmail.com> Co-authored-by: Félix Malfait <felix@twenty.com>
This commit is contained in:
@ -1,4 +1,4 @@
|
||||
import { useRecoilCallback, useRecoilValue } from 'recoil';
|
||||
import { useRecoilValue, useSetRecoilState } from 'recoil';
|
||||
import { ClientConfig } from '~/generated/graphql';
|
||||
import { clientConfigApiStatusState } from '../states/clientConfigApiStatusState';
|
||||
import { getClientConfig } from '../utils/getClientConfig';
|
||||
@ -13,41 +13,38 @@ type UseClientConfigResult = {
|
||||
|
||||
export const useClientConfig = (): UseClientConfigResult => {
|
||||
const clientConfigApiStatus = useRecoilValue(clientConfigApiStatusState);
|
||||
|
||||
const fetchClientConfig = useRecoilCallback(
|
||||
({ set }) =>
|
||||
async () => {
|
||||
set(clientConfigApiStatusState, (prev) => ({
|
||||
...prev,
|
||||
isLoading: true,
|
||||
isErrored: false,
|
||||
error: undefined,
|
||||
}));
|
||||
|
||||
try {
|
||||
const clientConfig = await getClientConfig();
|
||||
set(clientConfigApiStatusState, (prev) => ({
|
||||
...prev,
|
||||
isLoading: false,
|
||||
isLoaded: true,
|
||||
data: { clientConfig },
|
||||
}));
|
||||
} catch (err) {
|
||||
const error =
|
||||
err instanceof Error
|
||||
? err
|
||||
: new Error('Failed to fetch client config');
|
||||
set(clientConfigApiStatusState, (prev) => ({
|
||||
...prev,
|
||||
isLoading: false,
|
||||
isErrored: true,
|
||||
error,
|
||||
}));
|
||||
}
|
||||
},
|
||||
[],
|
||||
const setClientConfigApiStatus = useSetRecoilState(
|
||||
clientConfigApiStatusState,
|
||||
);
|
||||
|
||||
const fetchClientConfig = async () => {
|
||||
setClientConfigApiStatus((prev) => ({
|
||||
...prev,
|
||||
isLoading: true,
|
||||
}));
|
||||
|
||||
try {
|
||||
const clientConfig = await getClientConfig();
|
||||
setClientConfigApiStatus((prev) => ({
|
||||
...prev,
|
||||
isLoading: false,
|
||||
isLoadedOnce: true,
|
||||
isErrored: false,
|
||||
error: undefined,
|
||||
data: { clientConfig },
|
||||
}));
|
||||
} catch (err) {
|
||||
const error =
|
||||
err instanceof Error ? err : new Error('Failed to fetch client config');
|
||||
setClientConfigApiStatus((prev) => ({
|
||||
...prev,
|
||||
isLoading: false,
|
||||
isErrored: true,
|
||||
error,
|
||||
}));
|
||||
}
|
||||
};
|
||||
|
||||
return {
|
||||
data: clientConfigApiStatus.data,
|
||||
loading: clientConfigApiStatus.isLoading || false,
|
||||
|
||||
Reference in New Issue
Block a user