diff options
author | dan <dan.abramov@gmail.com> | 2023-11-21 22:42:30 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-11-21 22:42:30 +0000 |
commit | 4c4ba553bdc4029e78eaf2ccf0f9df12e41a1b01 (patch) | |
tree | e97890d72da1fd0a2c10cc501f530a04dae3157a /src/view | |
parent | f18b9b32b0d296c8d19dc06956699f95c0af9be2 (diff) | |
download | voidsky-4c4ba553bdc4029e78eaf2ccf0f9df12e41a1b01.tar.zst |
Shadow refactoring and improvements (#1959)
* Make shadow a type-only concept * Prevent unnecessary init state recalc * Use derived state instead of effects * Batch emitter updates * Use object first seen time instead of dataUpdatedAt * Stop threading dataUpdatedAt through * Use same value consistently
Diffstat (limited to 'src/view')
22 files changed, 30 insertions, 141 deletions
diff --git a/src/view/com/auth/onboarding/RecommendedFollows.tsx b/src/view/com/auth/onboarding/RecommendedFollows.tsx index 7bf8c97e4..372bbec6a 100644 --- a/src/view/com/auth/onboarding/RecommendedFollows.tsx +++ b/src/view/com/auth/onboarding/RecommendedFollows.tsx @@ -24,7 +24,7 @@ export function RecommendedFollows({next}: Props) { const pal = usePalette('default') const {_} = useLingui() const {isTabletOrMobile} = useWebMediaQueries() - const {data: suggestedFollows, dataUpdatedAt} = useSuggestedFollowsQuery() + const {data: suggestedFollows} = useSuggestedFollowsQuery() const getSuggestedFollowsByActor = useGetSuggestedFollowersByActor() const [additionalSuggestions, setAdditionalSuggestions] = React.useState<{ [did: string]: AppBskyActorDefs.ProfileView[] @@ -162,7 +162,6 @@ export function RecommendedFollows({next}: Props) { renderItem={({item}) => ( <RecommendedFollowsItem profile={item} - dataUpdatedAt={dataUpdatedAt} onFollowStateChange={onFollowStateChange} moderation={moderateProfile(item, moderationOpts)} /> @@ -197,7 +196,6 @@ export function RecommendedFollows({next}: Props) { renderItem={({item}) => ( <RecommendedFollowsItem profile={item} - dataUpdatedAt={dataUpdatedAt} onFollowStateChange={onFollowStateChange} moderation={moderateProfile(item, moderationOpts)} /> diff --git a/src/view/com/auth/onboarding/RecommendedFollowsItem.tsx b/src/view/com/auth/onboarding/RecommendedFollowsItem.tsx index eadc3caff..93c515f38 100644 --- a/src/view/com/auth/onboarding/RecommendedFollowsItem.tsx +++ b/src/view/com/auth/onboarding/RecommendedFollowsItem.tsx @@ -18,7 +18,6 @@ import {logger} from '#/logger' type Props = { profile: AppBskyActorDefs.ProfileViewBasic - dataUpdatedAt: number moderation: ProfileModeration onFollowStateChange: (props: { did: string @@ -28,13 +27,12 @@ type Props = { export function RecommendedFollowsItem({ profile, - dataUpdatedAt, moderation, onFollowStateChange, }: React.PropsWithChildren<Props>) { const pal = usePalette('default') const {isMobile} = useWebMediaQueries() - const shadowedProfile = useProfileShadow(profile, dataUpdatedAt) + const shadowedProfile = useProfileShadow(profile) return ( <Animated.View diff --git a/src/view/com/lists/ListMembers.tsx b/src/view/com/lists/ListMembers.tsx index 940761e31..4a25c53e6 100644 --- a/src/view/com/lists/ListMembers.tsx +++ b/src/view/com/lists/ListMembers.tsx @@ -64,7 +64,6 @@ export function ListMembers({ const { data, - dataUpdatedAt, isFetching, isFetched, isError, @@ -185,7 +184,6 @@ export function ListMembers({ (item as AppBskyGraphDefs.ListItemView).subject.handle }`} profile={(item as AppBskyGraphDefs.ListItemView).subject} - dataUpdatedAt={dataUpdatedAt} renderButton={renderMemberButton} style={{paddingHorizontal: isMobile ? 8 : 14, paddingVertical: 4}} /> @@ -198,7 +196,6 @@ export function ListMembers({ onPressTryAgain, onPressRetryLoadMore, isMobile, - dataUpdatedAt, ], ) diff --git a/src/view/com/modals/ProfilePreview.tsx b/src/view/com/modals/ProfilePreview.tsx index 8a505397a..edfbf6a82 100644 --- a/src/view/com/modals/ProfilePreview.tsx +++ b/src/view/com/modals/ProfilePreview.tsx @@ -22,7 +22,6 @@ export function Component({did}: {did: string}) { const moderationOpts = useModerationOpts() const { data: profile, - dataUpdatedAt, error: profileError, refetch: refetchProfile, isFetching: isFetchingProfile, @@ -51,13 +50,7 @@ export function Component({did}: {did: string}) { ) } if (profile && moderationOpts) { - return ( - <ComponentLoaded - profile={profile} - dataUpdatedAt={dataUpdatedAt} - moderationOpts={moderationOpts} - /> - ) + return <ComponentLoaded profile={profile} moderationOpts={moderationOpts} /> } // should never happen return ( @@ -71,15 +64,13 @@ export function Component({did}: {did: string}) { function ComponentLoaded({ profile: profileUnshadowed, - dataUpdatedAt, moderationOpts, }: { profile: AppBskyActorDefs.ProfileViewDetailed - dataUpdatedAt: number moderationOpts: ModerationOpts }) { const pal = usePalette('default') - const profile = useProfileShadow(profileUnshadowed, dataUpdatedAt) + const profile = useProfileShadow(profileUnshadowed) const {screen} = useAnalytics() const moderation = React.useMemo( () => moderateProfile(profile, moderationOpts), diff --git a/src/view/com/notifications/Feed.tsx b/src/view/com/notifications/Feed.tsx index 2dac75e3c..ba88f78c0 100644 --- a/src/view/com/notifications/Feed.tsx +++ b/src/view/com/notifications/Feed.tsx @@ -38,7 +38,6 @@ export function Feed({ const {markAllRead} = useUnreadNotificationsApi() const { data, - dataUpdatedAt, isLoading, isFetching, isFetched, @@ -132,15 +131,9 @@ export function Feed({ } else if (item === LOADING_ITEM) { return <NotificationFeedLoadingPlaceholder /> } - return ( - <FeedItem - item={item} - dataUpdatedAt={dataUpdatedAt} - moderationOpts={moderationOpts!} - /> - ) + return <FeedItem item={item} moderationOpts={moderationOpts!} /> }, - [onPressRetryLoadMore, dataUpdatedAt, moderationOpts], + [onPressRetryLoadMore, moderationOpts], ) const showHeaderSpinner = !isPTRing && isFetching && !isLoading diff --git a/src/view/com/notifications/FeedItem.tsx b/src/view/com/notifications/FeedItem.tsx index 75d44a2fc..aaa2ea2c6 100644 --- a/src/view/com/notifications/FeedItem.tsx +++ b/src/view/com/notifications/FeedItem.tsx @@ -58,11 +58,9 @@ interface Author { let FeedItem = ({ item, - dataUpdatedAt, moderationOpts, }: { item: FeedNotification - dataUpdatedAt: number moderationOpts: ModerationOpts }): React.ReactNode => { const pal = usePalette('default') @@ -135,7 +133,6 @@ let FeedItem = ({ accessible={false}> <Post post={item.subject} - dataUpdatedAt={dataUpdatedAt} style={ item.notification.isRead ? undefined diff --git a/src/view/com/post-thread/PostLikedBy.tsx b/src/view/com/post-thread/PostLikedBy.tsx index d3b5ae47b..60afe1f9c 100644 --- a/src/view/com/post-thread/PostLikedBy.tsx +++ b/src/view/com/post-thread/PostLikedBy.tsx @@ -20,7 +20,6 @@ export function PostLikedBy({uri}: {uri: string}) { } = useResolveUriQuery(uri) const { data, - dataUpdatedAt, isFetching, isFetched, isFetchingNextPage, @@ -55,18 +54,11 @@ export function PostLikedBy({uri}: {uri: string}) { } }, [isFetching, hasNextPage, isError, fetchNextPage]) - const renderItem = useCallback( - ({item}: {item: GetLikes.Like}) => { - return ( - <ProfileCardWithFollowBtn - key={item.actor.did} - profile={item.actor} - dataUpdatedAt={dataUpdatedAt} - /> - ) - }, - [dataUpdatedAt], - ) + const renderItem = useCallback(({item}: {item: GetLikes.Like}) => { + return ( + <ProfileCardWithFollowBtn key={item.actor.did} profile={item.actor} /> + ) + }, []) if (isFetchingResolvedUri || !isFetched) { return ( diff --git a/src/view/com/post-thread/PostRepostedBy.tsx b/src/view/com/post-thread/PostRepostedBy.tsx index 67c043a21..1162fec40 100644 --- a/src/view/com/post-thread/PostRepostedBy.tsx +++ b/src/view/com/post-thread/PostRepostedBy.tsx @@ -20,7 +20,6 @@ export function PostRepostedBy({uri}: {uri: string}) { } = useResolveUriQuery(uri) const { data, - dataUpdatedAt, isFetching, isFetched, isFetchingNextPage, @@ -57,15 +56,9 @@ export function PostRepostedBy({uri}: {uri: string}) { const renderItem = useCallback( ({item}: {item: ActorDefs.ProfileViewBasic}) => { - return ( - <ProfileCardWithFollowBtn - key={item.did} - profile={item} - dataUpdatedAt={dataUpdatedAt} - /> - ) + return <ProfileCardWithFollowBtn key={item.did} profile={item} /> }, - [dataUpdatedAt], + [], ) if (isFetchingResolvedUri || !isFetched) { diff --git a/src/view/com/post-thread/PostThread.tsx b/src/view/com/post-thread/PostThread.tsx index 1c9f2c16f..55448fcc9 100644 --- a/src/view/com/post-thread/PostThread.tsx +++ b/src/view/com/post-thread/PostThread.tsx @@ -73,7 +73,6 @@ export function PostThread({ refetch, isRefetching, data: thread, - dataUpdatedAt, } = usePostThreadQuery(uri) const {data: preferences} = usePreferencesQuery() const rootPost = thread?.type === 'post' ? thread.post : undefined @@ -111,7 +110,6 @@ export function PostThread({ <PostThreadLoaded thread={thread} isRefetching={isRefetching} - dataUpdatedAt={dataUpdatedAt} threadViewPrefs={preferences.threadViewPrefs} onRefresh={refetch} onPressReply={onPressReply} @@ -122,14 +120,12 @@ export function PostThread({ function PostThreadLoaded({ thread, isRefetching, - dataUpdatedAt, threadViewPrefs, onRefresh, onPressReply, }: { thread: ThreadNode isRefetching: boolean - dataUpdatedAt: number threadViewPrefs: UsePreferencesQueryResponse['threadViewPrefs'] onRefresh: () => void onPressReply: () => void @@ -295,7 +291,6 @@ function PostThreadLoaded({ <PostThreadItem post={item.post} record={item.record} - dataUpdatedAt={dataUpdatedAt} treeView={threadViewPrefs.lab_treeViewEnabled || false} depth={item.ctx.depth} isHighlightedPost={item.ctx.isHighlightedPost} @@ -322,7 +317,6 @@ function PostThreadLoaded({ posts, onRefresh, threadViewPrefs.lab_treeViewEnabled, - dataUpdatedAt, _, ], ) diff --git a/src/view/com/post-thread/PostThreadItem.tsx b/src/view/com/post-thread/PostThreadItem.tsx index a4534b887..a4b7a4a9c 100644 --- a/src/view/com/post-thread/PostThreadItem.tsx +++ b/src/view/com/post-thread/PostThreadItem.tsx @@ -45,7 +45,6 @@ import {Shadow, usePostShadow, POST_TOMBSTONE} from '#/state/cache/post-shadow' export function PostThreadItem({ post, record, - dataUpdatedAt, treeView, depth, isHighlightedPost, @@ -57,7 +56,6 @@ export function PostThreadItem({ }: { post: AppBskyFeedDefs.PostView record: AppBskyFeedPost.Record - dataUpdatedAt: number treeView: boolean depth: number isHighlightedPost?: boolean @@ -68,7 +66,7 @@ export function PostThreadItem({ onPostReply: () => void }) { const moderationOpts = useModerationOpts() - const postShadowed = usePostShadow(post, dataUpdatedAt) + const postShadowed = usePostShadow(post) const richText = useMemo( () => new RichTextAPI({ diff --git a/src/view/com/post/Post.tsx b/src/view/com/post/Post.tsx index 00dd4419f..2e8019e71 100644 --- a/src/view/com/post/Post.tsx +++ b/src/view/com/post/Post.tsx @@ -30,12 +30,10 @@ import {Shadow, usePostShadow, POST_TOMBSTONE} from '#/state/cache/post-shadow' export function Post({ post, - dataUpdatedAt, showReplyLine, style, }: { post: AppBskyFeedDefs.PostView - dataUpdatedAt: number showReplyLine?: boolean style?: StyleProp<ViewStyle> }) { @@ -48,7 +46,7 @@ export function Post({ : undefined, [post], ) - const postShadowed = usePostShadow(post, dataUpdatedAt) + const postShadowed = usePostShadow(post) const richText = useMemo( () => record diff --git a/src/view/com/posts/Feed.tsx b/src/view/com/posts/Feed.tsx index cd4560c13..fc6d77696 100644 --- a/src/view/com/posts/Feed.tsx +++ b/src/view/com/posts/Feed.tsx @@ -76,7 +76,6 @@ let Feed = ({ const opts = React.useMemo(() => ({enabled}), [enabled]) const { data, - dataUpdatedAt, isFetching, isFetched, isError, @@ -200,7 +199,6 @@ let Feed = ({ return ( <FeedSlice slice={item} - dataUpdatedAt={dataUpdatedAt} // we check for this before creating the feedItems array moderationOpts={moderationOpts!} /> @@ -208,7 +206,6 @@ let Feed = ({ }, [ feed, - dataUpdatedAt, error, onPressTryAgain, onPressRetryLoadMore, diff --git a/src/view/com/posts/FeedItem.tsx b/src/view/com/posts/FeedItem.tsx index 19f2b0e6c..dfb0cfcf6 100644 --- a/src/view/com/posts/FeedItem.tsx +++ b/src/view/com/posts/FeedItem.tsx @@ -40,7 +40,6 @@ export function FeedItem({ record, reason, moderation, - dataUpdatedAt, isThreadChild, isThreadLastChild, isThreadParent, @@ -49,12 +48,11 @@ export function FeedItem({ record: AppBskyFeedPost.Record reason: AppBskyFeedDefs.ReasonRepost | ReasonFeedSource | undefined moderation: PostModeration - dataUpdatedAt: number isThreadChild?: boolean isThreadLastChild?: boolean isThreadParent?: boolean }) { - const postShadowed = usePostShadow(post, dataUpdatedAt) + const postShadowed = usePostShadow(post) const richText = useMemo( () => new RichTextAPI({ diff --git a/src/view/com/posts/FeedSlice.tsx b/src/view/com/posts/FeedSlice.tsx index 06f11aa64..a3bacdc1e 100644 --- a/src/view/com/posts/FeedSlice.tsx +++ b/src/view/com/posts/FeedSlice.tsx @@ -11,12 +11,10 @@ import {makeProfileLink} from 'lib/routes/links' let FeedSlice = ({ slice, - dataUpdatedAt, ignoreFilterFor, moderationOpts, }: { slice: FeedPostSlice - dataUpdatedAt: number ignoreFilterFor?: string moderationOpts: ModerationOpts }): React.ReactNode => { @@ -44,7 +42,6 @@ let FeedSlice = ({ record={slice.items[0].record} reason={slice.items[0].reason} moderation={moderations[0]} - dataUpdatedAt={dataUpdatedAt} isThreadParent={isThreadParentAt(slice.items, 0)} isThreadChild={isThreadChildAt(slice.items, 0)} /> @@ -54,7 +51,6 @@ let FeedSlice = ({ record={slice.items[1].record} reason={slice.items[1].reason} moderation={moderations[1]} - dataUpdatedAt={dataUpdatedAt} isThreadParent={isThreadParentAt(slice.items, 1)} isThreadChild={isThreadChildAt(slice.items, 1)} /> @@ -65,7 +61,6 @@ let FeedSlice = ({ record={slice.items[last].record} reason={slice.items[last].reason} moderation={moderations[last]} - dataUpdatedAt={dataUpdatedAt} isThreadParent={isThreadParentAt(slice.items, last)} isThreadChild={isThreadChildAt(slice.items, last)} isThreadLastChild @@ -83,7 +78,6 @@ let FeedSlice = ({ record={slice.items[i].record} reason={slice.items[i].reason} moderation={moderations[i]} - dataUpdatedAt={dataUpdatedAt} isThreadParent={isThreadParentAt(slice.items, i)} isThreadChild={isThreadChildAt(slice.items, i)} isThreadLastChild={ diff --git a/src/view/com/profile/ProfileCard.tsx b/src/view/com/profile/ProfileCard.tsx index cd9855456..279e00d75 100644 --- a/src/view/com/profile/ProfileCard.tsx +++ b/src/view/com/profile/ProfileCard.tsx @@ -27,7 +27,6 @@ import {useSession} from '#/state/session' export function ProfileCard({ testID, profile: profileUnshadowed, - dataUpdatedAt, noBg, noBorder, followers, @@ -36,7 +35,6 @@ export function ProfileCard({ }: { testID?: string profile: AppBskyActorDefs.ProfileViewBasic - dataUpdatedAt: number noBg?: boolean noBorder?: boolean followers?: AppBskyActorDefs.ProfileView[] | undefined @@ -46,7 +44,7 @@ export function ProfileCard({ style?: StyleProp<ViewStyle> }) { const pal = usePalette('default') - const profile = useProfileShadow(profileUnshadowed, dataUpdatedAt) + const profile = useProfileShadow(profileUnshadowed) const moderationOpts = useModerationOpts() if (!moderationOpts) { return null @@ -202,13 +200,11 @@ export function ProfileCardWithFollowBtn({ noBg, noBorder, followers, - dataUpdatedAt, }: { profile: AppBskyActorDefs.ProfileViewBasic noBg?: boolean noBorder?: boolean followers?: AppBskyActorDefs.ProfileView[] | undefined - dataUpdatedAt: number }) { const {currentAccount} = useSession() const isMe = profile.did === currentAccount?.did @@ -224,7 +220,6 @@ export function ProfileCardWithFollowBtn({ ? undefined : profileShadow => <FollowButton profile={profileShadow} /> } - dataUpdatedAt={dataUpdatedAt} /> ) } diff --git a/src/view/com/profile/ProfileFollowers.tsx b/src/view/com/profile/ProfileFollowers.tsx index b9e8c0c48..45c1b3ad6 100644 --- a/src/view/com/profile/ProfileFollowers.tsx +++ b/src/view/com/profile/ProfileFollowers.tsx @@ -20,7 +20,6 @@ export function ProfileFollowers({name}: {name: string}) { } = useResolveDidQuery(name) const { data, - dataUpdatedAt, isFetching, isFetched, isFetchingNextPage, @@ -58,13 +57,9 @@ export function ProfileFollowers({name}: {name: string}) { const renderItem = React.useCallback( ({item}: {item: ActorDefs.ProfileViewBasic}) => ( - <ProfileCardWithFollowBtn - key={item.did} - profile={item} - dataUpdatedAt={dataUpdatedAt} - /> + <ProfileCardWithFollowBtn key={item.did} profile={item} /> ), - [dataUpdatedAt], + [], ) if (isFetchingDid || !isFetched) { diff --git a/src/view/com/profile/ProfileFollows.tsx b/src/view/com/profile/ProfileFollows.tsx index 77ae72da4..e1dce78a7 100644 --- a/src/view/com/profile/ProfileFollows.tsx +++ b/src/view/com/profile/ProfileFollows.tsx @@ -20,7 +20,6 @@ export function ProfileFollows({name}: {name: string}) { } = useResolveDidQuery(name) const { data, - dataUpdatedAt, isFetching, isFetched, isFetchingNextPage, @@ -58,13 +57,9 @@ export function ProfileFollows({name}: {name: string}) { const renderItem = React.useCallback( ({item}: {item: ActorDefs.ProfileViewBasic}) => ( - <ProfileCardWithFollowBtn - key={item.did} - profile={item} - dataUpdatedAt={dataUpdatedAt} - /> + <ProfileCardWithFollowBtn key={item.did} profile={item} /> ), - [dataUpdatedAt], + [], ) if (isFetchingDid || !isFetched) { diff --git a/src/view/com/profile/ProfileHeaderSuggestedFollows.tsx b/src/view/com/profile/ProfileHeaderSuggestedFollows.tsx index 6e060af49..f648c9801 100644 --- a/src/view/com/profile/ProfileHeaderSuggestedFollows.tsx +++ b/src/view/com/profile/ProfileHeaderSuggestedFollows.tsx @@ -65,7 +65,7 @@ export function ProfileHeaderSuggestedFollows({ } }, [active, animatedHeight, track]) - const {isLoading, data, dataUpdatedAt} = useSuggestedFollowsByActorQuery({ + const {isLoading, data} = useSuggestedFollowsByActorQuery({ did: actorDid, }) @@ -127,11 +127,7 @@ export function ProfileHeaderSuggestedFollows({ </> ) : data ? ( data.suggestions.map(profile => ( - <SuggestedFollow - key={profile.did} - profile={profile} - dataUpdatedAt={dataUpdatedAt} - /> + <SuggestedFollow key={profile.did} profile={profile} /> )) ) : ( <View /> @@ -196,15 +192,13 @@ function SuggestedFollowSkeleton() { function SuggestedFollow({ profile: profileUnshadowed, - dataUpdatedAt, }: { profile: AppBskyActorDefs.ProfileView - dataUpdatedAt: number }) { const {track} = useAnalytics() const pal = usePalette('default') const moderationOpts = useModerationOpts() - const profile = useProfileShadow(profileUnshadowed, dataUpdatedAt) + const profile = useProfileShadow(profileUnshadowed) const [queueFollow, queueUnfollow] = useProfileFollowMutationQueue(profile) const onPressFollow = React.useCallback(async () => { diff --git a/src/view/screens/ModerationBlockedAccounts.tsx b/src/view/screens/ModerationBlockedAccounts.tsx index 1c592dde8..c03275f5d 100644 --- a/src/view/screens/ModerationBlockedAccounts.tsx +++ b/src/view/screens/ModerationBlockedAccounts.tsx @@ -40,7 +40,6 @@ export const ModerationBlockedAccounts = withAuthRequired( const [isPTRing, setIsPTRing] = React.useState(false) const { data, - dataUpdatedAt, isFetching, isError, error, @@ -95,7 +94,6 @@ export const ModerationBlockedAccounts = withAuthRequired( testID={`blockedAccount-${index}`} key={item.did} profile={item} - dataUpdatedAt={dataUpdatedAt} /> ) return ( diff --git a/src/view/screens/ModerationMutedAccounts.tsx b/src/view/screens/ModerationMutedAccounts.tsx index 36bcbf1fa..c0ff17eb4 100644 --- a/src/view/screens/ModerationMutedAccounts.tsx +++ b/src/view/screens/ModerationMutedAccounts.tsx @@ -40,7 +40,6 @@ export const ModerationMutedAccounts = withAuthRequired( const [isPTRing, setIsPTRing] = React.useState(false) const { data, - dataUpdatedAt, isFetching, isError, error, @@ -95,7 +94,6 @@ export const ModerationMutedAccounts = withAuthRequired( testID={`mutedAccount-${index}`} key={item.did} profile={item} - dataUpdatedAt={dataUpdatedAt} /> ) return ( diff --git a/src/view/screens/Profile.tsx b/src/view/screens/Profile.tsx index 5411bc044..7b25e012c 100644 --- a/src/view/screens/Profile.tsx +++ b/src/view/screens/Profile.tsx @@ -57,7 +57,6 @@ export const ProfileScreen = withAuthRequired( } = useResolveDidQuery(name) const { data: profile, - dataUpdatedAt, error: profileError, refetch: refetchProfile, isFetching: isFetchingProfile, @@ -100,7 +99,6 @@ export const ProfileScreen = withAuthRequired( return ( <ProfileScreenLoaded profile={profile} - dataUpdatedAt={dataUpdatedAt} moderationOpts={moderationOpts} hideBackButton={!!route.params.hideBackButton} /> @@ -125,16 +123,14 @@ export const ProfileScreen = withAuthRequired( function ProfileScreenLoaded({ profile: profileUnshadowed, - dataUpdatedAt, moderationOpts, hideBackButton, }: { profile: AppBskyActorDefs.ProfileViewDetailed - dataUpdatedAt: number moderationOpts: ModerationOpts hideBackButton: boolean }) { - const profile = useProfileShadow(profileUnshadowed, dataUpdatedAt) + const profile = useProfileShadow(profileUnshadowed) const {currentAccount} = useSession() const setMinimalShellMode = useSetMinimalShellMode() const {openComposer} = useComposerControls() diff --git a/src/view/screens/Search/Search.tsx b/src/view/screens/Search/Search.tsx index 0788dd79d..9cd7ee370 100644 --- a/src/view/screens/Search/Search.tsx +++ b/src/view/screens/Search/Search.tsx @@ -111,7 +111,6 @@ function EmptyState({message, error}: {message: string; error?: string}) { function SearchScreenSuggestedFollows() { const pal = usePalette('default') const {currentAccount} = useSession() - const [dataUpdatedAt, setDataUpdatedAt] = React.useState(0) const [suggestions, setSuggestions] = React.useState< AppBskyActorDefs.ProfileViewBasic[] >([]) @@ -141,7 +140,6 @@ function SearchScreenSuggestedFollows() { ) setSuggestions(Array.from(friendsOfFriends.values())) - setDataUpdatedAt(Date.now()) } try { @@ -151,23 +149,12 @@ function SearchScreenSuggestedFollows() { error: e, }) } - }, [ - currentAccount, - setSuggestions, - setDataUpdatedAt, - getSuggestedFollowsByActor, - ]) + }, [currentAccount, setSuggestions, getSuggestedFollowsByActor]) return suggestions.length ? ( <FlatList data={suggestions} - renderItem={({item}) => ( - <ProfileCardWithFollowBtn - profile={item} - noBg - dataUpdatedAt={dataUpdatedAt} - /> - )} + renderItem={({item}) => <ProfileCardWithFollowBtn profile={item} noBg />} keyExtractor={item => item.did} // @ts-ignore web only -prf desktopFixedHeight @@ -205,7 +192,6 @@ function SearchScreenPostResults({query}: {query: string}) { fetchNextPage, isFetchingNextPage, hasNextPage, - dataUpdatedAt, } = useSearchPostsQuery({query}) const onPullToRefresh = React.useCallback(async () => { @@ -258,7 +244,7 @@ function SearchScreenPostResults({query}: {query: string}) { data={items} renderItem={({item}) => { if (item.type === 'post') { - return <Post post={item.post} dataUpdatedAt={dataUpdatedAt} /> + return <Post post={item.post} /> } else { return <Loader /> } @@ -291,7 +277,6 @@ function SearchScreenPostResults({query}: {query: string}) { function SearchScreenUserResults({query}: {query: string}) { const {_} = useLingui() const [isFetched, setIsFetched] = React.useState(false) - const [dataUpdatedAt, setDataUpdatedAt] = React.useState(0) const [results, setResults] = React.useState< AppBskyActorDefs.ProfileViewBasic[] >([]) @@ -302,7 +287,6 @@ function SearchScreenUserResults({query}: {query: string}) { const searchResults = await search({query, limit: 30}) if (searchResults) { - setDataUpdatedAt(Date.now()) setResults(results) setIsFetched(true) } @@ -314,7 +298,7 @@ function SearchScreenUserResults({query}: {query: string}) { setResults([]) setIsFetched(false) } - }, [query, setDataUpdatedAt, search, results]) + }, [query, search, results]) return isFetched ? ( <> @@ -322,11 +306,7 @@ function SearchScreenUserResults({query}: {query: string}) { <FlatList data={results} renderItem={({item}) => ( - <ProfileCardWithFollowBtn - profile={item} - noBg - dataUpdatedAt={dataUpdatedAt} - /> + <ProfileCardWithFollowBtn profile={item} noBg /> )} keyExtractor={item => item.did} // @ts-ignore web only -prf |