From f5f34979af6016f280660707a1fcb82b007384d0 Mon Sep 17 00:00:00 2001 From: Samuel Newman Date: Fri, 27 Jun 2025 11:31:48 +0300 Subject: [PATCH] remove unused button, massively simplify --- src/view/com/feeds/FeedSourceCard.tsx | 293 +++++++------------------- 1 file changed, 76 insertions(+), 217 deletions(-) diff --git a/src/view/com/feeds/FeedSourceCard.tsx b/src/view/com/feeds/FeedSourceCard.tsx index 55e02da3ef..bf27d29a9d 100644 --- a/src/view/com/feeds/FeedSourceCard.tsx +++ b/src/view/com/feeds/FeedSourceCard.tsx @@ -1,4 +1,3 @@ -import React from 'react' import { Linking, Pressable, @@ -13,33 +12,23 @@ import { type AppBskyGraphDefs, AtUri, } from '@atproto/api' -import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' -import {msg, Plural, Trans} from '@lingui/macro' -import {useLingui} from '@lingui/react' +import {Plural, Trans} from '@lingui/macro' import {useNavigationDeduped} from '#/lib/hooks/useNavigationDeduped' import {usePalette} from '#/lib/hooks/usePalette' import {sanitizeHandle} from '#/lib/strings/handles' import {s} from '#/lib/styles' -import {logger} from '#/logger' import { type FeedSourceInfo, hydrateFeedGenerator, hydrateList, useFeedSourceInfoQuery, } from '#/state/queries/feed' -import { - useAddSavedFeedsMutation, - usePreferencesQuery, - useRemoveFeedMutation, -} from '#/state/queries/preferences' import {FeedLoadingPlaceholder} from '#/view/com/util/LoadingPlaceholder' import {Text} from '#/view/com/util/text/Text' -import * as Toast from '#/view/com/util/Toast' import {UserAvatar} from '#/view/com/util/UserAvatar' import {atoms as a, useTheme} from '#/alf' import {shouldClickOpenNewTab} from '#/components/Link' -import * as Prompt from '#/components/Prompt' import {RichText} from '#/components/RichText' type FeedSourceCardProps = { @@ -68,7 +57,7 @@ export function FeedSourceCard({ } else { feed = hydrateList(feedData) } - return + return } else { return } @@ -82,93 +71,36 @@ export function FeedSourceCardWithoutData({ uri: feedUri, }) - return + return } export function FeedSourceCardLoaded({ - feedUri, feed, style, - showSaveBtn = false, showDescription = false, showLikes = false, - pinOnSave = false, showMinimalPlaceholder, hideTopBorder, }: { - feedUri: string feed?: FeedSourceInfo style?: StyleProp - showSaveBtn?: boolean showDescription?: boolean showLikes?: boolean - pinOnSave?: boolean showMinimalPlaceholder?: boolean hideTopBorder?: boolean }) { - const {data: preferences} = usePreferencesQuery() const t = useTheme() const pal = usePalette('default') - const {_} = useLingui() - const removePromptControl = Prompt.usePromptControl() + const navigation = useNavigationDeduped() - const {isPending: isAddSavedFeedPending, mutateAsync: addSavedFeeds} = - useAddSavedFeedsMutation() - const {isPending: isRemovePending, mutateAsync: removeFeed} = - useRemoveFeedMutation() - - const savedFeedConfig = preferences?.savedFeeds?.find( - f => f.value === feedUri, - ) - const isSaved = Boolean(savedFeedConfig) - - const onSave = React.useCallback(async () => { - if (!feed || isSaved) return - - try { - await addSavedFeeds([ - { - type: 'feed', - value: feed.uri, - pinned: pinOnSave, - }, - ]) - Toast.show(_(msg`Added to my feeds`)) - } catch (e) { - Toast.show(_(msg`There was an issue contacting your server`), 'xmark') - logger.error('Failed to save feed', {message: e}) - } - }, [_, feed, pinOnSave, addSavedFeeds, isSaved]) - - const onUnsave = React.useCallback(async () => { - if (!savedFeedConfig) return - - try { - await removeFeed(savedFeedConfig) - // await item.unsave() - Toast.show(_(msg`Removed from my feeds`)) - } catch (e) { - Toast.show(_(msg`There was an issue contacting your server`), 'xmark') - logger.error('Failed to unsave feed', {message: e}) - } - }, [_, removeFeed, savedFeedConfig]) - - const onToggleSaved = React.useCallback(async () => { - if (isSaved) { - removePromptControl.open() - } else { - await onSave() - } - }, [isSaved, removePromptControl, onSave]) - /* * LOAD STATE * * This state also captures the scenario where a feed can't load for whatever * reason. */ - if (!feed || !preferences) + if (!feed) return ( {showMinimalPlaceholder ? ( ) : ( - - )} - - {showSaveBtn && ( - - - + )} ) return ( - <> - { - const shouldOpenInNewTab = shouldClickOpenNewTab(e) - if (feed.type === 'feed') { - if (shouldOpenInNewTab) { - Linking.openURL( - `/profile/${feed.creatorDid}/feed/${new AtUri(feed.uri).rkey}`, - ) - } else { - navigation.push('ProfileFeed', { - name: feed.creatorDid, - rkey: new AtUri(feed.uri).rkey, - }) - } - } else if (feed.type === 'list') { - if (shouldOpenInNewTab) { - Linking.openURL( - `/profile/${feed.creatorDid}/lists/${new AtUri(feed.uri).rkey}`, - ) - } else { - navigation.push('ProfileList', { - name: feed.creatorDid, - rkey: new AtUri(feed.uri).rkey, - }) - } + { + const shouldOpenInNewTab = shouldClickOpenNewTab(e) + if (feed.type === 'feed') { + if (shouldOpenInNewTab) { + Linking.openURL( + `/profile/${feed.creatorDid}/feed/${new AtUri(feed.uri).rkey}`, + ) + } else { + navigation.push('ProfileFeed', { + name: feed.creatorDid, + rkey: new AtUri(feed.uri).rkey, + }) } - }} - key={feed.uri}> - - - - - - - {feed.displayName} - - - {feed.type === 'feed' ? ( - Feed by {sanitizeHandle(feed.creatorHandle, '@')} - ) : ( - List by {sanitizeHandle(feed.creatorHandle, '@')} - )} - - - - {showSaveBtn && ( - - - {isSaved ? ( - - ) : ( - - )} - - - )} + } else if (feed.type === 'list') { + if (shouldOpenInNewTab) { + Linking.openURL( + `/profile/${feed.creatorDid}/lists/${new AtUri(feed.uri).rkey}`, + ) + } else { + navigation.push('ProfileList', { + name: feed.creatorDid, + rkey: new AtUri(feed.uri).rkey, + }) + } + } + }} + key={feed.uri}> + + + - - {showDescription && feed.description ? ( - - ) : null} - - {showLikes && feed.type === 'feed' ? ( - - - Liked by{' '} - - + + + {feed.displayName} - ) : null} - + + {feed.type === 'feed' ? ( + Feed by {sanitizeHandle(feed.creatorHandle, '@')} + ) : ( + List by {sanitizeHandle(feed.creatorHandle, '@')} + )} + + + - - + {showDescription && feed.description ? ( + + ) : null} + + {showLikes && feed.type === 'feed' ? ( + + + Liked by{' '} + + + + ) : null} + ) } - -const styles = StyleSheet.create({ - btn: { - paddingVertical: 6, - }, -})