diff --git a/src/components/search/SearchView.tsx b/src/components/search/SearchView.tsx index a74e985..ed7e1a9 100644 --- a/src/components/search/SearchView.tsx +++ b/src/components/search/SearchView.tsx @@ -151,7 +151,7 @@ export function SearchView() { }, []); const { loggedIn, follows } = useUserStore(); - const { mutedPubkeys } = useMuteStore(); + const { mutedPubkeys, contentMatchesMutedKeyword } = useMuteStore(); const { dismissedPubkeys, dismiss } = useDismissedSuggestionsStore(); const visibleSuggestions = suggestions.filter( @@ -265,7 +265,15 @@ export function SearchView() { if (e.key === "Enter") handleSearch(); }; - const totalResults = noteResults.length + userResults.length + articleResults.length; + // Respect the mute list in search results (issue #7): hide notes/articles + // from muted pubkeys or matching a muted keyword, and people who are muted. + const isMutedEvent = (e: NDKEvent) => + mutedPubkeys.includes(e.pubkey) || contentMatchesMutedKeyword(e.content); + const filteredNoteResults = noteResults.filter((e) => !isMutedEvent(e)); + const filteredArticleResults = articleResults.filter((e) => !isMutedEvent(e)); + const filteredUserResults = userResults.filter((u) => !mutedPubkeys.includes(u.pubkey)); + + const totalResults = filteredNoteResults.length + filteredUserResults.length + filteredArticleResults.length; return (
@@ -297,7 +305,7 @@ export function SearchView() { {searched && (
{(["notes", "articles", "people"] as const).map((tab) => { - const count = tab === "notes" ? noteResults.length : tab === "articles" ? articleResults.length : userResults.length; + const count = tab === "notes" ? filteredNoteResults.length : tab === "articles" ? filteredArticleResults.length : filteredUserResults.length; return (