Files
notesnook/apps/mobile/src/components/delaylayout/index.tsx

39 lines
1.0 KiB
TypeScript
Raw Normal View History

2022-06-13 10:55:34 +05:00
import React from 'react';
2022-07-07 14:33:54 +05:00
import { View, ViewProps } from 'react-native';
2022-06-13 10:55:34 +05:00
import { useThemeStore } from '../../stores/use-theme-store';
import { useDelayLayout } from '../../utils/hooks/use-delay-layout';
import { DefaultPlaceholder } from './default-placeholder';
import { SettingsPlaceholder } from './settings-placeholder';
interface IDelayLayoutProps extends ViewProps {
delay?: number;
wait?: boolean;
type?: 'default' | 'settings';
}
const placeholder = {
default: DefaultPlaceholder,
settings: SettingsPlaceholder
};
export default function DelayLayout(props: IDelayLayoutProps) {
const colors = useThemeStore(state => state.colors);
2022-07-04 15:44:09 +05:00
const loading = useDelayLayout(!props.delay || props.delay < 300 ? 300 : props.delay);
2022-06-13 10:55:34 +05:00
const Placeholder = placeholder[props.type || 'default'];
return loading || props.wait ? (
2022-07-07 14:33:54 +05:00
<View
2022-06-13 10:55:34 +05:00
style={{
backgroundColor: colors.bg,
flex: 1,
paddingTop: 20
}}
>
<Placeholder />
2022-07-07 14:33:54 +05:00
</View>
2022-06-13 10:55:34 +05:00
) : (
<>{props.children}</>
);
}