FeedCard & ListCard cleanups (#4644)
* Extract ListCard from FeedCard * Export FeedCard.Action and optionally include in ListCard * Remove list dual usage from most of FeedCard * Update usages of FeedCard and ListCard * Add back list purpose logic * Make Action comp easier to use, clarify list purpose * Rename Action to SaveButton
This commit is contained in:
parent
58a97db5b8
commit
1a037d3542
9 changed files with 198 additions and 97 deletions
|
@ -163,7 +163,7 @@ export const ProfileFeedgens = React.forwardRef<
|
|||
a.px_lg,
|
||||
a.py_lg,
|
||||
]}>
|
||||
<FeedCard.Default type="feed" view={item} />
|
||||
<FeedCard.Default view={item} />
|
||||
</View>
|
||||
)
|
||||
}
|
||||
|
|
|
@ -18,7 +18,7 @@ import {useAnalytics} from 'lib/analytics/analytics'
|
|||
import {FeedLoadingPlaceholder} from '#/view/com/util/LoadingPlaceholder'
|
||||
import {EmptyState} from 'view/com/util/EmptyState'
|
||||
import {atoms as a, useTheme} from '#/alf'
|
||||
import * as FeedCard from '#/components/FeedCard'
|
||||
import * as ListCard from '#/components/ListCard'
|
||||
import {ErrorMessage} from '../util/error/ErrorMessage'
|
||||
import {List, ListRef} from '../util/List'
|
||||
import {LoadMoreRetryBtn} from '../util/LoadMoreRetryBtn'
|
||||
|
@ -172,7 +172,7 @@ export const ProfileLists = React.forwardRef<SectionRef, ProfileListsProps>(
|
|||
a.px_lg,
|
||||
a.py_lg,
|
||||
]}>
|
||||
<FeedCard.Default type="list" view={item} />
|
||||
<ListCard.Default view={item} />
|
||||
</View>
|
||||
)
|
||||
},
|
||||
|
|
|
@ -41,6 +41,7 @@ import hairlineWidth = StyleSheet.hairlineWidth
|
|||
import {Divider} from '#/components/Divider'
|
||||
import * as FeedCard from '#/components/FeedCard'
|
||||
import {ChevronRight_Stroke2_Corner0_Rounded as ChevronRight} from '#/components/icons/Chevron'
|
||||
import * as ListCard from '#/components/ListCard'
|
||||
|
||||
type Props = NativeStackScreenProps<CommonNavigatorParams, 'Feeds'>
|
||||
|
||||
|
@ -495,7 +496,7 @@ export function FeedsScreen(_props: Props) {
|
|||
} else if (item.type === 'popularFeed') {
|
||||
return (
|
||||
<View style={[a.px_lg, a.pt_lg, a.gap_lg]}>
|
||||
<FeedCard.Default type="feed" view={item.feed} />
|
||||
<FeedCard.Default view={item.feed} />
|
||||
<Divider />
|
||||
</View>
|
||||
)
|
||||
|
@ -627,7 +628,7 @@ function FollowingFeed() {
|
|||
fill={t.palette.white}
|
||||
/>
|
||||
</View>
|
||||
<FeedCard.TitleAndByline title={_(msg`Following`)} type="feed" />
|
||||
<FeedCard.TitleAndByline title={_(msg`Following`)} />
|
||||
</FeedCard.Header>
|
||||
</View>
|
||||
)
|
||||
|
@ -639,34 +640,45 @@ function SavedFeed({
|
|||
savedFeed: SavedFeedItem & {type: 'feed' | 'list'}
|
||||
}) {
|
||||
const t = useTheme()
|
||||
const {view: feed} = savedFeed
|
||||
const displayName =
|
||||
savedFeed.type === 'feed' ? savedFeed.view.displayName : savedFeed.view.name
|
||||
|
||||
return (
|
||||
<FeedCard.Link testID={`saved-feed-${feed.displayName}`} {...savedFeed}>
|
||||
const commonStyle = [
|
||||
a.flex_1,
|
||||
a.px_lg,
|
||||
a.py_md,
|
||||
a.border_b,
|
||||
t.atoms.border_contrast_low,
|
||||
]
|
||||
|
||||
return savedFeed.type === 'feed' ? (
|
||||
<FeedCard.Link
|
||||
testID={`saved-feed-${savedFeed.view.displayName}`}
|
||||
{...savedFeed}>
|
||||
{({hovered, pressed}) => (
|
||||
<View
|
||||
style={[
|
||||
a.flex_1,
|
||||
a.px_lg,
|
||||
a.py_md,
|
||||
a.border_b,
|
||||
t.atoms.border_contrast_low,
|
||||
(hovered || pressed) && t.atoms.bg_contrast_25,
|
||||
]}>
|
||||
style={[commonStyle, (hovered || pressed) && t.atoms.bg_contrast_25]}>
|
||||
<FeedCard.Header>
|
||||
<FeedCard.Avatar src={feed.avatar} size={28} />
|
||||
<FeedCard.TitleAndByline
|
||||
title={displayName}
|
||||
type={savedFeed.type}
|
||||
/>
|
||||
<FeedCard.Avatar src={savedFeed.view.avatar} size={28} />
|
||||
<FeedCard.TitleAndByline title={savedFeed.view.displayName} />
|
||||
|
||||
<ChevronRight size="sm" fill={t.atoms.text_contrast_low.color} />
|
||||
</FeedCard.Header>
|
||||
</View>
|
||||
)}
|
||||
</FeedCard.Link>
|
||||
) : (
|
||||
<ListCard.Link testID={`saved-feed-${savedFeed.view.name}`} {...savedFeed}>
|
||||
{({hovered, pressed}) => (
|
||||
<View
|
||||
style={[commonStyle, (hovered || pressed) && t.atoms.bg_contrast_25]}>
|
||||
<ListCard.Header>
|
||||
<ListCard.Avatar src={savedFeed.view.avatar} size={28} />
|
||||
<ListCard.TitleAndByline title={savedFeed.view.name} />
|
||||
|
||||
<ChevronRight size="sm" fill={t.atoms.text_contrast_low.color} />
|
||||
</ListCard.Header>
|
||||
</View>
|
||||
)}
|
||||
</ListCard.Link>
|
||||
)
|
||||
}
|
||||
|
||||
|
|
|
@ -505,7 +505,7 @@ export function Explore() {
|
|||
a.px_lg,
|
||||
a.py_lg,
|
||||
]}>
|
||||
<FeedCard.Default type="feed" view={item.feed} />
|
||||
<FeedCard.Default view={item.feed} />
|
||||
</View>
|
||||
)
|
||||
}
|
||||
|
|
|
@ -306,7 +306,7 @@ let SearchScreenFeedsResults = ({
|
|||
a.px_lg,
|
||||
a.py_lg,
|
||||
]}>
|
||||
<FeedCard.Default type="feed" view={item} />
|
||||
<FeedCard.Default view={item} />
|
||||
</View>
|
||||
)}
|
||||
keyExtractor={item => item.uri}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue