Fix profile icon on custom feeds (#11408)

Co-authored-by: DS Boyce <260543580+ds-boyce@users.noreply.github.com>
This commit is contained in:
Samuel Newman
2026-08-07 02:37:21 +03:00
committed by GitHub
parent 1e6725c0a1
commit d727be8c1a
7 changed files with 32 additions and 32 deletions
+6 -6
View File
@@ -67,13 +67,14 @@ import {NotificationsScreen} from '#/view/screens/Notifications'
import {PostThreadScreen} from '#/view/screens/PostThread' import {PostThreadScreen} from '#/view/screens/PostThread'
import {PrivacyPolicyScreen} from '#/view/screens/PrivacyPolicy' import {PrivacyPolicyScreen} from '#/view/screens/PrivacyPolicy'
import {ProfileScreen} from '#/view/screens/Profile' import {ProfileScreen} from '#/view/screens/Profile'
import {ProfileFeedLikedByScreen} from '#/view/screens/ProfileFeedLikedBy'
import {StorybookScreen} from '#/view/screens/Storybook' import {StorybookScreen} from '#/view/screens/Storybook'
import {SupportScreen} from '#/view/screens/Support' import {SupportScreen} from '#/view/screens/Support'
import {TermsOfServiceScreen} from '#/view/screens/TermsOfService' import {TermsOfServiceScreen} from '#/view/screens/TermsOfService'
import {BottomBar} from '#/view/shell/bottom-bar/BottomBar' import {BottomBar} from '#/view/shell/bottom-bar/BottomBar'
import {createNativeStackNavigatorWithAuth} from '#/view/shell/createNativeStackNavigatorWithAuth' import {createNativeStackNavigatorWithAuth} from '#/view/shell/createNativeStackNavigatorWithAuth'
import {BookmarksScreen} from '#/screens/Bookmarks' import {BookmarksScreen} from '#/screens/Bookmarks'
import {CustomFeedScreen} from '#/screens/CustomFeed'
import {CustomFeedLikedByScreen} from '#/screens/CustomFeed/CustomFeedLikedBy'
import {SharedPreferencesTesterScreen} from '#/screens/E2E/SharedPreferencesTesterScreen' import {SharedPreferencesTesterScreen} from '#/screens/E2E/SharedPreferencesTesterScreen'
import {FindContactsFlowScreen} from '#/screens/FindContactsFlowScreen' import {FindContactsFlowScreen} from '#/screens/FindContactsFlowScreen'
import HashtagScreen from '#/screens/Hashtag' import HashtagScreen from '#/screens/Hashtag'
@@ -92,7 +93,6 @@ import {PostLikedByScreen} from '#/screens/Post/PostLikedBy'
import {PostQuotesScreen} from '#/screens/Post/PostQuotes' import {PostQuotesScreen} from '#/screens/Post/PostQuotes'
import {PostRepostedByScreen} from '#/screens/Post/PostRepostedBy' import {PostRepostedByScreen} from '#/screens/Post/PostRepostedBy'
import {ProfileKnownFollowersScreen} from '#/screens/Profile/KnownFollowers' import {ProfileKnownFollowersScreen} from '#/screens/Profile/KnownFollowers'
import {ProfileFeedScreen} from '#/screens/Profile/ProfileFeed'
import {ProfileFollowersScreen} from '#/screens/Profile/ProfileFollowers' import {ProfileFollowersScreen} from '#/screens/Profile/ProfileFollowers'
import {ProfileFollowsScreen} from '#/screens/Profile/ProfileFollows' import {ProfileFollowsScreen} from '#/screens/Profile/ProfileFollows'
import {ProfileLabelerLikedByScreen} from '#/screens/Profile/ProfileLabelerLikedBy' import {ProfileLabelerLikedByScreen} from '#/screens/Profile/ProfileLabelerLikedBy'
@@ -288,13 +288,13 @@ function commonScreens(Stack: typeof Flat, unreadCountLabel?: string) {
})} })}
/> />
<Stack.Screen <Stack.Screen
name="ProfileFeed" name="CustomFeed"
getComponent={() => ProfileFeedScreen} getComponent={() => CustomFeedScreen}
options={{title: title(msg`Feed`)}} options={{title: title(msg`Feed`)}}
/> />
<Stack.Screen <Stack.Screen
name="ProfileFeedLikedBy" name="CustomFeedLikedBy"
getComponent={() => ProfileFeedLikedByScreen} getComponent={() => CustomFeedLikedByScreen}
options={{title: title(msg`Liked by`)}} options={{title: title(msg`Liked by`)}}
/> />
<Stack.Screen <Stack.Screen
+2 -2
View File
@@ -39,12 +39,12 @@ export type CommonNavigatorParams = {
PostLikedBy: {name: string; rkey: string} PostLikedBy: {name: string; rkey: string}
PostRepostedBy: {name: string; rkey: string} PostRepostedBy: {name: string; rkey: string}
PostQuotes: {name: string; rkey: string} PostQuotes: {name: string; rkey: string}
ProfileFeed: { CustomFeed: {
name: string name: string
rkey: string rkey: string
feedCacheKey?: 'discover' | 'explore' | undefined feedCacheKey?: 'discover' | 'explore' | undefined
} }
ProfileFeedLikedBy: {name: string; rkey: string} CustomFeedLikedBy: {name: string; rkey: string}
ProfileLabelerLikedBy: {name: string} ProfileLabelerLikedBy: {name: string}
Debug: undefined Debug: undefined
DebugMod: undefined DebugMod: undefined
+2 -2
View File
@@ -33,8 +33,8 @@ export const router = new Router<AllNavigatableRoutes>({
PostLikedBy: '/profile/:name/post/:rkey/liked-by', PostLikedBy: '/profile/:name/post/:rkey/liked-by',
PostRepostedBy: '/profile/:name/post/:rkey/reposted-by', PostRepostedBy: '/profile/:name/post/:rkey/reposted-by',
PostQuotes: '/profile/:name/post/:rkey/quotes', PostQuotes: '/profile/:name/post/:rkey/quotes',
ProfileFeed: '/profile/:name/feed/:rkey', CustomFeed: '/profile/:name/feed/:rkey',
ProfileFeedLikedBy: '/profile/:name/feed/:rkey/liked-by', CustomFeedLikedBy: '/profile/:name/feed/:rkey/liked-by',
ProfileLabelerLikedBy: '/profile/:name/labeler/liked-by', ProfileLabelerLikedBy: '/profile/:name/labeler/liked-by',
// debug // debug
Debug: '/sys/debug', Debug: '/sys/debug',
@@ -8,13 +8,13 @@ import {makeRecordUri} from '#/lib/strings/url-helpers'
import {PostLikedBy as PostLikedByComponent} from '#/view/com/post-thread/PostLikedBy' import {PostLikedBy as PostLikedByComponent} from '#/view/com/post-thread/PostLikedBy'
import * as Layout from '#/components/Layout' import * as Layout from '#/components/Layout'
type Props = NativeStackScreenProps<CommonNavigatorParams, 'ProfileFeedLikedBy'> type Props = NativeStackScreenProps<CommonNavigatorParams, 'CustomFeedLikedBy'>
export const ProfileFeedLikedByScreen = ({route}: Props) => { export const CustomFeedLikedByScreen = ({route}: Props) => {
const {name, rkey} = route.params const {name, rkey} = route.params
const uri = makeRecordUri(name, 'app.bsky.feed.generator', rkey) const uri = makeRecordUri(name, 'app.bsky.feed.generator', rkey)
return ( return (
<Layout.Screen testID="postLikedByScreen"> <Layout.Screen testID="customFeedLikedByScreen">
<Layout.Header.Outer> <Layout.Header.Outer>
<Layout.Header.BackButton /> <Layout.Header.BackButton />
<Layout.Header.Content> <Layout.Header.Content>
@@ -52,7 +52,7 @@ import {Text} from '#/components/Typography'
import {useAnalytics} from '#/analytics' import {useAnalytics} from '#/analytics'
import {IS_WEB} from '#/env' import {IS_WEB} from '#/env'
export function ProfileFeedHeaderSkeleton() { export function CustomFeedHeaderSkeleton() {
const t = useTheme() const t = useTheme()
return ( return (
@@ -82,7 +82,7 @@ export function ProfileFeedHeaderSkeleton() {
) )
} }
export function ProfileFeedHeader({ export function CustomFeedHeader({
info, info,
isTrending, isTrending,
}: { }: {
@@ -34,18 +34,18 @@ import {FAB} from '#/view/com/util/fab/FAB'
import {type ListRef} from '#/view/com/util/List' import {type ListRef} from '#/view/com/util/List'
import {LoadLatestBtn} from '#/view/com/util/load-latest/LoadLatestBtn' import {LoadLatestBtn} from '#/view/com/util/load-latest/LoadLatestBtn'
import {PostFeedLoadingPlaceholder} from '#/view/com/util/LoadingPlaceholder' import {PostFeedLoadingPlaceholder} from '#/view/com/util/LoadingPlaceholder'
import {
ProfileFeedHeader,
ProfileFeedHeaderSkeleton,
} from '#/screens/Profile/components/ProfileFeedHeader'
import {useTheme} from '#/alf' import {useTheme} from '#/alf'
import {EditBig_Stroke2_Corner2_Rounded as EditBigIcon} from '#/components/icons/EditBig' import {EditBig_Stroke2_Corner2_Rounded as EditBigIcon} from '#/components/icons/EditBig'
import {HashtagWide_Stroke1_Corner0_Rounded as HashtagWideIcon} from '#/components/icons/Hashtag' import {HashtagWide_Stroke1_Corner0_Rounded as HashtagWideIcon} from '#/components/icons/Hashtag'
import * as Layout from '#/components/Layout' import * as Layout from '#/components/Layout'
import {IS_NATIVE} from '#/env' import {IS_NATIVE} from '#/env'
import {
CustomFeedHeader,
CustomFeedHeaderSkeleton,
} from './components/CustomFeedHeader'
type Props = NativeStackScreenProps<CommonNavigatorParams, 'ProfileFeed'> type Props = NativeStackScreenProps<CommonNavigatorParams, 'CustomFeed'>
export function ProfileFeedScreen(props: Props) { export function CustomFeedScreen(props: Props) {
const {rkey, name: handleOrDid} = props.route.params const {rkey, name: handleOrDid} = props.route.params
const feedParams: FeedParams | undefined = props.route.params.feedCacheKey const feedParams: FeedParams | undefined = props.route.params.feedCacheKey
@@ -66,7 +66,7 @@ export function ProfileFeedScreen(props: Props) {
if (error && !isRefetching) { if (error && !isRefetching) {
return ( return (
<Layout.Screen testID="profileFeedScreenError"> <Layout.Screen testID="customFeedScreenError">
<ErrorScreen <ErrorScreen
showHeader showHeader
title={l`Could not load feed`} title={l`Could not load feed`}
@@ -78,15 +78,15 @@ export function ProfileFeedScreen(props: Props) {
} }
return resolvedUri ? ( return resolvedUri ? (
<Layout.Screen testID="profileFeedScreen"> <Layout.Screen testID="customFeedScreen">
<ProfileFeedScreenIntermediate <CustomFeedScreenIntermediate
feedUri={resolvedUri.uri} feedUri={resolvedUri.uri}
feedParams={feedParams} feedParams={feedParams}
/> />
</Layout.Screen> </Layout.Screen>
) : ( ) : (
<Layout.Screen testID="profileFeedScreen"> <Layout.Screen testID="customFeedScreen">
<ProfileFeedHeaderSkeleton /> <CustomFeedHeaderSkeleton />
<Layout.Content> <Layout.Content>
<PostFeedLoadingPlaceholder /> <PostFeedLoadingPlaceholder />
</Layout.Content> </Layout.Content>
@@ -94,7 +94,7 @@ export function ProfileFeedScreen(props: Props) {
) )
} }
function ProfileFeedScreenIntermediate({ function CustomFeedScreenIntermediate({
feedUri, feedUri,
feedParams, feedParams,
}: { }: {
@@ -107,14 +107,14 @@ function ProfileFeedScreenIntermediate({
if (!preferences || !info) { if (!preferences || !info) {
return ( return (
<Layout.Content> <Layout.Content>
<ProfileFeedHeaderSkeleton /> <CustomFeedHeaderSkeleton />
<PostFeedLoadingPlaceholder /> <PostFeedLoadingPlaceholder />
</Layout.Content> </Layout.Content>
) )
} }
return ( return (
<ProfileFeedScreenInner <CustomFeedScreenInner
preferences={preferences} preferences={preferences}
feedInfo={info as FeedSourceFeedInfo} feedInfo={info as FeedSourceFeedInfo}
feedParams={feedParams} feedParams={feedParams}
@@ -122,7 +122,7 @@ function ProfileFeedScreenIntermediate({
) )
} }
export function ProfileFeedScreenInner({ export function CustomFeedScreenInner({
feedInfo, feedInfo,
feedParams, feedParams,
}: { }: {
@@ -186,7 +186,7 @@ export function ProfileFeedScreenInner({
return ( return (
<> <>
<ProfileFeedHeader info={feedInfo} isTrending={isTrending} /> <CustomFeedHeader info={feedInfo} isTrending={isTrending} />
<FeedFeedbackProvider value={feedFeedback}> <FeedFeedbackProvider value={feedFeedback}>
<PostFeed <PostFeed
enabled enabled
+1 -1
View File
@@ -193,7 +193,7 @@ export function FeedSourceCardLoaded({
) )
} }
to={{ to={{
screen: feed.type === 'feed' ? 'ProfileFeed' : 'ProfileList', screen: feed.type === 'feed' ? 'CustomFeed' : 'ProfileList',
params: {name: feed.creatorDid, rkey: new AtUri(feed.uri).rkey}, params: {name: feed.creatorDid, rkey: new AtUri(feed.uri).rkey},
}} }}
style={[ style={[