import React from 'react' import {View} from 'react-native' import {observer} from 'mobx-react-lite' import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' import {Text} from 'view/com/util/text/Text' import {Button} from 'view/com/util/forms/Button' import {UserAvatar} from 'view/com/util/UserAvatar' import * as Toast from 'view/com/util/Toast' import {HeartIcon} from 'lib/icons' import {usePalette} from 'lib/hooks/usePalette' import {useCustomFeed} from 'lib/hooks/useCustomFeed' import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' import {makeRecordUri} from 'lib/strings/url-helpers' import {sanitizeHandle} from 'lib/strings/handles' export const RecommendedFeedsItem = observer(function RecommendedFeedsItemImpl({ did, rkey, }: { did: string rkey: string }) { const {isMobile} = useWebMediaQueries() const pal = usePalette('default') const uri = makeRecordUri(did, 'app.bsky.feed.generator', rkey) const item = useCustomFeed(uri) if (!item) return null const onToggle = async () => { if (item.isSaved) { try { await item.unsave() } catch (e) { Toast.show('There was an issue contacting your server') console.error('Failed to unsave feed', {e}) } } else { try { await item.save() await item.pin() } catch (e) { Toast.show('There was an issue contacting your server') console.error('Failed to pin feed', {e}) } } } return ( {item.displayName} by {sanitizeHandle(item.data.creator.handle, '@')} {item.data.description ? ( {item.data.description} ) : null} {item.data.likeCount || 0} ) })