From 191b0261cb2ba09207d5e108f7cf655fa2f473c8 Mon Sep 17 00:00:00 2001 From: Eric Bailey Date: Sat, 1 Mar 2025 14:44:05 -0600 Subject: [PATCH] Split out ListEmbed and FeedEmbed --- src/components/Post/Embed/FeedEmbed.tsx | 30 +++++++++++++ src/components/Post/Embed/ListEmbed.tsx | 20 +++++++++ src/components/Post/Embed/index.tsx | 57 +++---------------------- src/components/Post/Embed/types.ts | 16 +++++++ 4 files changed, 71 insertions(+), 52 deletions(-) create mode 100644 src/components/Post/Embed/FeedEmbed.tsx create mode 100644 src/components/Post/Embed/ListEmbed.tsx create mode 100644 src/components/Post/Embed/types.ts diff --git a/src/components/Post/Embed/FeedEmbed.tsx b/src/components/Post/Embed/FeedEmbed.tsx new file mode 100644 index 0000000000..8431fc7c08 --- /dev/null +++ b/src/components/Post/Embed/FeedEmbed.tsx @@ -0,0 +1,30 @@ +import {StyleSheet} from 'react-native' + +import {usePalette} from '#/lib/hooks/usePalette' +import {FeedSourceCard} from '#/view/com/feeds/FeedSourceCard' +import {EmbedType} from '#/types/bsky/post' +import {CommonProps} from './types' + +export function FeedEmbed({ + embed, +}: CommonProps & { + embed: EmbedType<'feed'> +}) { + const pal = usePalette('default') + return ( + + ) +} + +const styles = StyleSheet.create({ + customFeedOuter: { + borderWidth: StyleSheet.hairlineWidth, + borderRadius: 8, + paddingHorizontal: 12, + paddingVertical: 12, + }, +}) diff --git a/src/components/Post/Embed/ListEmbed.tsx b/src/components/Post/Embed/ListEmbed.tsx new file mode 100644 index 0000000000..947b4b9a28 --- /dev/null +++ b/src/components/Post/Embed/ListEmbed.tsx @@ -0,0 +1,20 @@ +import {View} from 'react-native' + +import {atoms as a, useTheme} from '#/alf' +import * as ListCard from '#/components/ListCard' +import {EmbedType} from '#/types/bsky/post' +import {CommonProps} from './types' + +export function ListEmbed({ + embed, +}: CommonProps & { + embed: EmbedType<'list'> +}) { + const t = useTheme() + return ( + + + + ) +} diff --git a/src/components/Post/Embed/index.tsx b/src/components/Post/Embed/index.tsx index 1986710df6..98d7de1ffd 100644 --- a/src/components/Post/Embed/index.tsx +++ b/src/components/Post/Embed/index.tsx @@ -1,11 +1,5 @@ import React from 'react' -import { - InteractionManager, - StyleProp, - StyleSheet, - View, - ViewStyle, -} from 'react-native' +import {InteractionManager, StyleSheet, View} from 'react-native' import {MeasuredDimensions, runOnJS, runOnUI} from 'react-native-reanimated' import {Image} from 'expo-image' import { @@ -14,7 +8,6 @@ import { AppBskyFeedPost, AtUri, moderatePost, - ModerationDecision, RichText as RichTextAPI, } from '@atproto/api' import {Trans} from '@lingui/macro' @@ -28,7 +21,6 @@ import {useLightboxControls} from '#/state/lightbox' import {useModerationOpts} from '#/state/preferences/moderation-opts' import {unstableCacheProfileView} from '#/state/queries/profile' import {useSession} from '#/state/session' -import {FeedSourceCard} from '#/view/com/feeds/FeedSourceCard' import {Dimensions} from '#/view/com/lightbox/ImageViewing/@types' import {AutoSizedImage} from '#/view/com/util/images/AutoSizedImage' import {ImageLayoutGrid} from '#/view/com/util/images/ImageLayoutGrid' @@ -42,7 +34,6 @@ import {VideoEmbed} from '#/view/com/util/post-embeds/VideoEmbed' import {PostMeta} from '#/view/com/util/PostMeta' import {Text} from '#/view/com/util/text/Text' import {atoms as a, useTheme} from '#/alf' -import * as ListCard from '#/components/ListCard' import {ContentHider} from '#/components/moderation/ContentHider' import {PostAlerts} from '#/components/moderation/PostAlerts' import {RichText} from '#/components/RichText' @@ -50,20 +41,11 @@ import {Embed as StarterPackCard} from '#/components/StarterPack/StarterPackCard import {SubtleWebHover} from '#/components/SubtleWebHover' import * as bsky from '#/types/bsky' import {Embed as TEmbed, EmbedType, parseEmbed} from '#/types/bsky/post' +import {FeedEmbed} from './FeedEmbed' +import {ListEmbed} from './ListEmbed' +import {CommonProps, EmbedProps} from './types' -export type CommonProps = { - moderation?: ModerationDecision - onOpen?: () => void - style?: StyleProp - allowNestedQuotes?: boolean - viewContext?: PostEmbedViewContext -} - -export type PostEmbedProps = CommonProps & { - embed?: AppBskyFeedDefs.PostView['embed'] -} - -export function Embed({embed: rawEmbed, ...rest}: PostEmbedProps) { +export function Embed({embed: rawEmbed, ...rest}: EmbedProps) { const embed = parseEmbed(rawEmbed) switch (embed.type) { @@ -198,35 +180,6 @@ function RecordEmbed({ } } -export function ListEmbed({ - embed, -}: CommonProps & { - embed: EmbedType<'list'> -}) { - const t = useTheme() - return ( - - - - ) -} - -export function FeedEmbed({ - embed, -}: CommonProps & { - embed: EmbedType<'feed'> -}) { - const pal = usePalette('default') - return ( - - ) -} - export function ImagesEmbed({ embed, ...rest diff --git a/src/components/Post/Embed/types.ts b/src/components/Post/Embed/types.ts new file mode 100644 index 0000000000..21829f61f9 --- /dev/null +++ b/src/components/Post/Embed/types.ts @@ -0,0 +1,16 @@ +import {StyleProp, ViewStyle} from 'react-native' +import {AppBskyFeedDefs, ModerationDecision} from '@atproto/api' + +import {PostEmbedViewContext} from '#/view/com/util/post-embeds/types' + +export type CommonProps = { + moderation?: ModerationDecision + onOpen?: () => void + style?: StyleProp + allowNestedQuotes?: boolean + viewContext?: PostEmbedViewContext +} + +export type EmbedProps = CommonProps & { + embed?: AppBskyFeedDefs.PostView['embed'] +}