commit bd8886f

default  ·  2023-05-15 09:23:36 +0000 UTC
parent d3c1b31
Don't repeat accounts when searching.
1 files changed,  +10, -0
+10, -0
 1@@ -10,6 +10,7 @@
 2 #include "xs_io.h"
 3 #include "xs_time.h"
 4 #include "xs_glob.h"
 5+#include "xs_set.h"
 6 
 7 #include "snac.h"
 8 
 9@@ -966,6 +967,9 @@ int mastoapi_get_handler(const xs_dict *req, const char *q_path,
10                     xs *wing = following_list(&snac1);
11                     xs *wers = follower_list(&snac1);
12                     xs_list *p;
13+                    xs_set seen;
14+
15+                    xs_set_init(&seen);
16 
17                     xs_list *lsts[] = { wing, wers, NULL };
18                     int n;
19@@ -973,6 +977,10 @@ int mastoapi_get_handler(const xs_dict *req, const char *q_path,
20                         xs_str *v;
21 
22                         while (xs_list_iter(&p, &v)) {
23+                            /* already seen? skip */
24+                            if (xs_set_add(&seen, v) == 0)
25+                                continue;
26+
27                             xs *actor = NULL;
28 
29                             if (valid_status(object_get(v, &actor))) {
30@@ -986,6 +994,8 @@ int mastoapi_get_handler(const xs_dict *req, const char *q_path,
31                             }
32                         }
33                     }
34+
35+                    xs_set_free(&seen);
36                 }
37             }
38             else