[APP-2160] Extract StandardSiteEmbed type guards into utils.ts

Move isStandardSiteEmbed alongside a new isStandardSitePublicationEmbed
helper. The publication check now requires at least one publication ref
and zero document refs, replacing a tautological condition that also
returned true for empty associatedRefs arrays.
This commit is contained in:
Eric Bailey
2026-05-22 14:23:14 -05:00
parent 726c5b9a2d
commit 785fc26ec4
4 changed files with 26 additions and 19 deletions
@@ -29,6 +29,7 @@ import {Link} from '#/components/Link'
import {MediaInsetBorder} from '#/components/MediaInsetBorder'
import {PublicationMetaRow} from '#/components/Post/Embed/StandardSiteEmbed/PublicationMetaRow'
import {StandardSiteThemeProvider} from '#/components/Post/Embed/StandardSiteEmbed/StandardSiteThemeProvider'
import {isStandardSitePublicationEmbed} from '#/components/Post/Embed/StandardSiteEmbed/utils'
import {Text} from '#/components/Typography'
import {IS_NATIVE} from '#/env'
@@ -38,12 +39,6 @@ export type ThemeColors = {
accentForeground: string
}
export function isStandardSiteEmbed(view: AppBskyEmbedExternal.ViewExternal) {
return view.associatedRefs?.some(ref =>
new AtUri(ref.uri).collection.startsWith('site.standard.'),
)
}
export function useStandardSitePublisherConfig(
view: AppBskyEmbedExternal.ViewExternal,
) {
@@ -102,11 +97,7 @@ export const StandardSiteEmbed = ({
const isStandard = view.associatedRefs?.some(ref =>
new AtUri(ref.uri).collection.startsWith('site.standard.'),
)
const isStandardPublication = view.associatedRefs?.every(
ref =>
new AtUri(ref.uri).collection === 'site.standard.publication' &&
new AtUri(ref.uri).collection !== 'site.standard.document',
)
const isStandardPublication = isStandardSitePublicationEmbed(view)
const themeColors = useMemo(() => {
let custom = false
let accent = t.atoms.text.color
@@ -0,0 +1,20 @@
import {type AppBskyEmbedExternal, AtUri} from '@atproto/api'
export function isStandardSiteEmbed(view: AppBskyEmbedExternal.ViewExternal) {
return view.associatedRefs?.some(ref =>
new AtUri(ref.uri).collection.startsWith('site.standard.'),
)
}
export function isStandardSitePublicationEmbed(
view: AppBskyEmbedExternal.ViewExternal,
) {
return (
view.associatedRefs?.some(
ref => new AtUri(ref.uri).collection === 'site.standard.publication',
) &&
view.associatedRefs.every(
ref => new AtUri(ref.uri).collection !== 'site.standard.document',
)
)
}
+2 -4
View File
@@ -22,10 +22,8 @@ import {useInteractionState} from '#/components/hooks/useInteractionState'
import {GalleryBleed} from '#/components/images/Gallery'
import {ContentHider} from '#/components/moderation/ContentHider'
import {PostAlerts} from '#/components/moderation/PostAlerts'
import {
isStandardSiteEmbed,
StandardSiteEmbed,
} from '#/components/Post/Embed/StandardSiteEmbed'
import {StandardSiteEmbed} from '#/components/Post/Embed/StandardSiteEmbed'
import {isStandardSiteEmbed} from '#/components/Post/Embed/StandardSiteEmbed/utils'
import {RichText} from '#/components/RichText'
import {Embed as StarterPackCard} from '#/components/StarterPack/StarterPackCard'
import {SubtleHover} from '#/components/SubtleHover'
+2 -4
View File
@@ -12,10 +12,8 @@ import {Loader} from '#/components/Loader'
import {ExternalEmbed} from '#/components/Post/Embed/ExternalEmbed'
import {ModeratedFeedEmbed} from '#/components/Post/Embed/FeedEmbed'
import {ModeratedListEmbed} from '#/components/Post/Embed/ListEmbed'
import {
isStandardSiteEmbed,
StandardSiteEmbed,
} from '#/components/Post/Embed/StandardSiteEmbed'
import {StandardSiteEmbed} from '#/components/Post/Embed/StandardSiteEmbed'
import {isStandardSiteEmbed} from '#/components/Post/Embed/StandardSiteEmbed/utils'
import {Embed as StarterPackEmbed} from '#/components/StarterPack/StarterPackCard'
import {Text} from '#/components/Typography'
import {type Gif} from '#/features/gifPicker/types'