From bd730db03ecf90efc66953f222d5a7a43cdefe2f Mon Sep 17 00:00:00 2001 From: Caidan Williams Date: Tue, 26 Aug 2025 14:07:18 -0700 Subject: refactor(feed): remove NoSnippetWrapper from FeedPage in favor of dataSet attribute Replaces NoSnippetWrapper with a dataSet prop on the root View to control the nosnippet attribute for discover feeds. This simplifies the component structure and improves maintainability by reducing unnecessary wrappers. --- src/view/com/feeds/FeedPage.tsx | 91 +++++++++++++++++----------------- src/view/com/util/NoSnippetWrapper.tsx | 29 ----------- 2 files changed, 46 insertions(+), 74 deletions(-) delete mode 100644 src/view/com/util/NoSnippetWrapper.tsx diff --git a/src/view/com/feeds/FeedPage.tsx b/src/view/com/feeds/FeedPage.tsx index 26c28729c..3b4812f1c 100644 --- a/src/view/com/feeds/FeedPage.tsx +++ b/src/view/com/feeds/FeedPage.tsx @@ -18,8 +18,11 @@ import {listenSoftReset} from '#/state/events' import {FeedFeedbackProvider, useFeedFeedback} from '#/state/feed-feedback' import {useSetHomeBadge} from '#/state/home-badge' import {type FeedSourceInfo} from '#/state/queries/feed' -import {RQKEY as FEED_RQKEY} from '#/state/queries/post-feed' -import {type FeedDescriptor, type FeedParams} from '#/state/queries/post-feed' +import { + type FeedDescriptor, + type FeedParams, + RQKEY as FEED_RQKEY, +} from '#/state/queries/post-feed' import {truncateAndInvalidate} from '#/state/queries/util' import {useSession} from '#/state/session' import {useSetMinimalShellMode} from '#/state/shell' @@ -29,7 +32,6 @@ import {FAB} from '../util/fab/FAB' import {type ListMethods} from '../util/List' import {LoadLatestBtn} from '../util/load-latest/LoadLatestBtn' import {MainScrollProvider} from '../util/MainScrollProvider' -import {NoSnippetWrapper} from '../util/NoSnippetWrapper' const POLL_FREQ = 60e3 // 60sec @@ -133,49 +135,48 @@ export function FeedPage({ const shouldPrefetch = isNative && isPageAdjacent return ( - - - - - - - - {(isScrolledDown || hasNew) && ( - + + + - )} + + + {(isScrolledDown || hasNew) && ( + + )} - {hasSession && ( - } - accessibilityRole="button" - accessibilityLabel={_( - msg({message: `New post`, context: 'action'}), - )} - accessibilityHint="" - /> - )} - - + {hasSession && ( + } + accessibilityRole="button" + accessibilityLabel={_(msg({message: `New post`, context: 'action'}))} + accessibilityHint="" + /> + )} + ) } diff --git a/src/view/com/util/NoSnippetWrapper.tsx b/src/view/com/util/NoSnippetWrapper.tsx deleted file mode 100644 index fcf658249..000000000 --- a/src/view/com/util/NoSnippetWrapper.tsx +++ /dev/null @@ -1,29 +0,0 @@ -import {type ViewProps} from 'react-native' -// @ts-expect-error untyped -import {unstable_createElement} from 'react-native-web' - -import {isWeb} from '#/platform/detection' - -interface Props extends ViewProps { - enabled: boolean -} - -/** - * NoSnippetWrapper prevents search engines from displaying snippets of its content. - * - * If running on web and enabled, wraps children in a
with data-nosnippet attribute. - * Otherwise, renders children directly. - * - * @param enabled - Whether to apply the data-nosnippet attribute. - * @param viewProps - Additional props for the wrapper element. - */ -export function NoSnippetWrapper({enabled, ...viewProps}: Props) { - if (isWeb && enabled) { - return unstable_createElement('div', { - ...viewProps, - 'data-nosnippet': '', - }) - } - - return <>{viewProps.children} -} -- cgit 1.4.1