25 lines
748 B
TypeScript
25 lines
748 B
TypeScript
// Copyright 2017-2022 @polkadot/react-hooks authors & contributors
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
import { useEffect, useState } from 'react';
|
|
|
|
import { createNamedHook } from './createNamedHook';
|
|
import { useIsMountedRef } from './useIsMountedRef';
|
|
|
|
function useLoadingDelayImpl (delay = 0): boolean {
|
|
const mountedRef = useIsMountedRef();
|
|
const [isLoading, setIsLoading] = useState(true);
|
|
|
|
useEffect((): void => {
|
|
setTimeout((): void => {
|
|
mountedRef.current && setIsLoading(false);
|
|
}, delay);
|
|
// Ignore, this is for the initial setup
|
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
}, []);
|
|
|
|
return isLoading;
|
|
}
|
|
|
|
export const useLoadingDelay = createNamedHook('useLoadingDelay', useLoadingDelayImpl);
|