import {NativeStackScreenProps} from '@react-navigation/native-stack' import {usePalette} from 'lib/hooks/usePalette' import {HeartIcon, HeartIconSolid} from 'lib/icons' import {CommonNavigatorParams} from 'lib/routes/types' import {makeRecordUri} from 'lib/strings/url-helpers' import {colors, s} from 'lib/styles' import {observer} from 'mobx-react-lite' import React, {useMemo, useRef} from 'react' import {FlatList, StyleSheet, TouchableOpacity, View} from 'react-native' import {useStores} from 'state/index' import {PostsFeedModel} from 'state/models/feeds/posts' import {useCustomFeed} from 'view/com/algos/useCustomFeed' import {withAuthRequired} from 'view/com/auth/withAuthRequired' import {Feed} from 'view/com/posts/Feed' import {Link} from 'view/com/util/Link' import {UserAvatar} from 'view/com/util/UserAvatar' import {ViewHeader} from 'view/com/util/ViewHeader' import {Button} from 'view/com/util/forms/Button' import {Text} from 'view/com/util/text/Text' type Props = NativeStackScreenProps export const CustomFeed = withAuthRequired( observer(({route}: Props) => { const rootStore = useStores() const {rkey, name, displayName} = route.params const uri = useMemo( () => makeRecordUri(name, 'app.bsky.feed.generator', rkey), [rkey, name], ) const currentFeed = useCustomFeed(uri) const scrollElRef = useRef(null) const algoFeed: PostsFeedModel = useMemo(() => { const feed = new PostsFeedModel(rootStore, 'custom', { feed: uri, }) feed.setup() return feed }, [rootStore, uri]) return ( } extraData={uri} /> ) }), ) const ListHeaderComponent = observer(({uri}: {uri: string}) => { const currentFeed = useCustomFeed(uri) const pal = usePalette('default') const rootStore = useStores() return ( @{currentFeed?.data.creator.handle} {currentFeed?.data.description}