import React, { useEffect, useRef, useState } from 'react'; import { FlatList, RefreshControl, View } from 'react-native'; import { notesnook } from '../../../e2e/test.ids'; import { useTracked } from '../../provider'; import { eSendEvent } from '../../services/EventManager'; import Sync from '../../services/Sync'; import { db } from '../../utils/database'; import { eScrollEvent } from '../../utils/Events'; import JumpToDialog from '../JumpToDialog'; import { NotebookWrapper } from '../NotebookItem/wrapper'; import { NoteWrapper } from '../NoteItem/wrapper'; 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, header: SectionHeader }; const RenderItem = ({item, index,...restArgs}) => { if (!item) return ; const Item = renderItems[item.itemType || item.type] || View; let tags = item.tags ?.slice(0, 3) ?.map(item => { let tag = db.tags.tag(item); if (!tag) return null; return { title: tag.title, id: tag.id, alias: tag.alias }; }) .filter(t => t !== null) || []; if (index == 0) { console.log(restArgs); } 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}) => ( ), [] ); 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={