Quellcode durchsuchen

Minor multi-user timeline optimization

Zed vor 6 Jahren
Ursprung
Commit
feb939d918
1 geänderte Dateien mit 5 neuen und 6 gelöschten Zeilen
  1. 5 6
      src/query.nim

+ 5 - 6
src/query.nim

@@ -48,7 +48,7 @@ proc getReplyQuery*(name: string): Query =
     fromUser: @[name]
   )
 
-proc genQueryParam*(query: Query): string =
+proc genQueryParam*(query: Query; rewriteReplies=true): string =
   var filters: seq[string]
   var param: string
   let userSearch = query.fromUser.len > 0
@@ -56,13 +56,9 @@ proc genQueryParam*(query: Query): string =
   if query.kind == users:
     return query.text
 
-  # improve no-replies result only when searching for less than 7
-  # otherwise multi-timeline limit goes down to 8 users
-  let rewriteReplies = "replies" in query.excludes and query.fromUser.len < 7
-
   for i, user in query.fromUser:
     if rewriteReplies:
-      param &= &"(from:{user} AND (to:{user} OR -filter:replies)) "
+      param &= &"(from:{user}(to:{user} OR -filter:replies)) "
     else:
       param &= &"from:{user} "
 
@@ -87,6 +83,9 @@ proc genQueryParam*(query: Query): string =
   if query.text.len > 0:
     result &= " " & query.text
 
+  if userSearch and rewriteReplies and result.len >= 500:
+    return genQueryParam(query, rewriteReplies=false)
+
 proc genQueryUrl*(query: Query): string =
   if query.kind notin {tweets, users}: return