Browse Source

Update user page exclusion function

arvid-e 1 month ago
parent
commit
4aaefb82f8

+ 5 - 15
apps/app/src/features/search/utils/disable-user-pages.ts

@@ -1,18 +1,8 @@
-export function excludeUserPagesFromQuery(
-  query: string,
-  userPagesDisabled: boolean,
-): string {
-  if (!userPagesDisabled) {
-    return query;
-  }
+import type { QueryTerms } from '~/server/interfaces/search';
 
-  const cleanQuery = query.replace(/prefix:\/user/g, '').trim();
+export function applyUserExclusion(terms: QueryTerms): void {
+  terms.prefix = terms.prefix.filter((p) => !p.startsWith('/user'));
+  terms.not_prefix = terms.not_prefix.filter((p) => !p.startsWith('/user'));
 
-  if (!cleanQuery.includes('-prefix:/user')) {
-    const queryWithUserPrefix = `${cleanQuery} -prefix:/user`;
-
-    return queryWithUserPrefix;
-  }
-
-  return cleanQuery;
+  terms.not_prefix.push('/user');
 }

+ 4 - 0
apps/app/src/server/service/search.ts

@@ -341,6 +341,10 @@ class SearchService implements SearchQueryParser, SearchResolver {
 
     const terms = this.parseQueryString(queryString);
 
+    if (disableUserPages) {
+      excludeUserPagesFromQuery(terms);
+    }
+
     if (nqName == null) {
       return { queryString, terms };
     }