Fix hashtag author filter failing for DIDs (#10772)

Co-authored-by: Claude <noreply@anthropic.com>
This commit is contained in:
surfdude29
2026-06-30 21:27:13 +01:00
committed by GitHub
parent 9df4add435
commit 251605919f
2 changed files with 20 additions and 13 deletions
+7 -7
View File
@@ -121,7 +121,9 @@ export default function HashtagScreen({
<Layout.Header.TitleText>{headerTitle}</Layout.Header.TitleText>
{author && (
<Layout.Header.SubtitleText>
{_(msg`From @${sanitizedAuthor}`)}
{author.startsWith('did:')
? _(msg`From ${sanitizedAuthor}`)
: _(msg`From @${sanitizedAuthor}`)}
</Layout.Header.SubtitleText>
)}
</Layout.Header.Content>
@@ -172,11 +174,9 @@ function HashtagScreenTab({
const isCashtag = fullTag.startsWith('$')
const queryParam = useMemo(() => {
// Cashtags need # prefix for search: "#$BTC" or "#$BTC from:author"
const searchTag = isCashtag ? `#${fullTag}` : fullTag
if (!author) return searchTag
return `${searchTag} from:${author}`
}, [fullTag, author, isCashtag])
// Cashtags need # prefix for search: "#$BTC"
return isCashtag ? `#${fullTag}` : fullTag
}, [fullTag, isCashtag])
const {
data,
@@ -188,7 +188,7 @@ function HashtagScreenTab({
refetch,
fetchNextPage,
hasNextPage,
} = useSearchPostsQuery({query: queryParam, sort, enabled: active})
} = useSearchPostsQuery({query: queryParam, sort, enabled: active, author})
const posts = useMemo(() => {
return data?.pages.flatMap(page => page.posts) || []
+13 -6
View File
@@ -22,29 +22,35 @@ import {
} from './util'
const searchPostsQueryKeyRoot = 'search-posts'
const searchPostsQueryKey = ({query, sort}: {query: string; sort?: string}) => [
searchPostsQueryKeyRoot,
const searchPostsQueryKey = ({
query,
sort,
]
author,
}: {
query: string
sort?: string
author?: string
}) => [searchPostsQueryKeyRoot, query, sort, author]
export function useSearchPostsQuery({
query,
sort,
enabled,
author,
}: {
query: string
sort?: 'top' | 'latest'
enabled?: boolean
author?: string
}) {
const agent = useAgent()
const moderationOpts = useModerationOpts()
const selectArgs = useMemo(
() => ({
isSearchingSpecificUser: /from:(\w+)/.test(query),
isSearchingSpecificUser: !!author || /from:(\w+)/.test(query),
moderationOpts,
}),
[query, moderationOpts],
[query, author, moderationOpts],
)
const lastRun = useRef<{
data: InfiniteData<AppBskyFeedSearchPosts.OutputSchema>
@@ -59,13 +65,14 @@ export function useSearchPostsQuery({
QueryKey,
string | undefined
>({
queryKey: searchPostsQueryKey({query, sort}),
queryKey: searchPostsQueryKey({query, sort, author}),
queryFn: async ({pageParam}) => {
const res = await agent.app.bsky.feed.searchPosts({
q: query,
limit: 25,
cursor: pageParam,
sort,
author,
})
return res.data
},