import PropTypes from 'prop-types' import React, { useEffect } from 'react' import { ActivityIndicator, FlatList, View } from 'react-native' import { connect, useSelector, useDispatch } from 'react-redux' import TootTimeline from 'src/components/TootTimeline' import { fetch, getToots, getStatus } from './timelineSlice' export default function Timeline ({ remote, endpoint, local }) { const dispatch = useDispatch() const toots = useSelector(state => getToots(state)({ remote, endpoint, local }) ) const status = useSelector(state => getStatus(state)({ remote, endpoint, local }) ) useEffect(() => { if (status === 'idle') { dispatch(fetch({ remote, endpoint, local })) } }, [status, dispatch]) let content if (status === 'error') { content = Error message } else { content = ( <> id} renderItem={TootTimeline} onRefresh={() => dispatch( fetch({ remote, endpoint, local, id: toots[0].id, newer: true }) ) } refreshing={status === 'loading'} onEndReached={() => dispatch( fetch({ remote, endpoint, local, id: toots[toots.length - 1].id }) ) } onEndReachedThreshold={0.5} style={{ height: '100%', width: '100%' }} /> {status === 'loading' && } ) } return {content} } Timeline.propTypes = { remote: PropTypes.bool, endpoint: PropTypes.string.isRequired, local: PropTypes.bool }