diff options
author | dan <dan.abramov@gmail.com> | 2024-06-27 01:07:56 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-06-27 01:07:56 +0100 |
commit | da4dfeb9cf6506ade2a9619921de128458c4d0d2 (patch) | |
tree | e4e5a4a0c85c7f4d88941673887df333f0b99809 /src/components/StarterPack/Main/PostsList.tsx | |
parent | 3b0a177544bb6c7c608cd94d03156b63ad57ef45 (diff) | |
download | voidsky-da4dfeb9cf6506ade2a9619921de128458c4d0d2.tar.zst |
[Starter Packs] Posts tab (#4660)
* [Starter Packs] Posts tab * oops
Diffstat (limited to 'src/components/StarterPack/Main/PostsList.tsx')
-rw-r--r-- | src/components/StarterPack/Main/PostsList.tsx | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/src/components/StarterPack/Main/PostsList.tsx b/src/components/StarterPack/Main/PostsList.tsx new file mode 100644 index 000000000..c19c6bc63 --- /dev/null +++ b/src/components/StarterPack/Main/PostsList.tsx @@ -0,0 +1,51 @@ +import React, {useCallback} from 'react' +import {View} from 'react-native' +import {msg} from '@lingui/macro' +import {useLingui} from '@lingui/react' + +import {FeedDescriptor} from '#/state/queries/post-feed' +import {isNative} from 'platform/detection' +import {Feed} from 'view/com/posts/Feed' +import {EmptyState} from 'view/com/util/EmptyState' +import {ListRef} from 'view/com/util/List' +import {SectionRef} from '#/screens/Profile/Sections/types' + +interface ProfilesListProps { + listUri: string + headerHeight: number + scrollElRef: ListRef +} + +export const PostsList = React.forwardRef<SectionRef, ProfilesListProps>( + function PostsListImpl({listUri, headerHeight, scrollElRef}, ref) { + const feed: FeedDescriptor = `list|${listUri}|as_following` + const {_} = useLingui() + + const onScrollToTop = useCallback(() => { + scrollElRef.current?.scrollToOffset({ + animated: isNative, + offset: -headerHeight, + }) + }, [scrollElRef, headerHeight]) + + React.useImperativeHandle(ref, () => ({ + scrollToTop: onScrollToTop, + })) + + const renderPostsEmpty = useCallback(() => { + return <EmptyState icon="hashtag" message={_(msg`This feed is empty.`)} /> + }, [_]) + + return ( + <View> + <Feed + feed={feed} + pollInterval={60e3} + scrollElRef={scrollElRef} + renderEmptyState={renderPostsEmpty} + headerOffset={headerHeight} + /> + </View> + ) + }, +) |