diff --git a/src/components/Post/Embed/FeedEmbed.tsx b/src/components/Post/Embed/FeedEmbed.tsx
index fad4cd4d8b..f8fc169d4b 100644
--- a/src/components/Post/Embed/FeedEmbed.tsx
+++ b/src/components/Post/Embed/FeedEmbed.tsx
@@ -1,10 +1,9 @@
import React from 'react'
-import {StyleSheet} from 'react-native'
import {moderateFeedGenerator} from '@atproto/api'
-import {usePalette} from '#/lib/hooks/usePalette'
import {useModerationOpts} from '#/state/preferences/moderation-opts'
import {FeedSourceCard} from '#/view/com/feeds/FeedSourceCard'
+import {atoms as a, useTheme} from '#/alf'
import {ContentHider} from '#/components/moderation/ContentHider'
import {type EmbedType} from '#/types/bsky/post'
import {type CommonProps} from './types'
@@ -14,11 +13,18 @@ export function FeedEmbed({
}: CommonProps & {
embed: EmbedType<'feed'>
}) {
- const pal = usePalette('default')
+ const t = useTheme()
return (
)
@@ -41,12 +47,3 @@ export function ModeratedFeedEmbed({
)
}
-
-const styles = StyleSheet.create({
- customFeedOuter: {
- borderWidth: StyleSheet.hairlineWidth,
- borderRadius: 8,
- paddingHorizontal: 12,
- paddingVertical: 12,
- },
-})
diff --git a/src/view/com/feeds/FeedSourceCard.tsx b/src/view/com/feeds/FeedSourceCard.tsx
index 3a658755a8..2f58afaabf 100644
--- a/src/view/com/feeds/FeedSourceCard.tsx
+++ b/src/view/com/feeds/FeedSourceCard.tsx
@@ -2,12 +2,17 @@ import React from 'react'
import {
Linking,
Pressable,
- StyleProp,
+ type StyleProp,
StyleSheet,
View,
- ViewStyle,
+ type ViewStyle,
} from 'react-native'
-import {AtUri} from '@atproto/api'
+import {
+ type $Typed,
+ AppBskyFeedDefs,
+ 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'
@@ -17,34 +22,31 @@ import {usePalette} from '#/lib/hooks/usePalette'
import {sanitizeHandle} from '#/lib/strings/handles'
import {s} from '#/lib/styles'
import {logger} from '#/logger'
-import {FeedSourceInfo, useFeedSourceInfoQuery} from '#/state/queries/feed'
+import {
+ type FeedSourceInfo,
+ hydrateFeedGenerator,
+ hydrateList,
+ useFeedSourceInfoQuery,
+} from '#/state/queries/feed'
import {
useAddSavedFeedsMutation,
usePreferencesQuery,
- UsePreferencesQueryResponse,
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 {useTheme} from '#/alf'
-import {atoms as a} from '#/alf'
+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'
-import {Text} from '../util/text/Text'
-import {UserAvatar} from '../util/UserAvatar'
-export function FeedSourceCard({
- feedUri,
- style,
- showSaveBtn = false,
- showDescription = false,
- showLikes = false,
- pinOnSave = false,
- showMinimalPlaceholder,
- hideTopBorder,
-}: {
+type FeedSourceCardProps = {
feedUri: string
+ feedData?:
+ | $Typed
+ | $Typed
style?: StyleProp
showSaveBtn?: boolean
showDescription?: boolean
@@ -52,30 +54,40 @@ export function FeedSourceCard({
pinOnSave?: boolean
showMinimalPlaceholder?: boolean
hideTopBorder?: boolean
-}) {
- const {data: preferences} = usePreferencesQuery()
- const {data: feed} = useFeedSourceInfoQuery({uri: feedUri})
+}
- return (
-
- )
+export function FeedSourceCard({
+ feedUri,
+ feedData,
+ ...props
+}: FeedSourceCardProps) {
+ if (feedData) {
+ let feed: FeedSourceInfo
+ if (AppBskyFeedDefs.isGeneratorView(feedData)) {
+ feed = hydrateFeedGenerator(feedData)
+ } else {
+ feed = hydrateList(feedData)
+ }
+ return
+ } else {
+ return
+ }
+}
+
+export function FeedSourceCardWithoutData({
+ feedUri,
+ ...props
+}: Omit) {
+ const {data: feed} = useFeedSourceInfoQuery({
+ uri: feedUri,
+ })
+
+ return
}
export function FeedSourceCardLoaded({
feedUri,
feed,
- preferences,
style,
showSaveBtn = false,
showDescription = false,
@@ -86,7 +98,6 @@ export function FeedSourceCardLoaded({
}: {
feedUri: string
feed?: FeedSourceInfo
- preferences?: UsePreferencesQueryResponse
style?: StyleProp
showSaveBtn?: boolean
showDescription?: boolean
@@ -95,6 +106,7 @@ export function FeedSourceCardLoaded({
showMinimalPlaceholder?: boolean
hideTopBorder?: boolean
}) {
+ const {data: preferences} = usePreferencesQuery()
const t = useTheme()
const pal = usePalette('default')
const {_} = useLingui()
@@ -248,7 +260,7 @@ export function FeedSourceCardLoaded({
{feed.displayName}
-
+
{feed.type === 'feed' ? (
Feed by {sanitizeHandle(feed.creatorHandle, '@')}
) : (