import React, {useEffect} from 'react' import {observer} from 'mobx-react-lite' import {ActivityIndicator, RefreshControl, StyleSheet, View} from 'react-native' import {CenteredView, FlatList} from '../util/Views' import {LikesModel, LikeItem} from 'state/models/lists/likes' import {ErrorMessage} from '../util/error/ErrorMessage' import {ProfileCardWithFollowBtn} from '../profile/ProfileCard' import {useStores} from 'state/index' import {usePalette} from 'lib/hooks/usePalette' import {logger} from '#/logger' export const PostLikedBy = observer(function PostLikedByImpl({ uri, }: { uri: string }) { const pal = usePalette('default') const store = useStores() const view = React.useMemo(() => new LikesModel(store, {uri}), [store, uri]) useEffect(() => { view .loadMore() .catch(err => logger.error('Failed to fetch likes', {error: err})) }, [view]) const onRefresh = () => { view.refresh() } const onEndReached = () => { view .loadMore() .catch(err => logger.error('Failed to load more likes', {error: err})) } if (!view.hasLoaded) { return ( ) } // error // = if (view.hasError) { return ( ) } // loaded // = const renderItem = ({item}: {item: LikeItem}) => ( ) return ( item.actor.did} refreshControl={ } onEndReached={onEndReached} renderItem={renderItem} initialNumToRender={15} // FIXME(dan) // eslint-disable-next-line react/no-unstable-nested-components ListFooterComponent={() => ( {view.isLoading && } )} extraData={view.isLoading} // @ts-ignore our .web version only -prf desktopFixedHeight /> ) }) const styles = StyleSheet.create({ footer: { height: 200, paddingTop: 20, }, })