import React, {useEffect, useRef, useState} from 'react';
import {FlatList, RefreshControl} from 'react-native';
import {useTracked} from '../../provider';
import {eSendEvent} from '../../services/EventManager';
import Sync from '../../services/Sync';
import {eScrollEvent} from '../../utils/Events';
import JumpToDialog from '../JumpToDialog';
import {NotebookWrapper} from '../NotebookItem/wrapper';
import {NoteWrapper} from '../NoteItem/wrapper';
import SortDialog from '../SortDialog';
import TagItem from '../TagItem';
import {Empty} from './empty';
import {Footer} from './footer';
import {Header} from './header';
import {SectionHeader} from './section-header';
let renderItems = {
note: NoteWrapper,
notebook: NotebookWrapper,
topic: NotebookWrapper,
tag: TagItem,
section: SectionHeader
};
const RenderItem = ({item, index}) => {
const Item = renderItems[item.itemType || item.type] ||
return (
);
};
const SimpleList = ({
listData,
type,
customRefresh,
customRefreshing,
refreshCallback,
placeholderData,
loading,
headerProps = {
heading: 'Home'
},
screen,
ListHeader
}) => {
const [state] = useTracked();
const {colors} = state;
const scrollRef = useRef();
const [_loading, _setLoading] = useState(true);
const refreshing = false;
useEffect(() => {
let timeout = null;
if (!loading) {
timeout = setTimeout(
() => {
_setLoading(false);
},
listData.length === 0 ? 0 : 300
);
} else {
_setLoading(true);
}
return () => {
clearTimeout(timeout);
};
}, [loading]);
const renderItem = React.useCallback(
({item, index}) =>
item.type === 'header' ? (
) : (
),
[]
);
const _onRefresh = async () => {
await Sync.run();
if (refreshCallback) {
refreshCallback();
}
};
const _onScroll = React.useCallback(
event => {
if (!event) return;
let y = event.nativeEvent.contentOffset.y;
eSendEvent(eScrollEvent, {
y,
screen
});
},
[screen]
);
let styles = {
height: '100%',
width: '100%',
minHeight: 1,
minWidth: 1,
backgroundColor:colors.bg
};
const _keyExtractor = item => item.id || item.title;
return (
<>
}
ListEmptyComponent={
}
ListFooterComponent={}
ListHeaderComponent={
<>
{ListHeader ? (
ListHeader
) : (
)}
>
}
/>
>
);
};
export default SimpleList;