diff --git a/src/view/com/posts/Feed.tsx b/src/view/com/posts/Feed.tsx index 864165edba..a1b714e133 100644 --- a/src/view/com/posts/Feed.tsx +++ b/src/view/com/posts/Feed.tsx @@ -11,6 +11,8 @@ import { import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' import {AtUri, AppBskyFeedGetFeed} from '@atproto/api' +import {useStores} from 'state/index' +import {Haptics} from 'lib/haptics' import {toShareUrl} from 'lib/strings/url-helpers' import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' import {useCustomFeed} from 'lib/hooks/useCustomFeed' @@ -29,6 +31,7 @@ import {TextLink} from '../util/Link' import {makeRecordUri} from 'lib/strings/url-helpers' import {Button} from 'view/com/util/forms/Button' import {CustomFeedContextMenu} from 'view/com/feeds/CustomFeedContextMenu' +import * as Toast from 'view/com/util/Toast' const LOADING_ITEM = {_reactKey: '__loading__'} const EMPTY_FEED_ITEM = {_reactKey: '__empty__'} @@ -286,6 +289,7 @@ function FeedInnerHeader({ params: AppBskyFeedGetFeed.QueryParams showContextMenu?: boolean }) { + const store = useStores() const pal = usePalette('default') const {host, rkey} = new AtUri(params.feed) const uri = makeRecordUri(host, 'app.bsky.feed.generator', rkey) @@ -294,6 +298,20 @@ function FeedInnerHeader({ const {isDesktop} = useWebMediaQueries() const shareUrl = toShareUrl(`/profile/${host}`) + const removeFeed = React.useCallback(async () => { + try { + Haptics.default() + if (feed?.isSaved) { + await feed?.unsave() + } + } catch (err) { + Toast.show( + 'There was an an issue removing this feed. Please check your internet connection and try again.', + ) + store.log.error('Failed to remove feed', {err}) + } + }, [store, feed]) + return ( {error.message} - {error.type === 'upstream' ? ( + {error.type === 'upstream' && feed?.isSaved ? (