import React, {useEffect, useRef, useState} from 'react';
import {FlatList, RefreshControl} from 'react-native';
import {useTracked} from '../../provider';
import {eSendEvent} from '../../services/EventManager';
import SettingsService from '../../services/SettingsService';
import Sync from '../../services/Sync';
import {COLORS_NOTE} from '../../utils/Colors';
import {eScrollEvent} from '../../utils/Events';
import useAnnouncement from '../../utils/useAnnouncement';
import JumpToDialog from '../JumpToDialog';
import {NotebookWrapper} from '../NotebookItem/wrapper';
import {NoteWrapper} from '../NoteItem/wrapper';
import TagItem from '../TagItem';
import {Announcement} from './announcement';
import {Empty} from './empty';
import {Footer} from './footer';
import {Header} from './header';
import {SectionHeader} from './section-header';
const heights = {
note: 100,
notebook: 110,
tag: 80,
topic: 80,
header: 35,
};
const TrashI = ({item, index}) => {
return item.itemType === 'note' ? (
) : (
);
};
let renderItems = {
notes: NoteWrapper,
notebooks: NotebookWrapper,
topics: NotebookWrapper,
tags: TagItem,
section: SectionHeader,
trash: TrashI,
};
const SimpleList = ({
listData,
type,
customRefresh,
customRefreshing,
refreshCallback,
sortMenuButton,
jumpToDialog,
placeholderData,
loading,
headerProps = {
heading: 'Home',
},
screen,
}) => {
const [state] = useTracked();
const {colors} = state;
const [dataProvider, setDataProvider] = useState([]);
const scrollRef = useRef();
const [_loading, _setLoading] = useState(true);
const RenderItem = renderItems[type];
const refreshing = false;
useEffect(() => {
if (!loading) {
setDataProvider(
dataProvider.length < 2 &&
listData.length >= 1 &&
SettingsService.get().homepage !== screen
? listData.slice(0, 1)
: listData,
);
if (
!listData ||
listData.length === 0 ||
SettingsService.get().homepage === screen
) {
setTimeout(() => {
_setLoading(false);
}, 1);
return;
}
setTimeout(() => {
setDataProvider(listData);
_setLoading(false);
}, 150);
} else {
setDataProvider([]);
}
}, [loading, listData]);
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%',
backgroundColor: colors.bg,
width: '100%',
minHeight: 1,
minWidth: 1,
};
const _keyExtractor = item => item.id || item.title;
return (
<>
}
ListEmptyComponent={
}
ListFooterComponent={}
ListHeaderComponent={
}
/>
>
);
};
export default SimpleList;